Sobes.tech
Middle+

Wie haben Sie die Secrets aus Vault in die Anwendung injiziert? Zum Beispiel, um beim Start des Pods eine Verbindung zur Datenbank herzustellen.

sobes.tech KI

Antwort von 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) и ротацию секретов.