GitOps
ArgoCD
Kubernetes
CI/CD
Deploy Declarativo
Infraestrutura como Código
Fluxo de Trabalho
Observabilidade
Helm
Kustomize

GitOps con ArgoCD: automatización de implementación declarativa

GitOps con ArgoCD: automatización de implementación declarativa

GitOps es la práctica de administrar infraestructura e implementaciones desde repositorios Git, tratando el repositorio como la única fuente de verdad. ArgoCD es la herramienta líder para aplicar este patrón a clústeres Kubernetes] y ofrece sincronización automática, visualización de diferencias y auditoría completa.

¿Por qué adoptar GitOps?

  • Consistencia, el estado deseado se versiona en Git; cualquier desviación se puede revertir.
  • Auditoría, cada cambio tiene un historial de confirmación, autor y revisión.
  • Reversión instantánea, simplemente revierta la confirmación y ArgoCD reconciliará el clúster.
  • Colaboración, las solicitudes de extracción permiten revisar los cambios de infraestructura antes de aplicarlos.

Arquitectura básica de ArgoCD

  1. Servidor de repositorio, almacena manifiestos (YAML, Helm, Kustomize).
  2. Controlador de aplicaciones, compara el estado del clúster con el manifiesto de Git y aplica las diferencias.
  3. Servidor API, expone la interfaz de usuario y la API REST para su administración.
  4. Dex/SSO, integración con proveedores de identidad (GitHub, Okta).

El flujo de trabajo es sencillo: ArgoCD Controller crea git pull desde el repositorio, aplica los manifiestos al clúster Kubernetes a través de kubectl apply y lee continuamente el estado del clúster para compararlo con el estado deseado. Los usuarios interactúan con el controlador a través de la interfaz de usuario o API. Por lo tanto, el repositorio sigue siendo la única fuente de verdad y el clúster se mantiene sincronizado automáticamente.

Configurando el repositorio

La estructura recomendada separa una capa base/, con recursos compartidos como namespace.yaml y rbac.yaml, de una capa apps/, en la que cada aplicación (por ejemplo, frontend y backend) tiene sus propios kustomization.yaml y deployment.yaml. Kustomize le permite anular configuraciones por entorno (desarrollo, preparación, producción) sin duplicar manifiestos.

Manifiesto de aplicación ArgoCD (YAML), 7 líneas

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: default source: repoURL: https://github.com/yourorg/infra.git targetRevision: HEAD path: apps/frontend destination: server: https://kubernetes.default.svc namespace: production syncPolicy: automated: prune: true selfHeal: true

syncPolicy.automated permite la sincronización y limpieza automática de recursos obsoletos.

Estrategias de sincronización

  • Automático, ideal para entornos de puesta en escena donde la velocidad es crítica.
  • Manual (PR-driven), para producción, donde se revisa cada cambio antes de ser aplicado.
  • Hooks, scripts que se ejecutan antes o después de la sincronización (por ejemplo: migraciones de bases de datos).

Observabilidad y auditoría

  • UI, muestra la diferencia entre el estado deseado y el real, con el botón "Sincronizar".
  • Webhooks, notifica a Slack/Teams sobre eventos de falla o sincronización.
  • Métricas, expone las métricas de Prometheus (argocd_app_sync_total, argocd_app_health_status).
  • Registros, centralizar con Loki o Elasticsearch para rastrear acciones.

Seguridad

  • RBAC, define roles (admin, read-only, dev) en el espacio de nombres argocd.
  • SSO, integración con OAuth2/OIDC (GitHub, Google, Okta).
  • TLS mutuo, entre ArgoCD y el servidor API Kubernetes.
  • Política de protección de sucursales, requiere revisiones y verificaciones de estado antes de fusionarse.

Lista de verificación de implementación

  • Crear repositorio Git con estructura base/ y apps/.
  • Instalar ArgoCD (kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml).
  • Configurar SSO/Dex para autenticación corporativa.
  • [] Definir CRD de aplicaciones para cada microservicio.
  • Habilite syncPolicy.automated en entornos de prueba.
  • [] Configurar alertas en Prometheus/Alertmanager para fallas de sincronización.
  • [] Flujo de relaciones públicas de documentos → Fusionar → Sincronizar.

Conclusión

GitOps con ArgoCD ofrece control de versiones, auditabilidad y automatización para la entrega de aplicaciones Kubernetes. Si sigue las mejores prácticas para la estructura, la seguridad y la observabilidad del repositorio, su equipo puede implementar cambios con confianza y rapidez.


¿Ya utilizas ArgoCD? ¡Comparte tus consejos y desafíos en los comentarios!

Lea también