Argo CD Argo CD

Déployer votre première application avec un manifeste déclaratif

Pointez Argo CD vers un dépôt Git à l'aide d'une ressource Application et regardez-le se synchroniser.

12 min Débutant

Argo CD se configure avec des ressources Kubernetes, comme tout le reste du cluster. La ressource centrale est Application : elle dit « prends les manifestes situés à ce chemin de ce dépôt et maintiens-les appliqués sur ce cluster et ce namespace ». Ce guide crée un petit dépôt de configuration, l’enregistre avec une Application, puis modifie Git pour voir la synchronisation se produire. Il suppose qu’Argo CD est installé et que vous pouvez vous connecter (voir le guide précédent).

Préparer un dépôt de configuration

Créez un dépôt Git (sur n’importe quel hébergeur qu’Argo CD peut atteindre) avec cette arborescence :

webapp-config/
├── application.yaml      # l'Application Argo CD, appliquée une fois à la main
└── 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

Les manifestes omettent volontairement un namespace. Argo CD les applique dans le namespace de destination que vous configurez ensuite. Gardez application.yaml en dehors du chemin synchronisé (dev/) pour que l’application n’essaie pas de gérer sa propre définition. Si le dépôt est privé, ajoutez d’abord les identifiants dans Settings → Repositories de l’interface.

Écrire le manifeste 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

Les éléments qui comptent :

  • source est l’endroit où vit l’état souhaité : le dépôt, la révision à suivre (HEAD suit la branche par défaut) et le dossier à l’intérieur.
  • destination est l’endroit où il est appliqué. https://kubernetes.default.svc signifie « le cluster dans lequel Argo CD s’exécute lui-même ». Pour gérer un cluster externe, il faut l’enregistrer et utiliser à la place l’adresse de son API server.
  • project: default place l’application dans le projet intégré d’Argo CD. Les projets regroupent les applications et restreignent ce qu’elles peuvent déployer.
  • syncPolicy active la synchronisation automatique et crée le namespace s’il n’existe pas. Le rôle de prune et selfHeal fait l’objet de son propre guide. Vérifiez l’apiVersion dans la documentation actuelle, car c’est le champ le plus susceptible de changer d’une release à l’autre.

Enregistrer l’application

Commitez et poussez le dépôt, puis appliquez une seule fois le manifeste au cluster :

kubectl apply -f application.yaml

Idéalement, c’est la dernière fois que vous exécutez kubectl apply pour cette application. À partir de maintenant, les changements passent par Git.

Explorer l’arbre des ressources

Ouvrez l’interface. L’application webapp-dev apparaît et, en quelques secondes, passe à Synced et Healthy. Ouvrez-la pour voir l’arbre des ressources : le Service, le Deployment, le ReplicaSet qui en dépend et deux Pods. Sélectionner une ressource affiche son manifeste en direct, ses événements et (pour les Pods) ses logs, ce qui est souvent plus rapide que de passer au terminal. Confirmez aussi depuis le cluster :

kubectl get all -n webapp

Modifier Git et regarder la synchronisation

Éditez dev/deployment.yaml dans votre dépôt en changeant le tag de l’image pour nginx:1.26, puis commitez sur la branche suivie. Argo CD interroge les dépôts toutes les trois minutes par défaut : attendez donc, ou cliquez sur Refresh sur l’application pour qu’il vérifie immédiatement. L’application affiche brièvement OutOfSync, puis un nouveau ReplicaSet se déploie. Vérifiez que le changement est arrivé :

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

Voilà toute la boucle : vous modifiez Git, Argo CD fait converger le cluster. Le guide suivant explique comment contrôler ce comportement.

Guides populaires