Argo CD Argo CD

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.

12 min Principiante

Argo CD se configura con recursos de Kubernetes, como todo lo demás en el clúster. El principal es Application: dice “toma los manifiestos de esta ruta de este repositorio y mantenlos aplicados en este clúster y namespace”. Esta guía crea un pequeño repositorio de configuración, lo registra con un Application y luego modifica Git para ver cómo ocurre la sincronización. Asume que Argo CD está instalado y que puedes iniciar sesión (consulta la guía anterior).

Prepara un repositorio de configuración

Crea un repositorio de Git (en cualquier host al que Argo CD pueda acceder) con esta estructura:

webapp-config/
├── application.yaml      # el Application de Argo CD, aplicado una vez a mano
└── dev/
    ├── deployment.yaml
    └── service.yaml

dev/deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
        - name: webapp
          image: nginx:1.25
          ports:
            - containerPort: 80

dev/service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  selector:
    app: webapp
  ports:
    - port: 80
      targetPort: 80

Los manifiestos omiten deliberadamente el namespace. Argo CD los aplica en el namespace de destino que configures a continuación. Mantén application.yaml fuera de la ruta sincronizada (dev/) para que la aplicación no intente gestionar su propia definición. Si el repositorio es privado, agrega primero las credenciales en Settings → Repositories en la interfaz.

Escribe el manifiesto Application

application.yaml:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: webapp-dev
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/your-org/webapp-config.git
    targetRevision: HEAD
    path: dev
  destination:
    server: https://kubernetes.default.svc
    namespace: webapp
  syncPolicy:
    syncOptions:
      - CreateNamespace=true
    automated:
      prune: true
      selfHeal: true

Las partes importantes:

  • source es donde vive el estado deseado: el repositorio, la revisión a seguir (HEAD sigue la rama predeterminada) y la carpeta dentro de él.
  • destination es donde se aplica. https://kubernetes.default.svc significa “el clúster en el que se ejecuta el propio Argo CD”. Para gestionar un clúster externo, debes registrarlo y usar la dirección de su servidor de API.
  • project: default coloca la aplicación en el proyecto integrado de Argo CD. Los proyectos agrupan aplicaciones y restringen lo que pueden desplegar.
  • syncPolicy activa la sincronización automática y crea el namespace si no existe. Lo que hacen prune y selfHeal tiene su propia guía. Comprueba el apiVersion con la documentación actual, ya que es el campo que más probablemente cambie entre versiones.

Registra la aplicación

Haz commit y push del repositorio, y luego aplica el manifiesto al clúster una sola vez:

kubectl apply -f application.yaml

Idealmente, esta es la última vez que ejecutas kubectl apply para esta aplicación. A partir de aquí, los cambios pasan por Git.

Explora el árbol de recursos

Abre la interfaz. La aplicación webapp-dev aparece y, en unos segundos, pasa a Synced y Healthy. Ábrela para ver el árbol de recursos: el Service, el Deployment, el ReplicaSet que está detrás y dos Pods. Al seleccionar un recurso se muestra su manifiesto en vivo, sus eventos y (para los Pods) sus logs, lo que suele ser más rápido que cambiar a la terminal. Confírmalo también desde el clúster:

kubectl get all -n webapp

Cambia Git y observa la sincronización

Edita dev/deployment.yaml en tu repositorio, cambia la etiqueta de la imagen a nginx:1.26 y haz commit en la rama seguida. Argo CD consulta los repositorios cada tres minutos de forma predeterminada, así que puedes esperar o hacer clic en Refresh en la aplicación para que lo compruebe de inmediato. La aplicación muestra brevemente OutOfSync y luego se despliega un nuevo ReplicaSet. Verifica que el cambio se aplicó:

kubectl get deploy webapp -n webapp \
  -o jsonpath='{.spec.template.spec.containers[0].image}'; echo

Ese es todo el ciclo: editas Git y Argo CD hace converger el clúster. La siguiente guía explica cómo controlar ese comportamiento.

Guías populares