ConfigMap

Тема дорожной карты · Kubernetes

ConfigMap — объект Kubernetes API в группе v1, хранящий нечувствительные конфигурационные данные в виде пар ключ-значение и позволяющий отделить конфигурацию приложения от образов контейнеров для упрощения окружение-специфичных развёртываний. ConfigMap можно потреблять в Pod'ах как переменные окружения через env.valueFrom.configMapKeyRef, монтировать в файловую систему контейнера через spec.volumes[].configMap или использовать в envFrom для массового импорта всех ключей как переменных окружения. Создать ConfigMap просто: kubectl create configmap app-config --from-file=config.properties или применив декларативный YAML-манифест командой kubectl apply -f configmap.yaml; обновления примонтированного ConfigMap отражаются в запущенных Pod'ах после небольшой задержки распространения без перезапуска Pod'а. ConfigMap — фундаментальный примитив Kubernetes, широко используемый Helm-чартами (через интерполяцию .Values в шаблоны ConfigMap), патчами Kustomize и GitOps-конвейерами для управления настройками приложений в разных окружениях.

Как это работает

ConfigMap управляется в Kubernetes через ConfigMap и Secret ресурсы. ConfigMaps держат не-чувствительную конфигурацию (feature flags, URL, sampling rates) и могут монтироваться как файлы или инжектироваться как переменные окружения. Secrets держат чувствительные данные (пароли, токены, TLS-сертификаты) и хранятся base64-encoded в etcd (с настраиваемым encryption-at-rest). Pods ссылаются на них по имени в своём spec.

Когда применять

Используйте ConfigMap для отделения конфигурации от образов контейнеров — один образ, разные среды через разные ConfigMaps. Используйте Secrets для всего чувствительного, но относитесь к base64 как к кодированию, не шифрованию; ротируйте через External Secrets Operator + Vault или SOPS для git-friendly secret management. Не храните реальные секреты в ConfigMaps "потому что проще" — RBAC обычно отличается между ними.

Типичные ошибки

Config/Secret-ловушки: коммитят реальные Secrets в git (используйте sealed-secrets, SOPS или External Secrets Operator); reload config требует перезапуск pod, если приложение не следит за изменениями файлов; лимит ConfigMap — 1 MiB, переполнение fail тихо. Аудитируйте, кто может kubectl get secrets регулярно; во многих кластерах ответ — все, что значит etcd dump = leak credentials.

Связанные понятия

Полезные ресурсы