GitOps: Flux vs Argo CD

GitOps es una metodología de desarrollo y operaciones de software que utiliza Git como fuente de verdad para las configuraciones de despliegue. Implica mantener el estado deseado de una aplicación o infraestructura en un repositorio Git y utilizar flujos de trabajo basados en Git para gestionar y desplegar cambios. Dos herramientas de código abierto populares que ayudan a las organizaciones a implementar GitOps para gestionar sus aplicaciones de Kubernetes son Flux y Argo CD. En este artículo, vamos a echar un vistazo más de cerca a estas herramientas, sus pros y contras, y cómo configurarlas. Lea el tutorial relacionado de DZone sobre cómo automatizar las canalizaciones CI/CD con Jenkins y Kubernetes.

Casos de uso comunes para Flux y Argo CD

Flux

  • Entrega continua: Flux puede utilizarse para automatizar la canalización de despliegue y garantizar que los cambios se desplieguen automáticamente en cuanto se envíen al repositorio Git.
  • Administración de configuración: Flux permite almacenar y gestionar la configuración de tu aplicación como código, lo que facilita el control de versiones y el seguimiento de cambios.
  • Infraestructura inmutable: Flux ayuda a imponer un enfoque de infraestructura inmutable, donde los cambios solo se realizan a través del repositorio Git y no a través de intervenciones manuales en el clúster.
  • Implementaciones azul-verde: Flux admite implementaciones azul-verde donde una nueva versión de una aplicación se despliega junto a la versión existente, y el tráfico se desplaza gradualmente a la nueva versión.

Argo CD

  • Implementación continua: Argo CD puede ser utilizado para automatizar el proceso de despliegue, asegurando que las aplicaciones siempre estén actualizadas con los últimos cambios del repositorio Git.
  • Promoción de aplicaciones: Argo CD admite la promoción de aplicaciones, donde las aplicaciones pueden ser promovidas de un entorno a otro. Por ejemplo, de desarrollo a producción.
  • Administración de múltiples clústeres: Argo CD puede ser utilizado para gestionar aplicaciones en múltiples clústeres, asegurando que el estado deseado de las aplicaciones sea consistente en todos los clústeres.
  • Administración de reversión: Argo CD proporciona capacidades de reversión, facilitando la reversión de cambios en caso de fallos.

La elección entre las dos herramientas depende de los requisitos específicos de la organización y la aplicación, pero ambas herramientas proporcionan un enfoque GitOps para simplificar el proceso de despliegue y reducir el riesgo de errores manuales. Ambas tienen sus propios pros y contras, y en este artículo, veremos cuáles son y cómo configurarlas.

¿Qué es Flux?

Flux es una herramienta GitOps que automatiza el despliegue de aplicaciones en Kubernetes. Funciona monitoreando continuamente el estado de un repositorio Git y aplicando cualquier cambio a un clúster. Flux se integra con varios proveedores de Git como GitHub, GitLab, y Bitbucket. Cuando se realizan cambios en el repositorio, Flux los detecta automáticamente y actualiza el clúster en consecuencia. Tutorial relacionado: Cómo implementar automáticamente aplicaciones de Spring Boot mediante GitLab CI/CD.

Pros de Flux

  • Despliegues automatizados: Flux automatiza el proceso de despliegue, reduciendo errores manuales y liberando a los desarrolladores para que se centren en otras tareas.
  • Flujo de trabajo basado en Git: Flux aprovecha Git como fuente de verdad, lo que facilita el seguimiento y reversión de cambios.
  • Configuración declarativa: Flux utiliza manifiestos de Kubernetes para definir el estado deseado de un clúster, lo que facilita la gestión y seguimiento de cambios.

Contras de Flux

  • Limitada personalización: Flux solo admite un conjunto limitado de personalizaciones, lo que puede no ser adecuado para todos los casos de uso.
  • Curva de aprendizaje empinada: Flux tiene una curva de aprendizaje empinada para nuevos usuarios y requiere una comprensión profunda de Kubernetes y Git.

Cómo Configurar Flux

Requisitos Previos

  • A running Kubernetes cluster.
  • Helm instalado en tu máquina local.
  • A Git repository for your application’s source code and Kubernetes manifests.
  • La URL del repositorio y una clave SSH para el repositorio Git.

Paso 1: Agregar el Repositorio Helm de Flux

El primer paso es agregar el repositorio Helm de Flux a tu máquina local. Ejecuta el siguiente comando para agregar el repositorio:

Shell

 

helm repo add fluxcd https://charts.fluxcd.io

Paso 2: Instalar Flux

Ahora que el repositorio Helm de Flux está agregado, puedes instalar Flux en el clúster. Ejecuta el siguiente comando para instalar Flux:

Shell

 

helm upgrade -i flux fluxcd/flux \
--set [email protected]:/.git \
--set git.path= \
--set git.pollInterval=1m \
--set git.ssh.secretName=flux-git-ssh

En el comando anterior, reemplaza los valores de marcador de posición con tu propia información del repositorio Git. El parámetro git.url es la URL del repositorio Git, el parámetro git.path es el camino al directorio que contiene los manifiestos de Kubernetes, y el parámetro git.ssh.secretName es el nombre del secreto SSH que contiene la clave SSH para el repositorio.

Paso 3: Verificar la Instalación

Después de ejecutar el comando anterior, puede verificar la instalación comprobando el estado de los pods de Flux. Ejecute el siguiente comando para ver los pods:

Shell

 

kubectl get pods -n <flux-namespace>

Si los pods están en ejecución, Flux se ha instalado correctamente.

Paso 4: Conectar Flux a su Repositorio Git

El paso final es conectar Flux a su repositorio Git. Ejecute el siguiente comando para generar una clave SSH y crear un secreto:

Shell

 

ssh-keygen -t rsa -b 4096 -f id_rsa
kubectl create secret generic flux-git-ssh \
--from-file=id_rsa=./id_rsa --namespace=

En el comando anterior, reemplace el marcador <flux-namespace> con el espacio de nombres donde se instaló Flux.

Ahora, agregue la clave pública generada como clave de despliegue en su repositorio Git.

Ha configurado correctamente Flux utilizando Helm. Cada vez que se realicen cambios en el repositorio Git, Flux los detectará y actualizará el clúster en consecuencia.

En conclusión, configurar Flux usando Helm es un proceso bastante simple. Al utilizar Git como fuente de verdad y monitorear continuamente el estado del clúster, Flux ayuda a simplificar el proceso de despliegue y reduce el riesgo de errores manuales.

¿Qué es Argo CD?

Argo CD es una herramienta de código abierto de GitOps que automatiza la implementación de aplicaciones en Kubernetes. Permite a los desarrolladores gestionar sus aplicaciones de manera declarativa y mantiene el estado deseado de las aplicaciones en sincronía con el estado en vivo. Argo CD se integra con repositorios Git y los supervisa de forma continua en busca de cambios. Cada vez que se detectan cambios, Argo CD los aplica al clúster, asegurando que la aplicación siempre esté actualizada. Con Argo CD, las organizaciones pueden automatizar su proceso de implementación, reducir el riesgo de errores manuales y beneficiarse de las capacidades de control de versiones de Git. Argo CD ofrece una interfaz gráfica de usuario y una interfaz de línea de comandos, lo que facilita el uso y la gestión de aplicaciones a gran escala.

Ventajas de Argo CD

  • Características avanzadas de implementación: Argo CD proporciona características avanzadas de implementación, como actualizaciones en caliente y implementaciones canarias, lo que facilita la gestión de implementaciones complejas.
  • Interfaz amigable: Argo CD ofrece una interfaz amigable que facilita la gestión de implementaciones, especialmente para usuarios no técnicos.
  • Personalizable: Argo CD permite una mayor personalización, lo que facilita adaptar la herramienta a casos de uso específicos.

Desventajas de Argo CD

  • Curva de aprendizaje empinada: Argo CD tiene una curva de aprendizaje empinada para nuevos usuarios y requiere una comprensión profunda de Kubernetes y Git.
  • Complejidad: Argo CD tiene una arquitectura más compleja que Flux, lo que puede dificultar su gestión y resolución de problemas.

Cómo Configurar Argo CD

Argo CD se puede instalar en un clúster de Kubernetes utilizando Helm, un manejador de paquetes para Kubernetes. En esta sección, repasaremos los pasos para configurar Argo CD usando Helm.

Requisitos Previos

  • A running Kubernetes cluster.
  • Helm instalado en tu máquina local.
  • A Git repository for your application’s source code and Kubernetes manifests.

Paso 1: Agregar el Repositorio Helm de Argo CD

El primer paso es agregar el repositorio Helm de Argo CD a tu máquina local. Ejecuta el siguiente comando para agregar el repositorio:

Shell

 

helm repo add argo https://argoproj.github.io/argo-cd

Paso 2: Instalar Argo CD

Ahora que el repositorio Helm de Argo CD está agregado, puedes instalar Argo CD en el clúster. Ejecuta el siguiente comando para instalar Argo CD:

Shell

 

helm upgrade -i argocd argo/argo-cd --set server.route.enabled=true

Paso 3: Verificar la Instalación

Después de ejecutar el comando anterior, puedes verificar la instalación comprobando el estado de los pods de Argo CD. Ejecuta el siguiente comando para ver los pods:

Shell

 

kubectl get pods -n argocd

Si los pods están en ejecución, Argo CD se ha instalado correctamente.

Paso 4: Conectar Argo CD a tu Repositorio Git

El paso final es conectar Argo CD a tu repositorio Git. Argo CD proporciona una interfaz gráfica de usuario que puedes usar para crear aplicaciones y conectarte a tu repositorio Git.

Para acceder a la interfaz de Argo CD, ejecuta el siguiente comando para obtener la URL:

Shell

 

kubectl get routes -n argocd

Utiliza la URL en un navegador web para acceder a la interfaz de Argo CD.

Una vez en la interfaz, puedes crear una nueva aplicación proporcionando la URL del repositorio Git y la ruta a los manifiestos de Kubernetes. Argo CD monitoreará continuamente el repositorio para cambios y los aplicará al clúster.

Ahora has configurado correctamente Argo CD utilizando Helm.

Conclusión

Kubernetes y DevOps son una parte clave del ciclo de vida del desarrollo de software, y GitOps es un enfoque valioso para automatizar la implementación y gestión de aplicaciones en Kubernetes. Flux y Argo CD son dos herramientas populares de GitOps que proporcionan una forma simple y eficiente de automatizar el proceso de implementación, imponer una infraestructura inmutable y gestionar aplicaciones de manera consistente y predecible.

Flux se enfoca en automatizar la canalización de implementación y proporcionar la gestión de configuración como código, mientras que Argo CD ofrece una solución GitOps más completa, incluyendo características como la gestión de múltiples clústeres, promoción de aplicaciones y gestión de reversión. Ambas herramientas tienen sus propias fortalezas y debilidades, y la elección entre ellas dependerá de los requisitos específicos de la organización y la aplicación.

Independientemente de la herramienta elegida, GitOps ofrece un enfoque valioso para simplificar el proceso de despliegue y reducir el riesgo de errores manuales. Al mantener el estado deseado de las aplicaciones en sincronía con el repositorio Git, GitOps garantiza que los cambios se realicen de manera consistente y predecible, lo que resulta en un proceso de despliegue más confiable y eficiente.

Source:
https://dzone.com/articles/gitops-flux-vs-argo-cd