Skip to main content

Mise à jour d'Argo CD (Guide Générique & Bonnes Pratiques)

Ce guide détaille la procédure standard pour mettre à jour Argo CD de manière sécurisée. Depuis la version 3.3, l'augmentation de la taille des Custom Resource Definitions (CRDs) impose l'utilisation du Server-Side Apply pour éviter l'erreur metadata.annotations: Too long.


Étape 1 : Sauvegarde de précaution (Backup)

Bien qu'Argo CD soit "stateless" (puisque l'état réel est dans Git), il est toujours recommandé de sauvegarder la configuration actuelle, notamment si vous gérez des clusters externes ou des secrets locaux.

# Sauvegarder toutes les ressources du namespace argocd dans un fichier
kubectl get all,secret,configmap,crd -n argocd -o yaml > argocd_backup_pre_upgrade.yaml

Étape 2 : Définir la version cible

Vérifiez la dernière version stable sur le dépôt GitHub officiel d'Argo CD et définissez-la dans une variable d'environnement pour simplifier les commandes suivantes.

export ARGOCD_VERSION="v3.4.1"

Étape 3 : Application de la mise à jour (Server-Side Apply)

Attention : N'utilisez plus la commande classique kubectl apply -f. Vous devez obligatoirement utiliser les drapeaux --server-side et --force-conflicts.

# Mise à jour des manifests officiels avec gestion des conflits côté serveur
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/${ARGOCD_VERSION}/manifests/install.yaml
Note : Si vous utilisez Argo CD en mode "High Availability" (HA), remplacez install.yaml par ha/install.yaml.

Étape 4 : Validation et nettoyage

Vérifiez que les nouveaux pods se lancent correctement et remplacent les anciens.

# Surveiller le déploiement des nouveaux pods
kubectl get pods -n argocd -w

Une fois que tous les pods sont en statut Running, vérifiez la version installée via l'interface web ou via l'outil en ligne de commande :

argocd version --client

Cas particulier : Argo CD "gère" Argo CD (Self-Managed)

Si vous utilisez Argo CD pour mettre à jour Argo CD lui-même via un manifeste Application, vous devez explicitement activer le Server-Side Apply dans le fichier YAML de l'Application :

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: argocd
  namespace: argocd
spec:
  syncPolicy:
    syncOptions:
      - ServerSideApply=true # <-- Requis depuis la v3.3