Suscríbase al feed

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.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Navegar por canal

automation icon

Automatización

Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos

AI icon

Inteligencia artificial

Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar

open hybrid cloud icon

Nube híbrida abierta

Vea como construimos un futuro flexible con la nube híbrida

security icon

Seguridad

Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías

edge icon

Edge computing

Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge

Infrastructure icon

Infraestructura

Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo

application development icon

Aplicaciones

Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones

Original series icon

Programas originales

Vea historias divertidas de creadores y líderes en tecnología empresarial