Назад к вопросам
Junior
161
questionbank

Что такое ConfigMap в Kubernetes?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

ConfigMap — это объект API, используемый для хранения неконфиденциальных данных в парах ключ-значение в Kubernetes. Он позволяет отделить конфигурацию приложения от его образа контейнера, делая приложения более переносимыми и упрощая управление конфигурацией.

Data в ConfigMap можно использовать следующими способами:

  • В переменных окружения контейнера.
  • Как аргументы командной строки для контейнера.
  • Как файлы в томе, монтируемом в Pod.

Пример создания ConfigMap из файла:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  my-config-file.properties: |
    database.url=jdbc:mysql://localhost:3306/mydatabase
    database.username=mydbuser
    database.password=secret

Использование ConfigMap в Pod через переменные окружения:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app
    image: my-app-image
    env:
    - name: DATABASE_URL
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: database.url
    - name: DATABASE_USERNAME
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: database.username

Использование ConfigMap в Pod через монтирование как файла:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app
    image: my-app-image
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-config

Ключевые особенности:

  • Используется для неконфиденциальных данных. Для конфиденциальных данных следует использовать Secrets.
  • Позволяет динамически обновлять конфигурацию без пересборки образа.
  • Данные в ConfigMap ограничены размером (по умолчанию 1 МБ).
  • Некоторые изменения в ConfigMap могут требовать перезапуска Pod для их применения, в зависимости от способа использования (переменные окружения требуют перезапуска, монтирование как файл может быть динамическим).