Ответ
ConfigMap — это объект Kubernetes, предназначенный для хранения нефункциональных конфигурационных данных (например, переменных окружения, файлов конфигурации) в формате пар «ключ-значение» или целых файлов. Его основная цель — отделить конфигурацию от образа контейнера, что позволяет изменять настройки приложения без пересборки Docker-образов и перезапуска Pod'ов.
Пример создания ConfigMap из файла:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
# Простые ключ-значение
LOG_LEVEL: "INFO"
MAX_CONNECTIONS: "100"
# Внедрение целого файла конфигурации
nginx.conf: |
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend:8080;
}
}
Способы использования ConfigMap в Pod:
- Как переменные окружения:
env: - name: LOG_LEVEL valueFrom: configMapKeyRef: name: app-config key: LOG_LEVEL - Как смонтированный том (volume):
volumes: - name: config-volume configMap: name: app-config containers: ... volumeMounts: - name: config-volume mountPath: /etc/config
Важное ограничение: Изменения в ConfigMap не применяются автоматически к уже работающим Pod'ам. Для обновления конфигурации требуется либо перезапуск Pod'а (например, через rollout deployment), либо использование sidecar-контейнеров (например, stakater/reloader), которые отслеживают изменения и инициируют перезапуск.