top of page

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á.


 
 
bottom of page