Cómo desplegar HashiCorp Vault en Kubernetes sin escribir montones de manifiestos YAML
Cualquiera que haya intentado configurar HashiCorp Vault en un cluster de Kubernetes manualmente recuerda el interminable ensamblaje de Deployments, StatefulSets, ConfigMaps, secretos TLS y contenedores sidecar. Una indentación mal ubicada en un archivo YAML — y tus aplicaciones pierden acceso a las bases de datos.
El chart oficial de vault-helm resuelve este problema. Los ingenieros de HashiCorp empaquetaron el despliegue del gestor de secretos en un único chart que cubre todo, desde un entorno de desarrollo local hasta un cluster HA distribuido.
¿Por qué usar este chart en primer lugar?
El repositorio se ha convertido en el estándar para ejecutar Vault dentro de Kubernetes. No necesitas escribir especificaciones de pods desde cero ni figuring out cómo montar almacenamiento para el consenso Raft integrado. La configuración ya está incluida en el archivo values.yaml.
La herramienta es útil para ingenieros DevOps y administradores de sistemas que organizan el almacenamiento de secretos en su infraestructura. Si tus servicios necesitan claves API, credenciales de base de datos o certificados TLS, el chart te ayuda a desplegar un vault confiable en cuestión de minutos.
Características principales
Los desarrolladores del chart anticiparon los casos de uso principales:
-
Cambio rápido entre modos de operación Puedes cambiar una instancia del modo independiente a un cluster tolerante a fallos a través de parámetros de configuración. Para pruebas locales, un archivo values mínimo es suficiente, mientras que los entornos de producción habilitan Raft integrado o una base de datos externa.
-
Inyección de secretos a través de Vault Agent Injector Tu aplicación ya no necesita saber cómo trabajar con la API REST del vault. El inyector añade automáticamente un contenedor sidecar al pod. Este contenedor recupera los secretos y los guarda en el sistema de archivos local del pod. La aplicación lee los datos del archivo sin nunca interactuar con la red de Vault.
-
Autenticación a través del Motor de Autenticación de Kubernetes El chart se integra con el mecanismo de autorización de Kubernetes. El vault verifica las cuentas de servicio de los pods y entrega secretos solo a las aplicaciones autorizadas.
-
Separación de componentes Puedes desplegar el lado del servidor, los agentes y el inyector por separado. Esto te ayuda a mover el servidor de Vault fuera de la aplicación principal o ejecutar solo agentes ligeros en los nodos worker.
Cómo desplegar el Vault
Necesitarás un cluster de Kubernetes en ejecución versión 1.29 o superior y Helm versión 3.6+ instalado. Configurar una instancia de release básica solo toma dos comandos:
helm repo add hashicorp https://helm.releases.hashicorp.com
helm install vault hashicorp/vault
Para un entorno real, la configuración estándar generalmente no es suficiente. Necesitarás un archivo de parámetros personalizado, por ejemplo custom-values.yaml:
server:
ui:
enabled: true
dataStorage:
enabled: true
size: 10Gi
injector:
enabled: true
Despliega el chart con los parámetros ensamblados:
helm install vault hashicorp/vault -f custom-values.yaml
Después de eso, solo necesitas acceder al pod en ejecución, ejecutar el comando vault operator init y desellar el vault.
Consideraciones operativas
El archivo de configuración values.yaml contiene cientos de opciones. Descubrirlas todas de primera intención puede ser complicado, así que prepárate para dedicar tiempo a leer la documentación oficial.
El segundo punto se refiere al proceso de desellar el vault después de los reinicios. Por defecto, Vault comienza en un estado sellado. Para uso en producción, es mejor configurar Auto-Unseal a través de servicios cloud KMS desde el principio, de lo contrario tendrás que ingresar las claves manualmente después de cada caída del pod.
¿Para quién es esta herramienta?
Si trabajas con Kubernetes y planeas implementar una gestión centralizada de secretos, este chart te ahorrará semanas de trabajo en tus propios manifiestos.
Comienza desplegando una instancia de prueba en un namespace aislado. Intenta agregar anotaciones del inyector a una aplicación de prueba simple y observa cómo los secretos llegan al contenedor sin necesidad de modificar tu código fuente.
Proyectos relacionados