С какими ресурсами Kubernetes (CRD, ConfigMaps, Secrets) вы работали на последнем проекте?

«С какими ресурсами Kubernetes (CRD, ConfigMaps, Secrets) вы работали на последнем проекте?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Вопрос о "таблицах" в Kubernetes некорректен, так как Kubernetes — это оркестратор контейнеров, а не СУБД. Он оперирует ресурсами (resources), а не таблицами.

На последнем проекте мы активно использовали следующие типы ресурсов Kubernetes для конфигурации и управления приложениями:

  • ConfigMaps и Secrets: для хранения конфигурации и чувствительных данных (пароли, токены) отдельно от образов приложений.
  • Deployments/StatefulSets: для декларативного описания и развертывания рабочих нагрузок (пода).
  • Services и Ingress: для обеспечения сетевого доступа к приложениям.
  • PersistentVolumeClaims (PVC): для динамического предоставления постоянного хранилища (например, из облачного блочного хранилища).
  • Custom Resource Definitions (CRD): для расширения API Kubernetes под нужды проекта (например, для операторов).

Пример манифеста для ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  application.properties: |
    server.port=8080
    logging.level.root=INFO

Использование этих ресурсов позволяет соблюдать принцип Immutable Infrastructure и практики GitOps, храня все конфигурации в репозитории.