Vault de HashiCorp es una solución de administración de secretos de terceros que se integra en Kubernetes y GKE en AWS.
Puedes implementar Vault en GKE en AWS a través de lo siguiente:
- El gráfico de Helm oficial de HashiCorp
- Vault en GKE, que se instala con Terraform
Puedes acceder a los secretos de Vault dentro de los pods mediante el inyector de sidecar del agente. El inyector es un controlador de webhooks mutables de Kubernetes. El controlador intercepta los eventos de Pod y actualiza la configuración del Pod.
El inyector del agente de Vault usa la cuenta de servicio de Kubernetes (KSA) de un Pod con el método de autenticación de Kubernetes para Vault. La cuenta KSA debe estar vinculada a una función de Vault con una política que otorgue acceso a los secretos.
Una vez realizada la configuración, puedes solicitar secretos mediante la anotación de un Pod.
En el siguiente fragmento, se incluyen anotaciones que agregarías a un Pod.
Si la función myapp
tiene acceso al Secreto secret/banana
, Vault la activa en /vault/secrets/apple
.
spec:
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-apple: "secrets/banana"
vault.hashicorp.com/role: "myapp"
Puedes aplicar esta configuración en los siguientes elementos:
- En un Pod con
kubectl edit pod/pod-name
- En un Deployment con
kubectl edit deployment/deployment-name
¿Qué sigue?
- Lee la documentación del Inyector de Vault.
- Revisa el repositorio de GitHub de vault-k8s.