¿Cansado/a de escribir kubectl get pods o kubectl delete pod? ArgoCD es una herramienta que revoluciona el despliegue en Kubernetes. Te permite ver de un vistazo todo lo que tienes desplegado en kubernetes y si está sincronizado con el repositorio de código utilizando la filosofía GitOps.

¿Cómo funciona ArgoCD?

ArgoCD se conecta a un repositorio Git y despliega los recursos definidos en los diferentes cluster que estén configurados.

git <-- Argo --> sync cluster A / cluster B / cluster C

Esto ayuda a mantener tu entorno de Kubernetes sincronizado con el estado deseado que se encuentra en Git, evitando cambios manuales y posibles errores humanos. Usando ArgoCD podríamos decir que se asegura en cierto modo la calidad y la seguridad, ya que elimina varios puntos de error. Pero si con eso no te he convencido, a continuación te explico algunos de los beneficios de Argo CD.

Beneficios de Argo CD

  • Centraliza todo el despliegue, permitiendo leer la configuración a través de su interfaz, lo cual simplifica reduce la carga mental a la hora de interpretar la configuración y comprender todo el proceso de despliegue.
  • Permite el despliegue en múltiples Clusters añadiendo funciones novedosas como App-of-Apps, auto-discovery y policies.
  • Permite el despliegue de distintos CRDs (Custom Resource Definitions): kustomize, helm, ksonnet, jsonnet y ficheros tradicionales.
  • Cuenta con una política de seguridad basada en roles, pudiendo mapear los roles de Argo CD con roles de nuestro SSO.
  • Permite el acceso por interfaz o terminal.

Aquí solo he citado algunos de los beneficios del uso de Argo CD, pero para entender esta herramienta, es necesario que profundicemos en sus conceptos básicos.

Conceptos básicos

Algunos de los conceptos básicos que podemos encontrar en la consola de administración de ArgoCD son los siguientes:

  • Application: se refiere a la definición de la aplicación que se quiere desplegar en el que se indica el repositorio, el proyecto y el cluster destino.
  • Project: es la agrupación lógica de aplicaciones. Muy útil cuando múltiples equipos usan Argo CD simultáneamente para que no haya errores.
  • Sync: es el proceso durante el cual se hacen cambios en una aplicación para que pase a su estado objetivo. En la interfaz se muestran, además, datos sobre el éxito o no de la sincronización, así como los datos de la última sincronización (fecha, autor y comentarios).
  • Refresh: compara el código más reciente comiteado en Git con el estado activo, descubriendo qué es diferente. De esta manera, puedes encontrar los cambios con un solo vistazo.
  • Health: estado de la aplicación. ¿Se está ejecutando correctamente? ¿Puede atender solicitudes? Con esta información, tus dudas quedan resueltas al instante.

Como una imagen vale más que mil palabras, a continuación te dejo un pantallazo para que puedas ver los parámetros que ofrece la herramienta:

pantallazo donde se muestran los parámetros que ofrece la herramienta: healthy, synced, sync ok

Interfaz gráfica

Una de las grandes fortalezas que ofrece ArgoCD es su interfaz: intuitiva, limpia y con información relevante para los operadores y equipos que hacen uso de ella.

Vídeo explicativo de la interfaz de Argo CD

La interfaz gráfica te permitirá sincronizar aplicaciones, ¡olvídate de kubectl apply! Y, si no te ve nadie, hasta puedes editar en caliente algún fichero (no seré yo quien te juzgue). Lo bueno es que no se quedará para siempre ya que ArgoCD te recordará que la aplicación no está sincronizada con lo que tenemos definido en Git.

Autosync, prune y autohealing

Supongamos que quiero evitar que algún malhechor modifique ficheros en el entorno de producción. ¿Podría evitarlo con ArgoCD? ¡Claro! ArgoCD te permite las siguientes formas de sincronización:

  • Automated self healing: al activar esta función, el estado siempre estará igual que en git. Es decir, si se realiza una modificación en algún recurso, ArgoCD sincronizará automáticamente y eliminará ese cambio.
  • Automated sync: por defecto, ArgoCD escanea los repositorios de Git cada 3 min para detectar si se han producido cambios. Si está habilitada la opción automated sync, se desplegarán las modificaciones.
  • Automated pruning: realiza la eliminación automática de recursos cuando no están definidos en Git, ahorrándote trabajo y dolores de cabeza.

Sync Windows

Por lo que hemos visto hasta ahora, Argo CD ya parece una herramienta muy completa, ¿verdad? ¡Pues tiene más! ArgoCD permite varios tipos de configuración según tus necesidades. A continuación, te dejo un par de ejemplos de lo que Argo CD te permite:

  • Configuración de ventanas de sync para las aplicaciones definidas.
  • Configuración para que permita o deniegue según las necesidades del proyecto.
  • Configuración para permitir el sync manual.
semáforo syncwindow

Conclusión

Argo CD te ayuda a automatizar, auditar y simplificar el ciclo de vida de tus despliegues en Kubernetes. Menos kubectl, más control y más seguridad. ¿Te animas a probarlo? ¡Te leo en comentarios! 😉

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.