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, часто используют несколько подходов:
-
Vault Agent с Sidecar контейнером
- В под добавляют sidecar контейнер с Vault Agent, который аутентифицируется в Vault и получает секреты.
- Секреты монтируются в общий том (например, tmpfs) в виде файлов.
- Основное приложение читает секреты из этих файлов при старте.
-
Использование CSI драйвера для Vault
- Vault CSI Driver позволяет монтировать секреты как том в под.
- При старте пода секреты автоматически подтягиваются и доступны в файловой системе.
-
Инициализация через init контейнер
- Init контейнер получает секреты из Vault и кладёт их в общий том.
- Основное приложение читает их из тома.
-
Интеграция через переменные окружения
- 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) и ротацию секретов.