Назад к вопросам
Middle+
7
Как инжектили секреты из Vault внутрь приложения? Например, для подключения к базе данных при старте пода.
Компании, где спрашивали
Смерт
Ответ от нейросети
sobes.tech 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) и ротацию секретов.