Где хранить логин/пароль в Kubernetes

«Где хранить логин/пароль в Kubernetes» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kubernetes для хранения чувствительных данных, таких как пароли БД или токены API, я использую Secrets. Это нативный ресурс, который, при правильной настройке кластера, хранится в зашифрованном виде в etcd.

Пример манифеста Secret:

apiVersion: v1
kind: Secret
metadata:
  name: app-db-credentials
type: Opaque
data:
  username: YWRtaW4= # admin в base64
  password: c2VjcmV0MTIz # secret123 в base64

Как я использую Secrets:

  • Как переменные окружения в Pod:
    env:
      - name: DB_PASSWORD
        valueFrom:
          secretKeyRef:
            name: app-db-credentials
            key: password
  • Как файлы (volume): Более безопасно для больших данных, таких как TLS-сертификаты.

Для повышения безопасности:

  • Включаю шифрование на уровне etcd.
  • Настраиваю строгие RBAC-правила для доступа к Secrets.
  • Для production-сред использую HashiCorp Vault с External Secrets Operator, который автоматически синхронизирует секреты из Vault в Kubernetes Secrets. Это дает централизованное управление, аудит и ротацию.