Los datos confidenciales no deben almacenarse en Git. Esto presenta un enigma para GitOps, ya que necesita secretos en Git, ¡pero no desea exponer estos datos confidenciales! Para abordar este problema, puede almacenar secretos en una herramienta como HashiCorp Vault y, luego, recuperar e insertar esos datos en Red Hat OpenShift.
Este artículo es una guía para implementar OpenShift GitOps con el plugin Argo CD Vault para recuperar secretos de una instancia de Hashicorp Vault e insertarlos en los recursos de Kubernetes. Esta guía se basa en trabajos como este blog anterior de Red Hat de 2021 y se actualiza para usar el enfoque más moderno sidecar de plugins personalizados.
Requisitos previos
Para este artículo, asumo que está ejecutando OpenShift 4.10, o superior, con privilegios administrativos en ese clúster. Ejecuto un clúster de Red Hat OpenShift en AWS 4.13 provisto a través del sistema de demostración de Red Hat.
Además, asegúrese de haber iniciado sesión en el clúster en una terminal con los binarios oc
y helm
disponibles antes de continuar con cualquiera de los siguientes pasos. Use los siguientes comandos para confirmar estos binarios.
Primero, verifique los requisitos previos; debería ver un resultado similar al siguiente:
$ oc version && helm version Client Version: 4.11.13 Kustomize Version: v4.5.4 Kubernetes Version: v1.27.4 version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}
1. Implementación de Vault
Para este artículo, estoy usando Vault en el modo dev
, lo que no es adecuado para la producción. Puede omitir este paso si ya tiene una instancia de Vault en ejecución. Implemente una instancia de Hashicorp Vault:
$ helm upgrade --install vault vault \ --repo https://helm.releases.hashicorp.com \ --namespace vault \ --create-namespace \ --set "global.openshift=true" \ --set "server.dev.enabled=true" \ --set "injector.enabled=false"
2. Configurar Vault
Una vez que haya implementado una instancia de Vault, ejecute un script de shell en el pod de Vault para configurarlo rápidamente para esta demostración con la CLI vault
.
El script de configuración establece el método de autenticación de Kubernetes para Vault, habilita un almacén de secretos kv-v2
, crea un secreto de prueba y crea una política de acceso para ese secreto.
Clone la fuente:
$ git clone https://github.com/jmhbnz/openshift-gitops-vault-plugin
Copie su script de configuración en el pod de Vault:
$ oc --namespace vault cp 1-vault/configure-vault.sh vault-0:/tmp/configure-vault.sh
A continuación, ejecute el script de forma remota en el pod de Vault:
$ oc --namespace vault exec vault-0 -t -- sh -c 'cd /tmp && ./configure-vault.sh'
3. Configure argocd-vault-plugin-auth en Vault
Una vez que Vault esté implementado y configurado, debemos habilitar el complemento Argo CD Vault que se implementará próximamente para autenticarse en Vault con una cuenta de servicio de Kubernetes.
Cree un espacio de nombres para ArgoCD:
$ oc new-project vplugindemo
Cree una cuenta de servicio para la autenticación del plugin Argo Vault:
$ oc create serviceaccount vplugin
Cree un rol en Vault para vincular su cuenta de servicio a la política:
$ oc --namespace vault exec vault-0 -- vault write auth/kubernetes/role/vplugin \ bound_service_account_names=vplugin \ bound_service_account_namespaces=vplugindemo \ policies=vplugin \ ttl=1h
Finalmente, cree un secreto para que el complemento Argo Vault lo use al configurar la conexión de Vault.
$ oc --namespace vplugindemo create \ -f 2-argocd/secret-vault-configuration.yaml
4. Configurar el procesamiento de argocd-vault-plugin
Con la autenticación configurada, ahora debe definir para qué se usa el sidecar Argo CD Vault Plugin. Este es un proceso de dos pasos. Primero, debe especificar un comando de descubrimiento y, luego, un comando de generación. Consulte estos ejemplos documentados, incluidos los escenarios para las aplicaciones basadas en helm
o kustomize
. Mi ejemplo toma el enfoque más básico de descubrir archivos que contienen una anotación, luego usa argocd-vault-plugin generate .
para crear una plantilla para los archivos.
$ oc --namespace vplugindemo create \ -f 2-argocd/configmap-plugin.yaml
5. Implemente GitOps de OpenShift
Con Vault implementado y configurado, y argocd-vault-plugin configurado, implemente el operador OpenShift GitOps:
$ oc --namespace openshift-operators create -f 2-argocd/subscription-gitops.yaml
Una vez que el operador se haya instalado correctamente, cree su instancia de Argo CD con el recurso personalizado:
$ oc --namespace vplugindemo create \ -f 2-argocd/crd-argocd.yaml
6. Crear una aplicación de CD de Argo
Una vez que Argo CD se esté ejecutando, cree esta aplicación de muestra de referencia. Esto crea un recurso secreto en el clúster que tiene los valores de marcador de posición predeterminados reemplazados con valores que provienen de Vault.
$ oc --namespace vplugindemo create \ -f 2-argocd/application-example.yaml
Resumen
Con Hashicorp Vault, con Red Hat OpenShift GitOps y Argo CD Vault Plugin ejecutándose como sidecar, usó correctamente valores de marcador de posición dentro de un secreto en Git. Este es un excelente método para proteger los datos confidenciales.
Sobre el autor
James Blair is a Specialist Architect at Red Hat. James is a vivid open source advocate and hands-on engineer. He has a deep technical background in automation, DevSecOps and cloud-native platform engineering across several sectors and is passionate about growing cloud-native in Aotearoa, New Zealand.
Navegar por canal
Automatización
Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos
Inteligencia artificial
Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar
Nube híbrida abierta
Vea como construimos un futuro flexible con la nube híbrida
Seguridad
Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías
Edge computing
Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge
Infraestructura
Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo
Aplicaciones
Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones
Programas originales
Vea historias divertidas de creadores y líderes en tecnología empresarial
Productos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Servicios de nube
- Ver todos los productos
Herramientas
- Training y Certificación
- Mi cuenta
- Soporte al cliente
- Recursos para desarrolladores
- Busque un partner
- Red Hat Ecosystem Catalog
- Calculador de valor Red Hat
- Documentación
Realice pruebas, compras y ventas
Comunicarse
- Comuníquese con la oficina de ventas
- Comuníquese con el servicio al cliente
- Comuníquese con Red Hat Training
- Redes sociales
Acerca de Red Hat
Somos el proveedor líder a nivel mundial de soluciones empresariales de código abierto, incluyendo Linux, cloud, contenedores y Kubernetes. Ofrecemos soluciones reforzadas, las cuales permiten que las empresas trabajen en distintas plataformas y entornos con facilidad, desde el centro de datos principal hasta el extremo de la red.
Seleccionar idioma
Red Hat legal and privacy links
- Acerca de Red Hat
- Oportunidades de empleo
- Eventos
- Sedes
- Póngase en contacto con Red Hat
- Blog de Red Hat
- Diversidad, igualdad e inclusión
- Cool Stuff Store
- Red Hat Summit