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
- Servidor de repositorio, almacena manifiestos (YAML, Helm, Kustomize).
- Controlador de aplicaciones, compara el estado del clúster con el manifiesto de Git y aplica las diferencias.
- Servidor API, expone la interfaz de usuario y la API REST para su administración.
- 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.automatedpermite 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 nombresargocd. - 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/yapps/. - 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.automateden 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
- Arquitectura de Edge Computing: Estrategias para el procesamiento distribuido
- HashiCorp Vault: Gestión segura de secretos en aplicaciones
- CI/CD moderno: el arte de implementar con confianza
- Serverless para aplicaciones: arquitectura en la vida cotidiana
- Trabajadores de Cloudflare en producción: qué cambia después de hello world
- Consumo de batería en aplicaciones: comparación y lista de verificación
