Controla el comportamiento de sincronización: auto-sync, prune, self-heal y rollback
Decide cuándo Argo CD aplica los cambios, qué elimina y cómo deshacer un mal despliegue.
Los valores predeterminados de Argo CD son conservadores: detecta diferencias pero no cambia tu clúster por sí solo. Cada comportamiento que lo vuelve totalmente automático es una activación explícita, lo que te permite elegir distintos niveles de automatización por entorno. Esta guía recorre cada interruptor usando la aplicación webapp-dev de la guía anterior.
Sincronización manual vs automatizada
Una Application sin un bloque syncPolicy.automated es manual. Argo CD compara Git con el clúster y marca la aplicación como OutOfSync cuando difieren, pero no se aplica nada hasta que alguien hace clic en Sync en la interfaz o ejecuta argocd app sync.
Muchos equipos usan la sincronización automatizada para los entornos de desarrollo y pruebas, y mantienen producción en manual, de modo que una persona apruebe cada despliegue en producción hasta que el equipo confíe en el pipeline.
Activa la sincronización automatizada
Agrega un bloque automated al syncPolicy de la aplicación:
spec:
syncPolicy:
automated: {}
Con esto, cualquier commit nuevo que cambie el estado deseado se aplica sin hacer clic. Dos detalles sobre los tiempos:
- Argo CD detecta los commits nuevos consultando el repositorio, cada tres minutos por defecto. Esto es independiente de la política de sincronización. La política solo decide si una diferencia detectada se aplica o no.
- Para reaccionar de inmediato, configura un webhook desde tu host de Git hacia el endpoint
/api/webhookde Argo CD, o pulsa Refresh en la interfaz mientras pruebas.
Agrega pruning
De forma predeterminada, la sincronización automatizada crea y actualiza recursos pero no elimina nada. Si renombras o eliminas un manifiesto en Git, el objeto antiguo permanece en el clúster y la aplicación aparece como OutOfSync por el sobrante. Activa la eliminación:
spec:
syncPolicy:
automated:
prune: true
Para probarlo, renombra el Deployment en dev/deployment.yaml de webapp a webapp-v2 y haz commit. Argo CD crea el nuevo Deployment y elimina el anterior. En una sincronización manual, puedes hacer prune una vez con argocd app sync webapp-dev --prune, o marcar Prune en el diálogo de sincronización. El pruning elimina objetos reales, así que actívalo de forma deliberada y ten cuidado con los recursos que guardan estado.
Agrega self-heal
La sincronización automatizada reacciona a los cambios en Git. Self-heal también reacciona a los cambios en el clúster:
spec:
syncPolicy:
automated:
prune: true
selfHeal: true
Pruébalo haciendo un cambio manual que Git no conoce:
kubectl scale deployment webapp-v2 -n webapp --replicas=5
kubectl get pods -n webapp -w
Arrancan Pods adicionales y luego Argo CD revierte el Deployment a las dos réplicas declaradas en Git. Ese es el objetivo: que Git siga siendo la única fuente de verdad. Si tu equipo no está listo para que los cambios manuales se reviertan automáticamente, deja selfHeal desactivado. Argo CD seguirá mostrando la aplicación como OutOfSync, así que la desviación sigue siendo visible. Agrega notificaciones si quieres que te avisen.
Revierte de forma segura
Para volver a un estado desplegado anterior, abre la vista History and Rollback de la aplicación, elige una revisión previa y haz rollback. Los equivalentes en la CLI son:
argocd app history webapp-dev
argocd app rollback webapp-dev <ID>
El rollback requiere que la sincronización automatizada esté desactivada. De lo contrario, Argo CD volvería a sincronizar de inmediato la aplicación con el commit más reciente y deshacería el rollback. Desactívala primero con argocd app set webapp-dev --sync-policy none. Después de un rollback, la aplicación queda OutOfSync, porque Git va por delante de lo que se está ejecutando. Trata el rollback como una palanca de emergencia, no como la solución. La solución duradera es hacer git revert del commit defectuoso, hacer push y luego reactivar la sincronización automatizada para que Git y el clúster vuelvan a coincidir.
Guías populares
-
Push vs Pull: cómo entrega Argo CD en Kubernetes Por qué la entrega basada en pull y dirigida por Git cambia cómo despliegas, proteges y recuperas clústeres. -
Configura multiclúster con Argo CD Gestiona despliegues en varios clústeres. -
Despliega tu primera aplicación con un manifiesto declarativo Apunta Argo CD a un repositorio de Git mediante un recurso Application y observa cómo se sincroniza.