Sobes.tech
Back to questions
Middle+
8

Как инжектили секреты из Vault внутрь приложения? Например, для подключения к базе данных при старте пода.

Companies where asked
Смерт

Answer from AI

sobes.tech AI

Для инъекции секретов из HashiCorp Vault в приложение, запускаемое в Kubernetes, часто используют несколько подходов:

  1. Vault Agent с Sidecar контейнером

    • В под добавляют sidecar контейнер с Vault Agent, который аутентифицируется в Vault и получает секреты.
    • Секреты монтируются в общий том (например, tmpfs) в виде файлов.
    • Основное приложение читает секреты из этих файлов при старте.
  2. Использование CSI драйвера для Vault

    • Vault CSI Driver позволяет монтировать секреты как том в под.
    • При старте пода секреты автоматически подтягиваются и доступны в файловой системе.
  3. Инициализация через init контейнер

    • Init контейнер получает секреты из Vault и кладёт их в общий том.
    • Основное приложение читает их из тома.
  4. Интеграция через переменные окружения

    • Vault Agent или init контейнер может экспортировать секреты в переменные окружения.

Пример с Vault Agent sidecar:

apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  serviceAccountName: vault-auth
  containers:
  - name: app
    image: myapp:latest
    volumeMounts:
    - name: vault-secrets
      mountPath: /etc/secrets
  - name: vault-agent
    image: vault:latest
    args: ["agent", "-config=/etc/vault/config.hcl"]
    volumeMounts:
    - name: vault-config
      mountPath: /etc/vault
    - name: vault-secrets
      mountPath: /etc/secrets
  volumes:
  - name: vault-config
    configMap:
      name: vault-agent-config
  - name: vault-secrets
    emptyDir: {}

В итоге приложение читает секреты из /etc/secrets при старте и использует их для подключения к базе данных.

Важно обеспечить безопасную аутентификацию (например, через Kubernetes Auth Method) и ротацию секретов.