Как передать конфигурацию и секреты приложению в Kubernetes?
- Безопасны ли Secret в Kubernetes?
- Чем ConfigMap отличается от Secret?
ConfigMap — несекретные настройки, Secret — пароли, токены, сертификаты; оба подключаются как переменные окружения или файлы в томе. Secret по умолчанию лишь закодирован в base64, а не зашифрован: нужно включить шифрование etcd, ограничить RBAC и не хранить секреты в Git в открытом виде — использовать Vault, External Secrets, Sealed Secrets или SOPS.
- Переменные окружения читаются при старте; файлы в томе обновляются, но приложение должно их перечитать
- Изменение ConfigMap не перезапускает поды — часто добавляют хеш конфига в аннотацию шаблона
- Переменные окружения легко утекают в логи и дампы — файлы безопаснее
А ещё Принцип 12 factor: конфигурация в окружении, образ один на все среды
Подробно
Подключение:
env:
- name: DB_PASSWORD
valueFrom: { secretKeyRef: { name: orders-db, key: password } }
volumeMounts:
- { name: config, mountPath: /etc/orders }
volumes:
- { name: config, configMap: { name: orders-config } }
Защита секретов:
- шифрование etcd на диске (EncryptionConfiguration или средства облака);
- RBAC: читать Secret может только сервисный аккаунт приложения;
- в Git — только зашифрованные (Sealed Secrets, SOPS) или ссылки на внешнее хранилище (External Secrets Operator + Vault или облачный менеджер секретов);
- ротация и короткоживущие учётные данные (динамические секреты Vault).
Обновление конфигурации. Deployment не замечает изменения ConfigMap. Варианты: аннотация с хешем конфигурации в шаблоне пода (Helm checksum/config), перезапуск kubectl rollout restart, перечитывание файла приложением.
Что хотят услышать
- ConfigMap против Secret и способы подключения.
- Base64 — не шифрование, способы защиты.
- Обновление конфигурации без ручных перезапусков.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Secret в Kubernetes по умолчанию зашифрован в etcd, поэтому дополнительная защита не нужна
- ✗Секреты можно хранить в Git в открытом виде
- ✓ConfigMap — настройки, Secret — секреты; Secret лишь в base64, нужно шифрование etcd
- ✗ConfigMap подключается только как переменные окружения
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.