ArgoCD Autogestionado: Beneficios y Buenas Prácticas
- victoriagimenez5
- 5 jun
- 3 Min. de lectura
Actualizado: hace 6 días

respuesta es sí, ArgoCD puede gestionarse a sí mismo. Pero, ¿cómo? Te estarás preguntando. Entonces, lee este TeraTip para saber cómo puedes configurar tu ArgoCD para que se administre por sí solo.
¿Qué es ArgoCD?
ArgoCD es una herramienta de Continuous Delivery basada en GitOps para Kubernetes, y puede ayudarte gestionando todos los recursos de tu clúster al comparar constantemente su estado actual en el clúster contra los repositorios donde están definidos esos recursos.
Primero, crearemos un clúster de Minikube para esta prueba de concepto (PoC):
minikube start
Una vez que tenemos nuestro clúster en funcionamiento, procedamos a instalar ArgoCD en el namespace argocd usando Helm y el chart oficial del proyecto Argo:
helm repo add argo https://argoproj.github.io/argo-helm
helm install argo argo/argo-cd -n argocd
Ahora, es momento de implementar algo conocido como el patrón App of Apps.

¿Qué es el patrón App of Apps?
El patrón App of Apps consiste en tener una aplicación de ArgoCD que a su vez contiene otras aplicaciones de ArgoCD. Puedes tomar como ejemplo este repositorio: https://github.com/JuanWigg/self-managed-argo
Básicamente, tenemos una aplicación principal llamada applications. Esta aplicación principal se sincroniza con nuestro repositorio self-managed-argo, y dentro de ese repositorio están definidas todas las demás aplicaciones que ArgoCD va a gestionar: por ejemplo, una kube-prometheus stack, aplicaciones core, ElasticSearch, etc. Pero lo más importante es que también hay una aplicación para el propio ArgoCD.
La aplicación principal se ve algo así:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: applications
namespace: argocd
spec:
project: default
destination:
namespace: default
server: https://kubernetes.default.svc
source:
repoURL: https://github.com/JuanWigg/self-managed-argo
targetRevision: HEAD
path: applications
syncPolicy:
automated:
prune: false # Specifies if resources should be pruned during auto-syncing ( false by default ).
selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ).
allowEmpty: false # Allows deleting all application resources during automatic syncing ( false by default ).
syncOptions:
- CreateNamespace=true
Como puedes ver, la ruta (path) de esta aplicación es applications, y tenemos esa misma carpeta en nuestro repositorio, donde están definidas todas las aplicaciones que ArgoCD gestionará (incluyéndose a sí mismo).

A modo de ejemplo, aquí está el manifiesto de la aplicación de ArgoCD:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argocd
namespace: argocd
spec:
project: default
destination:
namespace: argocd
server: https://kubernetes.default.svc
source:
chart: argo-cd
repoURL: https://argoproj.github.io/argo-helm
targetRevision: 5.27.1
helm:
releaseName: argo
syncPolicy:
automated:
prune: false # Specifies if resources should be pruned during auto-syncing ( false by default ).
selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ).
allowEmpty: false # Allows deleting all application resources during automatic syncing ( false by default ).
Asegúrate de que la versión (targetRevision) que indiques coincida con la que desplegaste inicialmente con Helm.
Finalmente, necesitas aplicar la aplicación principal en el clúster con:
kubectl apply -f applications.yaml
¡Y listo! Ahora tienes a ArgoCD gestionándose a sí mismo y gestionando todas tus aplicaciones en el clúster.

Juan Wiggenhauser
Cloud Engineer
Teracloud
Para aprender más sobre computación en la nube, visitá nuestro blog y descubrí insights de primera mano de nuestro equipo. Si necesitás un equipo certificado por AWS para desplegar, escalar o aprovisionar tus recursos en la nube sin fricciones, escribinos acá.