Vault — ESO e Estrutura de Secrets¶
Estrutura de paths¶
O padrão dominante é:
text
secret/{ENV}/tenants/{namespace}/{app}/config
Exemplos:
secret/HML/tenants/tre/auth-api/configsecret/NOX/tenants/cmd-prd/is-core-api/config
Além disso, há paths system/... para secrets compartilhados e image pull secrets globais.
Integração com ESO¶
O fluxo operacional é:
- Vault armazena o secret fonte
ClusterSecretStoreaponta para o mount correto do ambienteExternalSecretde cada chart sincroniza o conteúdo- O Secret do Kubernetes é consumido pelo pod
- O Reloader reinicia a workload se houver mudança
Padrões importantes¶
- maioria das apps usa
tenants/{namespace}/{app}/config system/global-pull-secretsabasteceimagePullSecrets- apps como
redeis-auth-apiusam scope de sistema auth-apipossui necessidade adicional de chaves codificadas em base64
Exemplo de template¶
yaml
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: {{ .Release.Name }}-config
dataFrom:
- extract:
key: tenants/{{ .Release.Namespace }}/{{ .Values.app.name }}/config
O que precisa existir antes do deploy da aplicação¶
- o mount do ambiente (
secret/HMLousecret/NOX) - o secret da app no path esperado
- o
ClusterSecretStorefuncional no cluster - o secret global de pull de imagem
Sem isso, o chart pode até ser aplicado, mas a aplicação não sobe de forma saudável.