Utilizar ArgoCD para sus despliegues GitOps
Objetivos
Este tutorial le explica cómo utilizar ArgoCD, la herramienta de despliegue continuo GitOps integrada en su clúster Managed Kubernetes. Al finalizar esta guía, sabrá:
- Qué es el enfoque GitOps.
- Cómo acceder a la interfaz de ArgoCD.
- Cómo desplegar una aplicación utilizando ArgoCD para sincronizar un repositorio Git.
El principio de GitOps con ArgoCD
GitOps es una práctica que consiste en utilizar un repositorio Git como única fuente de verdad para declarar el estado deseado de su infraestructura y sus aplicaciones.
ArgoCD es la herramienta que implementa este principio. Supervisa continuamente un repositorio Git y compara el estado definido en él (mediante manifiestos de Kubernetes) con el estado real de su clúster. Si detecta una diferencia, aplica automáticamente los cambios para que el clúster coincida con lo declarado en Git.
Las ventajas son numerosas:
- Despliegues fiables y reproducibles.
- Trazabilidad completa de todos los cambios a través del historial de Git.
- Recuperación rápida tras un incidente, volviendo a un commit anterior.
- Seguridad mejorada al limitar los accesos directos al clúster.
Acceder a la interfaz de ArgoCD
La interfaz web de ArgoCD está expuesta en una URL interna de su clúster. Para acceder a ella, debe estar conectado a la red interna del clúster (por ejemplo, a través de un bastión o una VPN).
La URL a utilizar es la siguiente, reemplazando <votre-identifiant-de-cluster> :
http://argocd.internal.<votre-identifiant-de-cluster>.mk.ms-cloud-temple.com
Puede obtener la dirección IP interna del Ingress de ArgoCD con el siguiente comando :
kubectl get ingress argocd-server -n argocd
La contraseña para la cuenta admin se la proporcionan los equipos de Cloud Temple durante la entrega de su clúster.
Desplegar una aplicación con ArgoCD
Ahora vamos a desplegar una aplicación de prueba utilizando el enfoque GitOps.
1. El repositorio Git
ArgoCD necesita un repositorio Git que contenga los manifiestos de Kubernetes de la aplicación a desplegar. Para este tutorial, utilizaremos el repositorio de ejemplos de ArgoCD: https://github.com/argoproj/argocd-example-apps. Desplegaremos la aplicación guestbook que se encuentra en este repositorio.
2. Preparar el espacio de nombres de destino
Para que la aplicación pueda desplegarse en un namespace gestionado por Capsule, primero debemos crear este namespace y aplicar la etiqueta de tenant correspondiente.
Ejecute los siguientes comandos:
# Crée le namespace
kubectl create namespace guestbook
# Applique le label pour l'associer au tenant "default" de Capsule (si besoin, car le namespace a surement déjà été associé avec votre tenant lors de sa création)
kubectl label namespace guestbook capsule.clastix.io/tenant=default
3. Crear la aplicación en ArgoCD
Una vez que el namespace está listo, podemos declarar la aplicación en ArgoCD.
-
Cree un archivo llamado
app-guestbook.yamlcon el siguiente contenido :apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata:name: guestbooknamespace: argocdspec:project: defaultsource:repoURL: https://github.com/argoproj/argocd-example-apps.gittargetRevision: HEADpath: guestbookdestination:server: https://kubernetes.default.svcnamespace: guestbooksyncPolicy:automated:prune: trueselfHeal: trueEste manifiesto le indica a ArgoCD que :
- Cree una aplicación llamada
guestbook. - Supervise el repositorio
argocd-example-apps. - Se centre en la carpeta
guestbookde este repositorio. - Despliegue los manifiestos encontrados en el namespace
guestbookdel clúster local. - Mantenga la sincronización automáticamente (
automated).
- Cree una aplicación llamada
-
Tiene dos opciones para crear la aplicación en ArgoCD :
Opción A : A través de
kubectl(Enfoque GitOps)Aplique este manifiesto directamente a su clúster. Este es el método recomendado porque sigue el principio GitOps de gestión declarativa.
kubectl apply -f app-guestbook.yamlOpción B : A través de la interfaz web de ArgoCD
También puede crear la aplicación directamente desde la interfaz gráfica :
- En la interfaz de ArgoCD, haga clic en "+ NEW APP".
- En la esquina superior derecha de la pantalla de creación, haga clic en "EDIT AS YAML".
- Pegue el contenido de su archivo
app-guestbook.yamlen el editor. - Haga clic en "CREATE".
4. Verificar la sincronización
En cuanto aplique el manifiesto, ArgoCD detectará este nuevo recurso Application y comenzará su trabajo.
- A través de la interfaz web :
- Inicie sesión en la interfaz de ArgoCD.
- Debería ver una nueva tarjeta para la aplicación
guestbook. - Después de unos instantes, su estado debería cambiar a
HealthyySynced. - Al hacer clic en la tarjeta, puede visualizar todos los recursos de Kubernetes (Deployment, Service, etc.) que se han creado.
- A través de la línea de comandos :
-
Verifique que el namespace
guestbookse haya creado :kubectl get ns guestbook -
Verifique que los recursos de la aplicación se hayan implementado correctamente en este namespace :
kubectl get all -n guestbookNAME READY STATUS RESTARTS AGEpod/guestbook-ui-85db984648-br6r2 1/1 Running 0 19mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/guestbook-ui ClusterIP 10.111.160.90 <none> 80/TCP 19mNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/guestbook-ui 1/1 1 1 19mNAME DESIRED CURRENT READY AGEreplicaset.apps/guestbook-ui-85db984648 1 1 1 19m
-
5. El ciclo GitOps
Ahora, si modificas un manifiesto en el repositorio Git, ArgoCD detectará el cambio y actualizará automáticamente la aplicación en el clúster. ¡Esa es la magia de GitOps!
Limpieza
Para eliminar la aplicación y todos los recursos asociados, simplemente puede eliminar el recurso Application de ArgoCD.
- Desde la interfaz web :
- En la interfaz de ArgoCD, busque la aplicación
guestbook. - Haga clic en los tres puntos (...) para abrir el menú y seleccione "Delete".
- Marque la opción "Foreground" para asegurarse de que todos los recursos gestionados (pods, servicios, etc.) también se eliminen en cascada.
- En la interfaz de ArgoCD, busque la aplicación
- Desde
kubectl:-
Elimine el archivo
app-guestbook.yamlque creó :kubectl delete -f app-guestbook.yaml
-
ArgoCD ahora eliminará todos los componentes de la aplicación guestbook. Una vez finalizada la sincronización de eliminación, el espacio de nombres guestbook estará vacío. Puede eliminarlo entonces con el siguiente comando :
kubectl delete namespace guestbook
:::info[Para ir más allá: la gestión de secretos ] Este tutorial utiliza un repositorio público sin datos sensibles. Para sus aplicaciones en producción, es crucial nunca almacenar secretos (contraseñas, claves de API) en texto claro en su repositorio Git. Soluciones como Sealed Secrets o HashiCorp Vault se integran con ArgoCD para gestionar sus secretos de forma segura. Un futuro tutorial detallará este enfoque. :::
Conclusion
Ha desplegado su primera aplicación con ArgoCD siguiendo los principios de GitOps. Este enfoque potente le permite gestionar sus despliegues de manera declarativa, fiable y segura. Le recomendamos adoptarla para todas sus aplicaciones en Kubernetes administrado.