Tema:
Gitops.
Introducción
Hasta el momento hemos utilizado kubectl para aplicar nuestro archivos de kubernetes, pero idealmente en un entorno productivo debemos de usar gitops.
Objetivo
Objetivo General:
- El objetivo de la practica es entender los conceptos de gitops.
Desarrollo del tema
Introducción a GitOps y Argo CD
¿Qué es GitOps?
GitOps es un enfoque de gestión de infraestructura y aplicaciones que utiliza Git como la única fuente de verdad.
El estado deseado del sistema (infraestructura, configuraciones y aplicaciones) se declara en repositorios de Git, y un sistema automatizado se encarga de sincronizar ese estado con el entorno real.
Principios Clave de GitOps
- Declarativo: Todo se define como código (YAML/JSON/Helm/Kustomize).
- Repositorio como fuente de verdad: Git almacena el estado deseado del sistema.
- Automatización: Un agente aplica y asegura que el estado real coincida con el deseado.
- Observabilidad: Reporte del estado real vs. el declarado.
Beneficios de GitOps
- Auditabilidad: cada cambio queda registrado en Git.
- Despliegues más seguros: revisiones por PR/MR antes de aplicar cambios.
- Automatización total: se evita el
kubectl applymanual. - Rollback sencillo: volver a un estado anterior es tan fácil como hacer
git revert.
¿Qué es Argo CD?
Argo CD (Argo Continuous Delivery) es una herramienta de GitOps para Kubernetes, creada por la comunidad de Argo Project (CNCF).
Su propósito es sincronizar automáticamente el estado de los clústeres con lo que está definido en Git.
Características Principales
- Declarativo: soporta manifiestos, Helm Charts o Kustomize.
- Multi-clúster: gestiona varios clústeres desde una sola instancia.
- Web UI y CLI (
argocd). - Sincronización automática o manual.
- Health checks y monitoreo de recursos.
- Rollback e historial de despliegues.
Flujo de Trabajo GitOps con Argo CD
- Definir el estado deseado en Git.
- Argo CD observa el repositorio.
- Comparación (Diff) entre Git y Kubernetes.
- Sincronización:
- Automática: aplica los cambios al detectar commits.
- Manual: con
argocd app synco desde la UI. - Monitoreo y validación del estado.
Modos de Operación en Argo CD
- Pull-based (recomendado): Argo CD “jala” la configuración desde Git y la aplica al clúster.
- Push-based: un pipeline CI empuja los cambios al clúster (menos común).
Ejemplo Conceptual
- En Git existe un
deployment.yamlyservice.yaml. - Se actualiza la imagen de
v1.0.1av1.0.2mediante un commit. - Argo CD detecta el cambio en Git.
- Argo CD aplica la nueva configuración en Kubernetes.
- Si falla, se revierte el commit y Argo CD ajusta el estado.
Comparación con CI/CD Tradicional
| Aspecto | CI/CD Tradicional (ej: Jenkins) | GitOps con Argo CD |
|---|---|---|
| Fuente de verdad | Pipelines + scripts | Repositorio Git |
| Entrega | Push desde pipeline | Pull desde cluster |
| Rollback | Manual y complejo | Revertir commit |
| Auditoría | Logs de CI | Historial Git |
| Operación | Dependiente de pipelines | Declarativo y autoajustado |
Casos de Uso de Argo CD
- Despliegue de microservicios en Kubernetes.
- Estrategias avanzadas: Blue-Green, Canary, Progressive Delivery.
- Multi-tenant: equipos con repos separados bajo un mismo Argo CD.
- Entornos multi-clúster (dev, staging, prod).
- Infraestructura como código (IaC) en Kubernetes.