GitOps
ArgoCD
Kubernetes
CI/CD
Deploy Declarativo
Infraestrutura como Código
Fluxo de Trabalho
Observabilidade
Helm
Kustomize

GitOps avec ArgoCD : automatisation du déploiement déclaratif

GitOps avec ArgoCD : automatisation du déploiement déclaratif

GitOps consiste à gérer l'infrastructure et les déploiements à partir de référentiels Git, en traitant le référentiel comme la source unique de vérité. ArgoCD est le principal outil permettant d'appliquer ce modèle aux clusters Kubernetes], offrant une synchronisation automatique, une visualisation des différences et un audit complet.

Pourquoi adopter GitOps ?

  • Cohérence, l'état souhaité est versionné dans Git ; tout écart peut être inversé.
  • Audit, chaque modification a un historique de validation, d'auteur et de révision.
  • Restauration instantanée, annulez simplement le commit et ArgoCD réconcilie le cluster.
  • Collaboration, les pull-requests permettent d'examiner les modifications infra avant de postuler.

Architecture de base d'ArgoCD

  1. Repository Server, stocke les manifestes (YAML, Helm, Kustomize).
  2. Application Controller, compare l'état du cluster avec le manifeste Git et applique les différences.
  3. API Server, expose l'interface utilisateur et l'API REST pour la gestion.
  4. Dex / SSO, intégration avec les fournisseurs d'identité (GitHub, Okta).

Le flux de travail est simple : ArgoCD Controller crée git pull à partir du référentiel, applique les manifestes au cluster Kubernetes via kubectl apply et lit en permanence l'état du cluster pour le comparer avec l'état souhaité. Les utilisateurs interagissent avec le contrôleur via l'interface utilisateur ou l'API. Ainsi, le référentiel reste la source unique de vérité et le cluster est automatiquement synchronisé.

Configuration du référentiel

La structure recommandée sépare une couche base/, avec des ressources partagées en namespace.yaml et rbac.yaml, d'une couche apps/, dans laquelle chaque application (par exemple, frontend et backend) possède ses propres kustomization.yaml et deployment.yaml. Kustomize vous permet de remplacer les configurations par environnement (dev, staging, prod) sans dupliquer les manifestes.

Manifeste d'application ArgoCD (YAML), 7 lignes

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: default source: repoURL: https://github.com/yourorg/infra.git targetRevision: HEAD path: apps/frontend destination: server: https://kubernetes.default.svc namespace: production syncPolicy: automated: prune: true selfHeal: true

syncPolicy.automated permet la synchronisation et le nettoyage automatiques des ressources obsolètes.

Stratégies de synchronisation

  • Automatique, idéal pour les environnements de développement où la vitesse est critique.
  • Manuel (piloté par les relations publiques), pour la production, où chaque modification est examinée avant d'être appliquée.
  • Hooks, scripts qui s'exécutent avant ou après la synchronisation (ex : migrations de bases de données).

Observabilité et audit

  • UI, affiche la différence entre l'état souhaité et réel, avec le bouton « Sync ».
  • Webhooks, informe Slack/Teams des événements de synchronisation ou d'échec.
  • Metrics, expose les métriques Prometheus (argocd_app_sync_total, argocd_app_health_status).
  • Logs, centralisez avec Loki ou Elasticsearch pour suivre les actions.

Sécurité

  • RBAC, définissez les rôles (admin, read-only, dev) dans l'espace de noms argocd.
  • SSO, intégration avec OAuth2/OIDC (GitHub, Google, Okta).
  • TLS mutuel, entre ArgoCD et le serveur API Kubernetes.
  • Politique de protection des succursales, exige des examens et des vérifications de statut avant la fusion.

Liste de contrôle de mise en œuvre

  • Créez un dépôt Git avec la structure base/ et apps/.
  • Installez ArgoCD (kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml).
  • Configurez SSO/Dex pour l'authentification d'entreprise.
  • Définir les CRD d'application pour chaque micro-service.
  • Activez syncPolicy.automated dans les environnements de test.
  • Configurez les alertes dans Prometheus/Alertmanager pour les échecs de synchronisation.
  • Flux de relations publiques de documents → Fusionner → Sync.

Conclusion

GitOps avec ArgoCD apporte le contrôle de version, la auditabilité et l'automatisation à la fourniture d'applications Kubernetes. En suivant les meilleures pratiques en matière de structure, de sécurité et d'observabilité du référentiel, votre équipe peut déployer les modifications en toute confiance et rapidement.


Vous utilisez déjà ArgoCD ? Partagez vos astuces et défis dans les commentaires !

A lire aussi