

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Concepts d'Argo CD
<a name="argocd-concepts"></a>

Argo CD implémente Git GitOps en considérant Git comme la seule source fiable pour vos déploiements d'applications. Cette rubrique présente un exemple pratique, puis explique les concepts de base que vous devez comprendre lorsque vous travaillez avec l'EKS Capability for Argo CD.

## Commencer à utiliser Argo CD
<a name="_getting_started_with_argo_cd"></a>

Après avoir créé la fonctionnalité Argo CD (voir[Création d’une fonctionnalité Argo CD](create-argocd-capability.md)), vous pouvez commencer à déployer des applications. Cet exemple décrit l'enregistrement d'un cluster et la création d'une application.

### Étape 1 : Configurer
<a name="_step_1_set_up"></a>

 **Enregistrez votre cluster** (obligatoire)

Enregistrez le cluster dans lequel vous souhaitez déployer des applications. Dans cet exemple, nous allons enregistrer le même cluster sur lequel Argo CD est exécuté (vous pouvez utiliser le nom `in-cluster` pour des raisons de compatibilité avec la plupart des exemples d'Argo CD) :

```
# Get your cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster using Argo CD CLI
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default
```

**Note**  
Pour plus d'informations sur la configuration de l'Argo CD CLI pour qu'elle fonctionne avec la fonctionnalité Argo CD dans EKS, consultez. [Utilisation de l'Argo CD CLI avec la fonctionnalité gérée](argocd-comparison.md#argocd-cli-configuration)

Vous pouvez également enregistrer le cluster à l'aide d'un secret Kubernetes (voir [Enregistrer les clusters cibles](argocd-register-clusters.md) pour plus de détails).

 **Configurer l'accès au référentiel** (facultatif)

Cet exemple utilise un GitHub référentiel public, aucune configuration de référentiel n'est donc requise. Pour les référentiels privés, configurez l'accès à l'aide de AWS Secrets Manager ou de Kubernetes Secrets (voir [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails). CodeConnections

Pour les AWS services (ECR pour les graphiques Helm CodeConnections, et CodeCommit), vous pouvez les référencer directement dans les ressources de l'application sans créer de référentiel. Le rôle de capacité doit disposer des autorisations IAM requises. Consultez [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails.

### Étape 2 : Créer une application
<a name="_step_2_create_an_application"></a>

Créez ce manifeste d'application dans `my-app.yaml` :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

Appliquez l'application :

```
kubectl apply -f my-app.yaml
```

Après avoir appliqué cette application, Argo CD : 1. Synchronise l'application de Git avec votre cluster (déploiement initial) 2. Surveille les modifications apportées au dépôt Git 3. Synchronise automatiquement les modifications ultérieures sur votre cluster 4. Détecte et corrige toute dérive par rapport à l'état souhaité 5. Fournit l'état de santé et l'historique de synchronisation dans l'interface utilisateur

Consultez le statut de la demande :

```
kubectl get application guestbook -n argocd
```

Vous pouvez également afficher l'application à l'aide de l'interface de ligne de commande Argo CD ou de l'interface utilisateur du CD Argo (accessible depuis la console EKS sous l'onglet Capabilities de votre cluster).

**Note**  
Lorsque vous utilisez l'Argo CD CLI avec la fonctionnalité gérée, spécifiez les applications avec le préfixe d'espace de noms :. `argocd app get argocd/guestbook`

**Note**  
Utilisez le nom du cluster dans `destination.name` (le nom que vous avez utilisé lors de l'enregistrement du cluster). La fonctionnalité gérée ne prend pas en charge la valeur par défaut locale au sein du cluster (`kubernetes.default.svc`).

## Concepts de base
<a name="_core_concepts"></a>

### GitOps principes et types de sources
<a name="_gitops_principles_and_source_types"></a>

Argo CD implémente GitOps, où la source de votre application est la seule source fiable pour les déploiements :
+  **Déclaratif** - L'état souhaité est déclaré à l'aide de manifestes YAML, de graphiques Helm ou de superpositions Kustomize
+  **Versionné** : chaque modification est suivie grâce à une piste d'audit complète
+  **Automatisé** : Argo CD surveille en permanence les sources et synchronise automatiquement les modifications
+  **Autoréparation** : détecte et corrige le décalage entre l'état souhaité et l'état réel du cluster

 **Types de sources pris** en charge :
+  **Référentiels Git** - GitHub GitLab, Bitbucket, CodeCommit (HTTPS, SSH ou) CodeConnections
+  **Registres Helm : registres** HTTP (similaires`https://aws.github.io/eks-charts`) et registres OCI (similaires) `public.ecr.aws`
+  Images **OCI : images** de conteneurs contenant des manifestes ou des diagrammes Helm (similaires`oci://registry-1.docker.io/user/my-app`)

Cette flexibilité permet aux entreprises de choisir les sources qui répondent à leurs exigences de sécurité et de conformité. Par exemple, les organisations qui limitent l'accès à Git depuis les clusters peuvent utiliser l'ECR pour les diagrammes Helm ou les images OCI.

Pour plus d'informations, consultez la section [Sources d'applications](https://argo-cd.readthedocs.io/en/stable/user-guide/application-sources/) dans la documentation Argo CD.

### Synchronisation et réconciliation
<a name="_sync_and_reconciliation"></a>

Argo CD surveille en permanence vos sources et vos clusters afin de détecter et de corriger les différences :

1. Interroge les sources pour connaître les modifications (par défaut : toutes les 6 minutes)

1. Compare l'état souhaité avec l'état du cluster

1. Marque les applications comme `Synced` ou `OutOfSync` 

1. Synchronise les modifications automatiquement (si elles sont configurées) ou attend une approbation manuelle

1. Surveille l'état des ressources après la synchronisation

 **Les ondes de synchronisation** contrôlent l'ordre de création des ressources à l'aide d'annotations :

```
metadata:
  annotations:
    argocd.argoproj.io/sync-wave: "0"  # Default if not specified
```

Les ressources sont appliquées par ordre de vague (les nombres les plus bas d'abord, y compris les nombres négatifs comme`-1`). Wave `0` est la valeur par défaut si elle n'est pas spécifiée. Cela vous permet de créer des dépendances telles que des espaces de noms (wave`-1`) avant les déploiements (wave`0`) avant les services (wave`1`).

 **L'autoréparation** annule automatiquement les modifications manuelles :

```
spec:
  syncPolicy:
    automated:
      selfHeal: true
```

**Note**  
La fonctionnalité gérée utilise le suivi des ressources basé sur les annotations (et non sur les étiquettes) pour une meilleure compatibilité avec les conventions Kubernetes et les autres outils.

Pour des informations détaillées sur les phases de synchronisation, les hooks et les modèles avancés, consultez la [documentation de synchronisation Argo CD](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/).

### État de santé des applications
<a name="_application_health"></a>

Argo CD surveille l'état de toutes les ressources de votre application :

 **État de santé :\*** **Sain** - Toutes les ressources fonctionnent comme prévu \* **Progression** - Ressources en cours de création ou de mise à jour \* **Dégradée** - Certaines ressources ne sont pas saines (pods tombent en panne, tâches échouent) \* **Suspendue** - Application interrompue intentionnellement \* **Manquante** - Les ressources définies dans Git ne sont pas présentes dans le cluster

Argo CD intègre des contrôles de santé pour les ressources Kubernetes courantes (déploiements, tâches StatefulSets, etc.) et prend en charge les contrôles de santé personnalisés pour. CRDs

L'état de santé de l'application est déterminé par toutes ses ressources. Si une ressource l'est`Degraded`, c'est bien l'application qui l'est`Degraded`.

Pour plus d'informations, consultez [Resource Health](https://argo-cd.readthedocs.io/en/stable/operator-manual/health/) dans la documentation d'Argo CD.

### Modèles multi-clusters
<a name="_multi_cluster_patterns"></a>

Argo CD prend en charge deux modèles de déploiement principaux :

 **H ub-and-spoke** - Exécutez Argo CD sur un cluster de gestion dédié qui se déploie sur plusieurs clusters de charge de travail :\* Contrôle et visibilité centralisés \* Politiques cohérentes sur tous les clusters \* Une instance Argo CD à gérer \* Séparation claire entre le plan de contrôle et les charges de travail

 **Par cluster** : exécutez Argo CD sur chaque cluster, en gérant uniquement les applications de ce cluster :\* Séparation des clusters (une défaillance n'affecte pas les autres) \* Simplification du réseau (aucune communication entre clusters) \* Configuration initiale plus facile (pas d'enregistrement du cluster)

Choisissez hub-and-spoke pour les équipes de plateforme qui gèrent de nombreux clusters, ou par cluster pour les équipes indépendantes ou lorsque les clusters doivent être complètement isolés.

Pour une configuration multicluster détaillée, voir[Considérations relatives à Argo CD](argocd-considerations.md).

### Projets
<a name="_projects"></a>

Les projets fournissent un regroupement logique et un contrôle d'accès pour les applications :
+  **Restrictions relatives aux sources** - Limitez les référentiels Git pouvant être utilisés
+  **Restrictions de destination** : limitez les clusters et les espaces de noms pouvant être ciblés
+  **Restrictions de ressources** : limitez les types de ressources Kubernetes pouvant être déployés
+  **Intégration RBAC : associez** les projets à l'utilisateur et au groupe AWS Identity Center IDs

Les candidatures appartiennent à un seul projet. S'il n'est pas spécifié, ils utilisent le `default` projet, qui n'est soumis à aucune restriction par défaut. Pour une utilisation en production, modifiez le `default` projet pour en restreindre l'accès et créez de nouveaux projets avec les restrictions appropriées.

Pour la configuration du projet et les modèles RBAC, voir[Configurer les autorisations d'Argo CD](argocd-permissions.md).

### Options de synchronisation
<a name="_sync_options"></a>

Ajustez le comportement de synchronisation à l'aide des options courantes :
+  `CreateNamespace=true`- Création automatique d'un espace de noms de destination
+  `ServerSideApply=true`- Utilisez l'application côté serveur pour une meilleure résolution des conflits
+  `SkipDryRunOnMissingResource=true`- Ignorez l'exécution à sec lorsque cela CRDs n'existe pas encore (utile pour les instances Kro)

```
spec:
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
    - ServerSideApply=true
    - SkipDryRunOnMissingResource=true
```

Pour une liste complète des options de synchronisation, consultez la [documentation des options de synchronisation Argo CD](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/).

## Étapes suivantes
<a name="_next_steps"></a>
+  [Configuration de l'accès au référentiel](argocd-configure-repositories.md)- Configurer l'accès au dépôt Git
+  [Enregistrer les clusters cibles](argocd-register-clusters.md)- Enregistrez les clusters cibles pour le déploiement
+  [Création d'applications](argocd-create-application.md)- Créez votre première application
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Modèles spécifiques à EKS, intégration d'Identity Center et configuration multi-clusters
+  Documentation [Argo CD - Documentation](https://argo-cd.readthedocs.io/en/stable/) complète sur Argo CD, y compris les crochets de synchronisation, les contrôles de santé et les modèles avancés