

 **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.

# Déploiement continu avec Argo CD
<a name="argocd"></a>

Argo CD est un outil de diffusion GitOps continue déclaratif pour Kubernetes. Avec Argo CD, vous pouvez automatiser le déploiement et la gestion du cycle de vie de vos applications sur plusieurs clusters et environnements. Argo CD prend en charge plusieurs types de sources, notamment les référentiels Git, les registres Helm (HTTP et OCI) et les images OCI, offrant ainsi de la flexibilité aux entreprises ayant des exigences de sécurité et de conformité différentes.

Grâce aux fonctionnalités d'EKS, Argo CD est entièrement géré par AWS, ce qui élimine le besoin d'installer, de maintenir et de dimensionner les contrôleurs Argo CD et leurs dépendances vis-à-vis de vos clusters.

## Comment fonctionne Argo CD
<a name="_how_argo_cd_works"></a>

Argo CD suit le GitOps modèle selon lequel la source de votre application (dépôt Git, registre Helm ou image OCI) est la source fiable pour définir l'état souhaité de l'application. Lorsque vous créez une `Application` ressource Argo CD, vous spécifiez la source contenant les manifestes de votre application ainsi que le cluster et l'espace de noms Kubernetes cibles. Argo CD surveille en permanence l'état source et l'état réel du cluster, synchronisant automatiquement les modifications pour s'assurer que l'état du cluster correspond à l'état souhaité.

**Note**  
Grâce à la fonctionnalité EKS pour Argo CD, le logiciel Argo CD s'exécute dans le plan de AWS contrôle, et non sur vos nœuds de travail. Cela signifie que vos nœuds de travail n'ont pas besoin d'un accès direct aux référentiels Git ou aux registres Helm : la fonctionnalité gère l'accès aux sources depuis le compte. AWS 

Argo CD fournit trois types de ressources principaux :
+  **Application** : définit un déploiement depuis un dépôt Git vers un cluster cible
+  **ApplicationSet**: Génère plusieurs applications à partir de modèles pour les déploiements multi-clusters
+  **AppProject**: fournit un regroupement logique et un contrôle d'accès pour les applications

 **Exemple : création d'une application Argo CD** 

L'exemple suivant montre comment créer une `Application` ressource Argo CD :

```
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
```

**Note**  
`destination.name`À utiliser avec le nom du cluster que vous avez utilisé lors de l'enregistrement du cluster (comme `in-cluster` pour le cluster local). Le `destination.server` champ fonctionne également avec le cluster EKS ARNs, mais il est recommandé d'utiliser des noms de clusters pour une meilleure lisibilité.

## Avantages d'Argo CD
<a name="_benefits_of_argo_cd"></a>

Argo CD implémente un GitOps flux de travail dans lequel vous définissez les configurations de vos applications dans les référentiels Git et Argo CD synchronise automatiquement vos applications pour qu'elles correspondent à l'état souhaité. Cette approche centrée sur le GIT fournit une piste d'audit complète de toutes les modifications, permet des annulations faciles et s'intègre naturellement à vos processus de révision et d'approbation de code existants. Argo CD détecte et réconcilie automatiquement la dérive entre l'état souhaité dans Git et l'état réel dans vos clusters, garantissant ainsi la cohérence de vos déploiements avec votre configuration déclarée.

Avec Argo CD, vous pouvez déployer et gérer des applications sur plusieurs clusters à partir d'une seule instance Argo CD, ce qui simplifie les opérations dans les environnements multiclusters et multirégions. L'interface utilisateur d'Argo CD fournit des fonctionnalités de visualisation et de surveillance, vous permettant de visualiser l'état de déploiement, l'état de santé et l'historique de vos applications. L'interface utilisateur s'intègre à AWS Identity Center (anciennement AWS SSO) pour une authentification et une autorisation fluides, vous permettant de contrôler l'accès à l'aide de votre infrastructure de gestion des identités existante.

Dans le cadre des fonctionnalités gérées par EKS, Argo CD est entièrement géré par AWS, ce qui élimine le besoin d'installer, de configurer et de maintenir l'infrastructure Argo CD. AWS gère le dimensionnement, l'application de correctifs et la gestion opérationnelle, permettant à vos équipes de se concentrer sur la livraison des applications plutôt que sur la maintenance des outils.

## Intégration à AWS Identity Center
<a name="integration_with_shared_aws_identity_center"></a>

EKS Managed Capabilities fournit une intégration directe entre Argo CD et AWS Identity Center, permettant ainsi une authentification et une autorisation fluides pour vos utilisateurs. Lorsque vous activez la fonctionnalité Argo CD, vous pouvez configurer l'intégration AWS d'Identity Center pour mapper les groupes et les utilisateurs d'Identity Center aux rôles RBAC d'Argo CD, ce qui vous permet de contrôler qui peut accéder aux applications dans Argo CD et les gérer.

## Intégration avec d'autres fonctionnalités gérées par EKS
<a name="_integration_with_other_eks_managed_capabilities"></a>

Argo CD s'intègre aux autres fonctionnalités gérées par EKS.
+  ** AWS Contrôleurs pour Kubernetes (ACK)** : utilisez Argo CD pour gérer le déploiement des ressources ACK sur plusieurs clusters, en activant les GitOps flux de travail pour votre infrastructure. AWS 
+  **kro (Kube Resource Orchestrator)** : utilisez Argo CD pour déployer des compositions kro sur plusieurs clusters, permettant ainsi une composition cohérente des ressources dans l'ensemble de votre parc Kubernetes.

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

Pour commencer à utiliser la fonctionnalité EKS pour Argo CD :

1. Créez et configurez un rôle de capacité IAM avec les autorisations nécessaires pour qu'Argo CD puisse accéder à vos sources et gérer les applications.

1.  [Créez une ressource de capacité Argo CD](create-argocd-capability.md) sur votre cluster EKS via la AWS console, la AWS CLI ou votre infrastructure préférée en tant qu'outil de code.

1. Configurez l'accès au référentiel et enregistrez les clusters pour le déploiement des applications.

1. Créez des ressources d'application pour déployer vos applications à partir de vos sources déclaratives.

# Création d’une fonctionnalité Argo CD
<a name="create-argocd-capability"></a>

Cette rubrique explique comment créer une fonctionnalité Argo CD sur votre cluster Amazon EKS.

## Conditions préalables
<a name="_prerequisites"></a>

Avant de créer une fonctionnalité Argo CD, assurez-vous de disposer des éléments suivants :
+ Un cluster Amazon EKS existant exécutant une version de Kubernetes prise en charge (toutes les versions du support standard et étendu sont prises en charge)
+  ** AWS Identity Center configuré** - Nécessaire pour l'authentification sur Argo CD (les utilisateurs locaux ne sont pas pris en charge)
+ Un rôle de capacité IAM avec des autorisations pour Argo CD
+ Autorisations IAM suffisantes pour créer des ressources de capacités sur les clusters EKS
+  `kubectl`configuré pour communiquer avec votre cluster
+ (Facultatif) L'Argo CD CLI est installée pour faciliter la gestion des clusters et des référentiels
+ (Pour CLI/ekSCTL) L'outil CLI approprié est installé et configuré

Pour obtenir des instructions sur la création du rôle de capacité IAM, consultez[Fonctionnalité Amazon EKS : rôle IAM](capability-role.md). Pour la configuration d'Identity Center, consultez [Getting Started with AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html).

**Important**  
Le rôle de capacité IAM que vous fournissez détermine les AWS ressources auxquelles Argo CD peut accéder. Cela inclut l'accès au dépôt Git via CodeConnections et les secrets dans Secrets Manager. Pour obtenir des conseils sur la création d'un rôle approprié avec des autorisations de moindre privilège, consultez [Fonctionnalité Amazon EKS : rôle IAM](capability-role.md) et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

## Choisissez votre outil
<a name="_choose_your_tool"></a>

Vous pouvez créer une fonctionnalité Argo CD à l'aide de la AWS Management Console AWS CLI ou de eksctl :
+  [Création d'une fonctionnalité Argo CD à l'aide de la console](argocd-create-console.md)- Utilisez la console pour une expérience guidée
+  [Création d'une fonctionnalité Argo CD à l'aide de la CLI AWS](argocd-create-cli.md)- Utilisez la AWS CLI pour la création de scripts et l'automatisation
+  [Création d'une fonctionnalité Argo CD à l'aide de eksctl](argocd-create-eksctl.md)- Utilisez eksctl pour une expérience native de Kubernetes

## Que se passe-t-il lorsque vous créez une fonctionnalité Argo CD
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

Lorsque vous créez une fonctionnalité Argo CD :

1. EKS crée le service de capacité Argo CD dans le plan de AWS contrôle

1. Des définitions de ressources personnalisées (CRDs) sont installées dans votre cluster

1. Une entrée d'accès est automatiquement créée pour votre rôle de capacité IAM avec des politiques d'entrée d'accès spécifiques aux fonctionnalités qui accordent des autorisations Kubernetes de base (voir) [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

1. Argo CD commence à rechercher ses ressources personnalisées (Applications, ApplicationSets, AppProjects)

1. L'état de capacité passe de `CREATING` à `ACTIVE` 

1. L'interface utilisateur d'Argo CD devient accessible via son URL

Une fois actives, vous pouvez créer des applications Argo CD dans votre cluster pour les déployer à partir de vos sources déclaratives.

**Note**  
L'entrée d'accès créée automatiquement n'accorde pas l'autorisation de déployer des applications sur des clusters. Pour déployer des applications, vous devez configurer des autorisations Kubernetes RBAC supplémentaires pour chaque cluster cible. Consultez [Enregistrer les clusters cibles](argocd-register-clusters.md) pour plus de détails sur l'enregistrement des clusters et la configuration de l'accès.

## Étapes suivantes
<a name="_next_steps"></a>

Après avoir créé la fonctionnalité Argo CD :
+  [Concepts d'Argo CD](argocd-concepts.md)- Découvrez GitOps les principes, les politiques de synchronisation et les modèles multi-clusters
+  [Travailler avec Argo CD](working-with-argocd.md)- Configurer l'accès au référentiel, enregistrer les clusters cibles et créer des applications
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Explorez les modèles d'architecture multi-clusters et la configuration avancée

# Création d'une fonctionnalité Argo CD à l'aide de la console
<a name="argocd-create-console"></a>

Cette rubrique décrit comment créer une fonctionnalité Argo CD à l'aide du AWS Management Console.

## Conditions préalables
<a name="_prerequisites"></a>
+  ** AWS Identity Center configuré** : Argo CD nécessite AWS Identity Center pour l'authentification. Les utilisateurs locaux ne sont pas pris en charge. Si AWS Identity Center n'est pas configuré, consultez [Commencer à utiliser AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) pour créer une instance d'Identity Center, et [Ajouter des utilisateurs et Ajouter](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) [des groupes](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) pour créer des utilisateurs et des groupes pour accéder à Argo CD.

## Création de la fonctionnalité Argo CD
<a name="_create_the_argo_cd_capability"></a>

1. Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Sélectionnez le nom de votre cluster pour ouvrir la page détaillée du cluster.

1. Choisissez l'onglet **Fonctionnalités**.

1. Dans le menu de navigation de gauche, choisissez **Argo CD**.

1. Choisissez la **fonctionnalité Create Argo CD.**

1. Pour le **rôle de capacité IAM** :
   + Si vous possédez déjà un rôle de capacité IAM, sélectionnez-le dans le menu déroulant
   + Si vous devez créer un rôle, choisissez **Créer un rôle Argo CD** 

     Cela ouvre la console IAM dans un nouvel onglet avec une politique de confiance préremplie et un accès complet en lecture à Secrets Manager. Aucune autre autorisation n'est ajoutée par défaut, mais vous pouvez les ajouter si nécessaire. Si vous prévoyez d'utiliser CodeCommit des référentiels ou d'autres AWS services, ajoutez les autorisations appropriées avant de créer le rôle.

     Après avoir créé le rôle, retournez à la console EKS et le rôle sera automatiquement sélectionné.
**Note**  
Si vous envisagez d'utiliser les intégrations facultatives avec AWS Secrets Manager or AWS CodeConnections, vous devrez ajouter des autorisations au rôle. Pour des exemples de politique IAM et des conseils de configuration, reportez-vous aux sections [Gérez les secrets des applications avec AWS Secrets Manager](integration-secrets-manager.md) et[Connectez-vous aux référentiels Git avec AWS CodeConnections](integration-codeconnections.md).

1. Configurer AWS l'intégration d'Identity Center :

   1. Sélectionnez **Activer AWS l'intégration d'Identity Center**.

   1. Choisissez votre instance Identity Center dans le menu déroulant.

   1. Configurez les mappages de rôles pour RBAC en affectant des utilisateurs ou des groupes à des rôles Argo CD (ADMIN, EDITOR ou VIEWER)

1. Choisissez **Créer**.

Le processus de création de capacités commence.

## Vérifiez que la fonctionnalité est active
<a name="_verify_the_capability_is_active"></a>

1. Dans l'onglet **Fonctionnalités**, consultez l'état des capacités de l'Argo CD.

1. Attendez que le statut passe de `CREATING` à`ACTIVE`.

1. Une fois active, la fonctionnalité est prête à être utilisée.

Pour plus d'informations sur l'état des fonctionnalités et la résolution des problèmes, consultez[Utilisation des ressources en matière de capacités](working-with-capabilities.md).

## Accédez à l'interface utilisateur d'Argo CD
<a name="_access_the_argo_cd_ui"></a>

Une fois la fonctionnalité activée, vous pouvez accéder à l'interface utilisateur d'Argo CD :

1. Sur la page des fonctionnalités d'Argo CD, choisissez **Ouvrir l'interface utilisateur d'Argo CD**.

1. L'interface utilisateur d'Argo CD s'ouvre dans un nouvel onglet du navigateur.

1. Vous pouvez désormais créer des applications et gérer les déploiements via l'interface utilisateur.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Travailler avec Argo CD](working-with-argocd.md)- Configurer des référentiels, enregistrer des clusters et créer des applications
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Architecture multi-clusters et configuration avancée
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez vos ressources de capacités Argo CD

# Création d'une fonctionnalité Argo CD à l'aide de la CLI AWS
<a name="argocd-create-cli"></a>

Cette rubrique décrit comment créer une fonctionnalité Argo CD à l'aide de la AWS CLI.

## Conditions préalables
<a name="_prerequisites"></a>
+  ** AWS CLI** : version `2.12.3` ou ultérieure. Pour vérifier votre version, lancez`aws --version`. Pour plus d'informations, consultez la section [Installation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) dans le guide de l'utilisateur de l'interface de ligne de AWS commande.
+  ** `kubectl` ** : outil de ligne de commande pour travailler avec des clusters Kubernetes. Pour de plus amples informations, veuillez consulter [Configuration de `kubectl` et `eksctl`](install-kubectl.md).
+  ** AWS Identity Center configuré** : Argo CD nécessite AWS Identity Center pour l'authentification. Les utilisateurs locaux ne sont pas pris en charge. Si AWS Identity Center n'est pas configuré, consultez [Commencer à utiliser AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) pour créer une instance d'Identity Center, et [Ajouter des utilisateurs et Ajouter](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) [des groupes](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) pour créer des utilisateurs et des groupes pour accéder à Argo CD.

## Étape 1 : Création d'un rôle de capacité IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Créez un fichier de politique de confiance :

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Créez le rôle IAM :

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**Note**  
Si vous envisagez d'utiliser les intégrations facultatives avec AWS Secrets Manager or AWS CodeConnections, vous devrez ajouter des autorisations au rôle. Pour des exemples de politique IAM et des conseils de configuration, reportez-vous aux sections [Gérez les secrets des applications avec AWS Secrets Manager](integration-secrets-manager.md) et[Connectez-vous aux référentiels Git avec AWS CodeConnections](integration-codeconnections.md).

## Étape 2 : Création de la fonctionnalité Argo CD
<a name="_step_2_create_the_argo_cd_capability"></a>

Créez la ressource de capacité Argo CD sur votre cluster.

Définissez d'abord les variables d'environnement pour la configuration de votre Identity Center :

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

Créez la fonctionnalité grâce à l'intégration d'Identity Center. *region-code*Remplacez-le par la AWS région où se trouve votre cluster, *my-cluster* par le nom de votre cluster et *idc-region-code* par le code de région dans lequel votre centre d'identité IAM a été configuré :

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

La commande revient immédiatement, mais la fonctionnalité met un certain temps à devenir active car EKS crée l'infrastructure et les composants de capacité requis. EKS installera les définitions de ressources personnalisées Kubernetes associées à cette fonctionnalité dans votre cluster lors de sa création.

**Note**  
Si vous recevez un message d'erreur indiquant que le cluster n'existe pas ou que vous n'êtes pas autorisé, vérifiez :  
Le nom du cluster est correct
Votre AWS CLI est configurée pour la bonne région
Vous disposez des autorisations IAM requises

## Étape 3 : vérifier que la fonctionnalité est active
<a name="_step_3_verify_the_capability_is_active"></a>

Attendez que la fonctionnalité soit activée. Remplacez *region-code* par la AWS région où se trouve votre cluster et *my-cluster* par le nom de votre cluster.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

La fonctionnalité est prête lorsque l'état s'affiche`ACTIVE`. Ne passez pas à l'étape suivante tant que le statut n'est pas atteint`ACTIVE`.

Vous pouvez également consulter les détails complets des fonctionnalités :

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## Étape 4 : vérifier que les ressources personnalisées sont disponibles
<a name="_step_4_verify_custom_resources_are_available"></a>

Une fois la fonctionnalité activée, vérifiez que les ressources personnalisées Argo CD sont disponibles dans votre cluster :

```
kubectl api-resources | grep argoproj.io
```

Vous devriez voir apparaître une liste `Application` `ApplicationSet` des types de ressources.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Travailler avec Argo CD](working-with-argocd.md)- Configurer des référentiels, enregistrer des clusters et créer des applications
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Architecture multi-clusters et configuration avancée
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez vos ressources de capacités Argo CD

# Création d'une fonctionnalité Argo CD à l'aide de eksctl
<a name="argocd-create-eksctl"></a>

Cette rubrique décrit comment créer une fonctionnalité Argo CD à l'aide de eksctl.

**Note**  
Les étapes suivantes nécessitent la version eksctl `0.220.0` ou une version ultérieure. Pour vérifier votre version, lancez`eksctl version`.

## Étape 1 : Création d'un rôle de capacité IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Créez un fichier de politique de confiance :

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Créez le rôle IAM :

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**Note**  
Pour cette configuration de base, aucune politique IAM supplémentaire n'est nécessaire. Si vous prévoyez d'utiliser Secrets Manager pour les informations d'identification du référentiel CodeConnections, vous devez également ajouter des autorisations au rôle. Pour des exemples de politique IAM et des conseils de configuration, reportez-vous aux sections [Gérez les secrets des applications avec AWS Secrets Manager](integration-secrets-manager.md) et[Connectez-vous aux référentiels Git avec AWS CodeConnections](integration-codeconnections.md).

## Étape 2 : obtenir la configuration de votre AWS Identity Center
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

Obtenez l'ARN et l'ID utilisateur de votre instance Identity Center pour la configuration du RBAC :

```
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text

# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
  --identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text
```

Notez ces valeurs, vous en aurez besoin à l'étape suivante.

## Étape 3 : Création d'un fichier de configuration eksctl
<a name="_step_3_create_an_eksctl_configuration_file"></a>

Créez un fichier nommé `argocd-capability.yaml` avec le contenu suivant. Remplacez les valeurs de l'espace réservé par le nom de votre cluster, la région du cluster, l'ARN du rôle IAM, l'ARN de l'instance Identity Center, la région du centre d'identité et l'ID utilisateur :

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: cluster-region-code

capabilities:
  - name: my-argocd
    type: ARGOCD
    roleArn: arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    configuration:
      argocd:
        awsIdc:
          idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
          idcRegion: idc-region-code
        rbacRoleMappings:
          - role: ADMIN
            identities:
              - id: 38414300-1041-708a-01af-5422d6091e34
                type: SSO_USER
```

**Note**  
Vous pouvez ajouter plusieurs utilisateurs ou groupes aux mappages RBAC. Pour les groupes, utilisez `type: SSO_GROUP` et fournissez l'ID du groupe. Les rôles disponibles sont `ADMIN``EDITOR`, et`VIEWER`.

## Étape 4 : Création de la fonctionnalité Argo CD
<a name="_step_4_create_the_argo_cd_capability"></a>

Appliquez le fichier de configuration :

```
eksctl create capability -f argocd-capability.yaml
```

La commande revient immédiatement, mais la fonctionnalité met un certain temps à devenir active.

## Étape 5 : vérifier que la fonctionnalité est active
<a name="_step_5_verify_the_capability_is_active"></a>

Vérifiez l'état des capacités. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster et remplacez *my-cluster* par le nom de votre cluster.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-argocd
```

La fonctionnalité est prête lorsque l'état s'affiche`ACTIVE`.

## Étape 6 : vérifier que les ressources personnalisées sont disponibles
<a name="_step_6_verify_custom_resources_are_available"></a>

Une fois la fonctionnalité activée, vérifiez que les ressources personnalisées Argo CD sont disponibles dans votre cluster :

```
kubectl api-resources | grep argoproj.io
```

Vous devriez voir apparaître une liste `Application` `ApplicationSet` des types de ressources.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Travailler avec Argo CD](working-with-argocd.md)- Apprenez à créer et à gérer des applications Argo CD
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Configurer l'accès SSO et multi-clusters
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez vos ressources de capacités Argo CD

# 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é :\$1** **Sain** - Toutes les ressources fonctionnent comme prévu \$1 **Progression** - Ressources en cours de création ou de mise à jour \$1 **Dégradée** - Certaines ressources ne sont pas saines (pods tombent en panne, tâches échouent) \$1 **Suspendue** - Application interrompue intentionnellement \$1 **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 :\$1 Contrôle et visibilité centralisés \$1 Politiques cohérentes sur tous les clusters \$1 Une instance Argo CD à gérer \$1 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 :\$1 Séparation des clusters (une défaillance n'affecte pas les autres) \$1 Simplification du réseau (aucune communication entre clusters) \$1 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

# Configurer les autorisations d'Argo CD
<a name="argocd-permissions"></a>

La fonctionnalité gérée par Argo CD s'intègre à AWS Identity Center pour l'authentification et utilise des rôles RBAC intégrés pour l'autorisation. Cette rubrique explique comment configurer les autorisations pour les utilisateurs et les équipes.

## Comment fonctionnent les autorisations avec Argo CD
<a name="_how_permissions_work_with_argo_cd"></a>

La fonctionnalité Argo CD utilise AWS Identity Center pour l'authentification et fournit trois rôles RBAC intégrés pour l'autorisation.

Lorsqu'un utilisateur accède à Argo CD :

1. Ils s'authentifient à l'aide AWS d'Identity Center (qui peut être fédéré auprès de votre fournisseur d'identité d'entreprise)

1.  AWS Identity Center fournit des informations sur les utilisateurs et les groupes à Argo CD

1. Argo CD associe les utilisateurs et les groupes aux rôles RBAC en fonction de votre configuration

1. Les utilisateurs ne voient que les applications et les ressources auxquelles ils sont autorisés à accéder

## Rôles RBAC intégrés
<a name="_built_in_rbac_roles"></a>

La fonctionnalité Argo CD fournit trois rôles intégrés que vous pouvez associer aux utilisateurs et aux groupes AWS d'Identity Center. Il s'agit de **rôles de portée mondiale** qui contrôlent l'accès aux ressources Argo CD telles que les projets, les clusters et les référentiels.

**Important**  
Les rôles globaux contrôlent l'accès à Argo CD lui-même, et non aux ressources liées au projet, telles que les applications. Les utilisateurs de EDITOR et VIEWER ne peuvent pas voir ou gérer les applications par défaut. Ils ont besoin de rôles de projet pour accéder aux ressources spécifiques au projet. Consultez [Rôles du projet et accès délimité par le projet](#project-roles) pour plus de détails sur l'octroi de l'accès aux applications et à d'autres ressources liées au projet.

 **ADMINISTRATEUR** 

Accès complet à toutes les ressources et à tous les paramètres d'Argo CD :
+ Créez, mettez à jour et supprimez des applications et ApplicationSets dans n'importe quel projet
+ Gérer la configuration d'Argo CD
+ Enregistrez et gérez les clusters cibles de déploiement
+ Configuration de l'accès au référentiel
+ Création et gestion de projets
+ Afficher l'état et l'historique de toutes les demandes
+ Répertorier et accéder à tous les clusters et référentiels

 **RÉDACTEUR** 

Peut mettre à jour des projets et configurer les rôles des projets, mais ne peut pas modifier les paramètres globaux d'Argo CD :
+ Mettre à jour les projets existants (impossible de créer ou de supprimer des projets)
+ Configuration des rôles et des autorisations du projet
+ Afficher les clés et certificats GPG
+ Impossible de modifier la configuration globale d'Argo CD
+ Impossible de gérer directement les clusters ou les référentiels
+ Impossible de voir ou de gérer les applications sans rôles dans le projet

 **SPECTATEUR** 

Accès en lecture seule aux ressources Argo CD :
+ Afficher les configurations de projet
+ Répertorier tous les projets (y compris les projets auxquels l'utilisateur n'est pas affecté)
+ Afficher les clés et certificats GPG
+ Impossible de répertorier les clusters ou les référentiels
+ Impossible d'apporter des modifications
+ Impossible de voir ou de gérer les applications sans rôles dans le projet

**Note**  
Pour accorder aux utilisateurs EDITOR ou VIEWER l'accès aux applications, un ADMINISTRATEUR ou un ÉDITEUR doit créer des rôles de projet qui associent les groupes Identity Center à des autorisations spécifiques au sein d'un projet.

## Rôles du projet et accès délimité par le projet
<a name="project-roles"></a>

Les rôles globaux (ADMIN, EDITOR, VIEWER) contrôlent l'accès à Argo CD lui-même. Les rôles de projet contrôlent l'accès aux ressources et aux capacités au sein d'un projet spécifique, notamment :
+  **Ressources** : applications, informations d'identification du référentiel ApplicationSets, informations d'identification du cluster
+  **Fonctionnalités** : accès aux journaux, accès exec aux modules de l'application

 **Comprendre le modèle d'autorisation à deux niveaux** :
+  **Portée globale** : les rôles intégrés déterminent ce que les utilisateurs peuvent faire avec les projets, les clusters, les référentiels et les paramètres d'Argo CD
+  **Portée du** projet : les rôles du projet déterminent ce que les utilisateurs peuvent faire avec les ressources et les capacités d'un projet spécifique

Autrement dit :
+ Les utilisateurs ADMIN peuvent accéder à toutes les ressources et fonctionnalités du projet sans configuration supplémentaire
+ Les utilisateurs EDITOR et VIEWER doivent se voir attribuer des rôles de projet pour accéder aux ressources et aux capacités du projet
+ Les utilisateurs de l'ÉDITEUR peuvent créer des rôles de projet pour s'accorder, ainsi qu'à d'autres, un accès au sein de projets qu'ils peuvent mettre à jour

 **Exemple de flux de travail** :

1. Un ADMINISTRATEUR associe un groupe Identity Center au rôle EDITOR à l'échelle mondiale

1. Un ADMIN crée un projet pour une équipe

1. L'ÉDITEUR configure les rôles du projet au sein de ce projet pour permettre aux membres de l'équipe d'accéder aux ressources définies dans le cadre du projet.

1. Les membres de l'équipe (qui peuvent avoir un rôle global VIEWER) peuvent désormais voir et gérer les applications de ce projet en fonction de leurs autorisations de rôle dans le projet

Pour plus de détails sur la configuration des rôles du projet, consultez[Contrôle d'accès basé sur le projet](#_project_based_access_control).

## Configuration des mappages de rôles
<a name="_configure_role_mappings"></a>

Associez les utilisateurs et les groupes AWS d'Identity Center aux rôles Argo CD lors de la création ou de la mise à jour de la fonctionnalité.

 **Exemple de mappage des rôles** :

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["AdminGroup", "alice@example.com"],
    "EDITOR": ["DeveloperGroup", "DevOpsTeam"],
    "VIEWER": ["ReadOnlyGroup", "bob@example.com"]
  }
}
```

**Note**  
Les noms de rôles distinguent les majuscules des minuscules et doivent être en majuscules (ADMIN, EDITOR, VIEWER).

**Important**  
L'intégration d'EKS Capabilities à AWS Identity Center prend en charge jusqu'à 1 000 identités par fonctionnalité Argo CD. Une identité peut être un utilisateur ou un groupe.

 **Mettre à jour les mappages de rôles** :

```
aws eks update-capability \
  --region us-east-1 \
  --cluster-name cluster \
  --capability-name capname \
  --endpoint "https://eks.ap-northeast-2.amazonaws.com" \
  --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \
  --configuration '{
    "argoCd": {
      "rbacRoleMappings": {
        "addOrUpdateRoleMappings": [
          {
            "role": "ADMIN",
            "identities": [
              { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" }
            ]
          }
        ]
      }
    }
  }'
```

## Utilisation du compte administrateur
<a name="_admin_account_usage"></a>

Le compte administrateur est conçu pour la configuration initiale et les tâches administratives telles que l'enregistrement de clusters et la configuration de référentiels.

 **Lorsque le compte administrateur est approprié** :
+ Configuration et configuration initiales des fonctionnalités
+ Développement en solo ou démonstrations rapides
+ Tâches administratives (enregistrement du cluster, configuration du référentiel, création de projets)

 **Bonnes pratiques pour le compte administrateur** :
+ Ne confiez pas les jetons de compte au contrôle de version
+ Faites pivoter les jetons immédiatement s'ils sont exposés
+ Limitez l'utilisation des jetons de compte aux tâches de configuration et d'administration
+ Définissez des délais d'expiration courts (maximum 12 heures)
+ Seuls 5 jetons de compte peuvent être créés à un moment donné

 **Quand utiliser plutôt l'accès basé sur le projet** :
+ Environnements de développement partagés avec plusieurs utilisateurs
+ Tout environnement similaire à celui de la production
+ Lorsque vous avez besoin de pistes d'audit pour savoir qui a effectué des actions
+ Lorsque vous devez appliquer des restrictions de ressources ou des limites d'accès

Pour les environnements de production et les scénarios multi-utilisateurs, utilisez le contrôle d'accès basé sur le projet avec des rôles RBAC dédiés mappés aux groupes Identity Center. AWS 

## Contrôle d'accès basé sur le projet
<a name="_project_based_access_control"></a>

Utilisez Argo CD Projects (AppProject) pour fournir un contrôle d'accès précis et une isolation des ressources aux équipes.

**Important**  
Avant d'affecter des utilisateurs ou des groupes à des rôles spécifiques au projet, vous devez d'abord les associer à un rôle Argo CD global (ADMIN, EDITOR ou VIEWER) dans la configuration des fonctionnalités. Les utilisateurs ne peuvent pas accéder à Argo CD sans mappage global des rôles, même s'ils sont affectés à des rôles de projet.  
Envisagez de mapper les utilisateurs au rôle VIEWER de manière globale, puis d'accorder des autorisations supplémentaires via des rôles spécifiques au projet. Cela fournit un accès de base tout en permettant un contrôle précis au niveau du projet.

Les projets fournissent :
+  **Restrictions relatives aux sources** : limite 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 à des groupes AWS Identity Center ou à des rôles Argo CD

 **Exemple de projet pour isoler une équipe** :

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Team A applications

  # Required: Specify which namespaces this project watches for Applications
  sourceNamespaces:
  - argocd

  # Source restrictions
  sourceRepos:
  - https://github.com/myorg/team-a-apps

  # Destination restrictions
  destinations:
  - namespace: team-a-*
    server: arn:aws:eks:us-west-2:111122223333:cluster/production

  # Resource restrictions
  clusterResourceWhitelist:
  - group: ''
    kind: Namespace
  namespaceResourceWhitelist:
  - group: 'apps'
    kind: Deployment
  - group: ''
    kind: Service
  - group: ''
    kind: ConfigMap
```

### Espaces de noms sources
<a name="_source_namespaces"></a>

Lorsque vous utilisez la fonctionnalité EKS Argo CD, le `spec.sourceNamespaces` champ est obligatoire dans AppProject les définitions. Ce champ indique quel espace de noms peut contenir des applications ou ApplicationSets qui font référence à ce projet.

**Important**  
La fonctionnalité EKS Argo CD ne prend en charge qu'un seul espace de noms pour les applications, à savoir l'espace de ApplicationSets noms que vous avez spécifié lors de la création de la fonctionnalité (généralement). `argocd` Cela diffère de l'Argo CD open source qui prend en charge plusieurs espaces de noms.

 **AppProject configuration** 

Tous AppProjects doivent inclure l'espace de noms configuré pour la fonctionnalité dans `sourceNamespaces` :

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a-project
  namespace: argocd
spec:
  description: Applications for Team A

  # Required: Specify the capability's configured namespace (configuration.argoCd.namespace)
  sourceNamespaces:
    - argocd  # Must match your capability's namespace configuration

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'

  # Destination restrictions
  destinations:
    - namespace: 'team-a-*'
      server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
```

**Note**  
Si vous omettez l'espace de noms de la fonctionnalité dans`sourceNamespaces`, les applications ou ApplicationSets dans cet espace de noms ne peuvent pas faire référence à ce projet, ce qui entraîne des échecs de déploiement.

 **Affecter des utilisateurs à des projets** :

Les rôles de projet permettent aux utilisateurs de EDITOR et VIEWER d'accéder aux ressources du projet (applications ApplicationSets, informations d'identification du référentiel et du cluster) et aux fonctionnalités (journaux, exec) du projet. Sans rôles de projet, ces utilisateurs ne peuvent pas accéder à ces ressources même s'ils disposent d'un accès global aux rôles.

Les utilisateurs ADMIN ont accès à toutes les applications sans avoir besoin de rôles de projet.

 **Exemple : accorder l'accès à l'application aux membres de l'équipe** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  # ... project configuration ...

  sourceNamespaces:
  - argocd

  # Project roles grant Application-level access
  roles:
  - name: developer
    description: Team A developers - can manage Applications
    policies:
    - p, proj:team-a:developer, applications, *, team-a/*, allow
    - p, proj:team-a:developer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 686103e0-f051-7068-b225-e6392b959d9e  # Identity Center group ID

  - name: viewer
    description: Team A viewers - read-only Application access
    policies:
    - p, proj:team-a:viewer, applications, get, team-a/*, allow
    - p, proj:team-a:viewer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 786203e0-f051-7068-b225-e6392b959d9f  # Identity Center group ID
```

**Note**  
Incluez `clusters, get, *, allow` les rôles dans le projet pour permettre aux utilisateurs de voir les noms des clusters dans l'interface utilisateur. Sans cette autorisation, le cluster de destination s'affiche comme « inconnu ».

 **Comprendre les politiques relatives aux rôles du projet** :

Le format de la politique est le suivant : `p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>` 

 **Politiques relatives aux ressources** :
+  `applications, , team-a/, allow`- Accès complet à toutes les applications de l'équipe-un projet
+  `applications, get, team-a/*, allow`- Accès en lecture seule aux applications
+  `applications, sync, team-a/*, allow`- Peut synchroniser les applications mais pas les créer/supprimer
+  `applications, delete, team-a/*, allow`- Peut supprimer des applications (à utiliser avec prudence)
+  `applicationsets, , team-a/, allow`- Accès complet à ApplicationSets
+  `repositories, *, *, allow`- Accès aux informations d'identification du référentiel
+  `clusters, *, *, allow`- Accès aux informations d'identification du cluster

 **Politiques de capacité** :
+  `logs, , team-a/, allow`- Accès aux journaux des applications
+  `exec, , team-a/, allow`- Accès exécutif aux modules d'applications

**Note**  
Les utilisateurs de l'ÉDITEUR peuvent créer des rôles de projet pour s'octroyer, ainsi qu'à d'autres, des autorisations au sein de projets qu'ils peuvent mettre à jour. Cela permet aux chefs d'équipe de contrôler l'accès aux ressources définies dans le cadre du projet pour leur équipe sans nécessiter l'intervention de l'ADMINISTRATEUR.

**Note**  
Utilisez le groupe Identity Center IDs (et non les noms de groupe) dans le `groups` champ. Vous pouvez également utiliser Identity Center User IDs pour un accès utilisateur individuel. Retrouvez-les IDs dans la console AWS Identity Center ou à l'aide de la AWS CLI.

## Modèles d'autorisation courants
<a name="_common_permission_patterns"></a>

 **Modèle 1 : équipe d'administration avec accès complet** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam", "SRETeam"]
  }
}
```

Les utilisateurs ADMIN peuvent voir et gérer toutes les ressources liées au projet sans configuration supplémentaire.

 **Schéma 2 : les chefs d'équipe gèrent les projets, les développeurs y accèdent via les rôles du projet** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

1. ADMIN crée des projets pour chaque équipe

1. Les chefs d'équipe (EDITOR) configurent les rôles du projet pour permettre à leurs développeurs d'accéder aux ressources du projet (applications ApplicationSets, informations d'identification) et aux fonctionnalités (journaux, exécutifs)

1. Les développeurs (VIEWER) ne peuvent accéder qu'aux ressources et fonctionnalités autorisées par leurs rôles dans le projet

 **Modèle 3 : accès basé sur l'équipe avec des rôles de projet** 

1. L'ADMINISTRATEUR crée des projets et cartographie l'équipe mène au rôle d'ÉDITEUR à l'échelle mondiale

1. Les chefs d'équipe (ÉDITEUR) attribuent aux membres de l'équipe des rôles de projet au sein de leurs projets

1. Les membres de l'équipe n'ont besoin que du rôle global VIEWER : les rôles de projet donnent accès aux ressources et aux capacités du projet

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

## Bonnes pratiques
<a name="_best_practices"></a>

 **Utilisez des groupes plutôt que des utilisateurs individuels** : associez les groupes AWS Identity Center aux rôles Argo CD plutôt qu'aux utilisateurs individuels pour faciliter la gestion.

 **Commencez avec le moins de privilèges** : commencez par l'accès VIEWER et accordez EDITOR ou ADMIN selon les besoins.

 **Utilisez des projets pour isoler les équipes** : créez des projets distincts AppProjects pour les différentes équipes ou environnements afin de renforcer les limites.

 **Tirez parti de la fédération Identity Center** : configurez AWS Identity Center pour qu'il soit fédéré avec votre fournisseur d'identité d'entreprise afin de centraliser la gestion des utilisateurs.

 **Révisions d'accès régulières** : passez régulièrement en revue les mappages de rôles et les attributions de projets pour garantir des niveaux d'accès appropriés.

 **Limiter l'accès au cluster** : n'oubliez pas qu'Argo CD RBAC contrôle l'accès aux ressources et aux opérations Argo CD, mais ne correspond pas au RBAC Kubernetes. Les utilisateurs disposant d'un accès à Argo CD peuvent déployer des applications sur des clusters auxquels Argo CD a accès. Limitez les clusters auxquels Argo CD peut accéder et utilisez les restrictions de destination du projet pour contrôler où les applications peuvent être déployées.

## AWS autorisations de service
<a name="shared_aws_service_permissions"></a>

Pour utiliser les AWS services directement dans les ressources de l'application (sans créer de ressources de référentiel), associez les autorisations IAM requises au rôle de capacité.

 **ECR pour les cartes Helm** :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}
```

 **CodeCommit référentiels** :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

 **CodeConnections (GitHub GitLab, Bitbucket)** :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codeconnections:UseConnection"
      ],
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

Consultez [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails sur l'utilisation de ces intégrations.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Travailler avec Argo CD](working-with-argocd.md)- Apprenez à créer des applications et à gérer les déploiements
+  [Concepts d'Argo CD](argocd-concepts.md)- Comprendre les concepts d'Argo CD, y compris les projets
+  [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)- Passez en revue les meilleures pratiques de sécurité en termes de fonctionnalités

# Travailler avec Argo CD
<a name="working-with-argocd"></a>

Avec Argo CD, vous définissez les applications dans les référentiels Git et Argo CD les synchronise automatiquement avec vos clusters Kubernetes. Cela permet un déploiement d'applications déclaratif et contrôlé par version avec détection automatique des dérives.

## Conditions préalables
<a name="_prerequisites"></a>

Avant de travailler avec Argo CD, vous devez :
+ Création d'un cluster EKS doté de la fonctionnalité Argo CD (voir[Création d’une fonctionnalité Argo CD](create-argocd-capability.md))
+ Un dépôt Git contenant des manifestes Kubernetes
+  `kubectl`configuré pour communiquer avec votre cluster

## Tâches courantes
<a name="_common_tasks"></a>

Les rubriques suivantes vous guident dans les tâches courantes d'Argo CD :

 **[Configuration de l'accès au référentiel](argocd-configure-repositories.md)**- Configurez Argo CD pour accéder à vos référentiels Git à l'aide de AWS Secrets Manager ou de AWS CodeConnections Kubernetes Secrets.

 **[Enregistrer les clusters cibles](argocd-register-clusters.md)**- Enregistrez les clusters cibles sur lesquels Argo CD déploiera des applications.

 **[Travailler avec des projets Argo CD](argocd-projects.md)**- Organisez les applications et renforcez les limites de sécurité à l'aide de projets pour les environnements à locataires multiples.

 **[Création d'applications](argocd-create-application.md)**- Créez des applications déployées à partir de référentiels Git avec des politiques de synchronisation automatisées ou manuelles.

 **[Utiliser ApplicationSets](argocd-applicationsets.md)**- ApplicationSets À utiliser pour déployer des applications dans plusieurs environnements ou clusters à l'aide de modèles et de générateurs.

## Accédez à l'interface utilisateur d'Argo CD
<a name="_access_the_argo_cd_ui"></a>

Accédez à l'interface utilisateur du CD Argo via la console EKS :

1. Ouvrez la console Amazon EKS

1. Sélectionnez votre cluster

1. Choisissez l'onglet **Fonctionnalités**

1. Choisissez **Argo CD** 

1. Choisissez **Open Argo CD UI** 

L'interface utilisateur fournit une topologie visuelle des applications, l'état et l'historique de synchronisation, l'état des ressources et les événements, les contrôles de synchronisation manuels et la gestion des applications.

## Documentation en amont
<a name="_upstream_documentation"></a>

Pour des informations détaillées sur les fonctionnalités d'Argo CD :
+  [Documentation Argo CD - Guide](https://argo-cd.readthedocs.io/) de l'utilisateur complet
+  [Spécifications de l'application - Référence](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) complète de l'API de l'application
+  [ApplicationSet Guide](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) - ApplicationSet modèles et exemples
+  [Argo CD GitHub](https://github.com/argoproj/argo-cd) - Code source et exemples

# Configuration de l'accès au référentiel
<a name="argocd-configure-repositories"></a>

Avant de déployer des applications, configurez Argo CD pour accéder à vos référentiels Git et à vos registres de diagrammes Helm. Argo CD prend en charge plusieurs méthodes d'authentification pour GitHub GitLab, Bitbucket et AWS CodeCommit AWS ECR.

**Note**  
Pour les intégrations de AWS services directes (graphiques ECR Helm, CodeCommit référentiels, etc. CodeConnections), vous pouvez les référencer directement dans les ressources de l'application sans créer de configurations de référentiel. Le rôle de capacité doit disposer des autorisations IAM requises. Consultez [Configurer les autorisations d'Argo CD](argocd-permissions.md) pour plus de détails.

## Conditions préalables
<a name="_prerequisites"></a>
+ Création d'un cluster EKS doté de la fonctionnalité Argo CD
+ Référentiels Git contenant des manifestes Kubernetes
+  `kubectl`configuré pour communiquer avec votre cluster

**Note**  
 AWS CodeConnections peut se connecter à des serveurs Git situés dans AWS le cloud ou sur site. Pour de plus amples informations, veuillez consulter [AWS CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/userguide/welcome.html).

## Méthodes d’authentification
<a name="_authentication_methods"></a>


| Method | Cas d’utilisation | Autorisations IAM nécessaires | 
| --- | --- | --- | 
|   **Intégration directe aux AWS services**   | 
|  CodeCommit  |  Intégration directe avec les référentiels AWS CodeCommit Git. Aucune configuration du référentiel n'est nécessaire.  |   `codecommit:GitPull`   | 
|  CodeConnections  |  Connectez-vous à GitHub Bitbucket ou connectez-vous à Bitbucket grâce à l'authentification gérée. GitLab Nécessite la configuration de la connexion.  |   `codeconnections:UseConnection`   | 
|  Artefacts OCI ECR  |  Intégration directe avec AWS ECR pour les graphiques OCI Helm et les images de manifeste. Aucune configuration du référentiel n'est nécessaire.  |   `arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly`   | 
|   **Configuration du référentiel avec informations d'identification**   | 
|   AWS Secrets Manager (nom d'utilisateur/jeton)  |  Stockez des jetons d'accès ou des mots de passe personnels. Permet la rotation des informations d'identification sans accès à Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Gestionnaire de Secrets (clé SSH)  |  Utilisez l'authentification par clé SSH. Permet la rotation des informations d'identification sans accès à Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (GitHub App)  |  GitHub Authentification de l'application avec clé privée. Permet la rotation des informations d'identification sans accès à Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|  Le secret de Kubernetes  |  Méthode Argo CD standard utilisant des secrets intégrés au cluster  |  Aucune (autorisations gérées par EKS Access Entry avec Kubernetes RBAC)  | 

## Accès direct aux AWS services
<a name="direct_access_to_shared_aws_services"></a>

Pour les AWS services, vous pouvez les référencer directement dans les ressources de l'application sans créer de configurations de référentiel. Le rôle de capacité doit disposer des autorisations IAM requises.

### CodeCommit référentiels
<a name="_codecommit_repositories"></a>

 CodeCommit Référencez les référentiels directement dans les applications :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Autorisations de rôle de capacité requises :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codecommit:GitPull",
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

### CodeConnections
<a name="_codeconnections"></a>

Reference GitHub GitLab, ou référentiels Bitbucket via. CodeConnections Le format de l'URL du référentiel est dérivé de l'ARN de CodeConnections connexion.

Le format de l'URL du référentiel est le suivant :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Autorisations de rôle de capacité requises :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codeconnections:UseConnection",
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

### Graphiques ECR Helm
<a name="_ecr_helm_charts"></a>

L'ECR stocke les diagrammes Helm sous forme d'artefacts OCI. Argo CD permet de les référencer de deux manières :

 **Format Helm** (recommandé pour les diagrammes Helm) :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-helm
  namespace: argocd
spec:
  source:
    repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
    helm:
      valueFiles:
        - values.yaml
```

Remarque : N'incluez pas le `oci://` préfixe lorsque vous utilisez le format Helm. Utilisez le `chart` champ pour spécifier le nom du graphique.

 **Format OCI** (pour les artefacts OCI avec des manifestes Kubernetes) :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-oci
  namespace: argocd
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: artifact-version
    path: path-to-manifests
```

Remarque : Incluez le `oci://` préfixe lorsque vous utilisez le format OCI. Utilisez le `path` champ au lieu de`chart`.

Autorisations de rôle de capacité requises : attachez la politique gérée :

```
arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

Cette politique inclut les autorisations ECR nécessaires : `ecr:GetAuthorizationToken``ecr:BatchGetImage`, et`ecr:GetDownloadUrlForLayer`.

## Utilisation de AWS Secrets Manager
<a name="using_shared_aws_secrets_manager"></a>

Stockez les informations d'identification du référentiel dans Secrets Manager et référencez-les dans les configurations du référentiel Argo CD. L'utilisation de Secrets Manager permet une rotation automatique des informations d'identification sans nécessiter l'accès à Kubernetes RBAC. Les informations d'identification peuvent être modifiées à l'aide des autorisations IAM vers Secrets Manager, et Argo CD lit automatiquement les valeurs mises à jour.

**Note**  
Pour la réutilisation des informations d'identification dans plusieurs référentiels (par exemple, tous les référentiels d'une GitHub organisation), utilisez des modèles d'informations d'identification de référentiel avec. `argocd.argoproj.io/secret-type: repo-creds` Cela fournit une meilleure expérience utilisateur que la création de secrets de dépôt individuels. Pour plus d'informations, consultez la section Informations [d'identification du référentiel](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) dans la documentation Argo CD.

### Authentification par nom d'utilisateur et token
<a name="_username_and_token_authentication"></a>

Pour les référentiels HTTPS dotés de jetons d'accès ou de mots de passe personnels :

 **Créez le secret dans Secrets Manager** :

```
aws secretsmanager create-secret \
  --name argocd/my-repo \
  --description "GitHub credentials for Argo CD" \
  --secret-string '{"username":"your-username","token":"your-personal-access-token"}'
```

 **Champs de certificat client TLS facultatifs** (pour les serveurs Git privés) :

```
aws secretsmanager create-secret \
  --name argocd/my-private-repo \
  --secret-string '{
    "username":"your-username",
    "token":"your-token",
    "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t",
    "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t"
  }'
```

**Note**  
Les `tlsClientCertKey` valeurs `tlsClientCertData` et doivent être codées en base64.

 **Créez un secret de dépôt faisant référence à Secrets Manager** :

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf
  project: default
```

### Authentification par clé SSH
<a name="_ssh_key_authentication"></a>

Pour un accès Git basé sur SSH, stockez la clé privée en texte brut (et non en JSON) :

 **Créez le secret avec la clé privée SSH** :

```
aws secretsmanager create-secret \
  --name argocd/my-repo-ssh \
  --description "SSH key for Argo CD" \
  --secret-string "-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----"
```

 **Créez un secret de dépôt pour SSH :**

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf
  project: default
```

### GitHub Authentification par application
<a name="_github_app_authentication"></a>

Pour GitHub l'authentification des applications à l'aide d'une clé privée :

 **Créez le secret à l'aide des informations d'identification de GitHub l'application** :

```
aws secretsmanager create-secret \
  --name argocd/github-app \
  --description "GitHub App credentials for Argo CD" \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678"
  }'
```

**Note**  
La `githubAppPrivateKeySecret` valeur doit être codée en base64.

 **Champ facultatif pour GitHub Enterprise** :

```
aws secretsmanager create-secret \
  --name argocd/github-enterprise-app \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678",
    "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3"
  }'
```

 **Créez un secret de dépôt pour GitHub l'application** :

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-github-app
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf
  project: default
```

### Modèles d'informations d'identification du référentiel
<a name="_repository_credential_templates"></a>

Pour la réutilisation des informations d'identification dans plusieurs référentiels (par exemple, tous les référentiels d'une GitHub organisation ou d'un utilisateur), utilisez des modèles d'informations d'identification de référentiel avec. `argocd.argoproj.io/secret-type: repo-creds` Cela fournit une meilleure expérience utilisateur que la création de secrets de dépôt individuels pour chaque référentiel.

 **Créez un modèle d'identification de référentiel** :

```
apiVersion: v1
kind: Secret
metadata:
  name: github-org-creds
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repo-creds
stringData:
  type: git
  url: https://github.com/your-org
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf
```

Ce modèle d'identification s'applique à tous les référentiels correspondant au préfixe d'URL. `https://github.com/your-org` Vous pouvez ensuite référencer n'importe quel référentiel relevant de cette organisation dans Applications sans créer de secrets supplémentaires.

Pour plus d'informations, consultez la section Informations [d'identification du référentiel](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) dans la documentation Argo CD.

**Important**  
Assurez-vous que votre rôle de capacité IAM est `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` associé à la politique gérée ou à des autorisations équivalentes, y compris `secretsmanager:GetSecretValue` des autorisations de déchiffrement KMS. Voir [Considérations relatives à Argo CD](argocd-considerations.md) pour la configuration de la politique IAM.

## En utilisant AWS CodeConnections
<a name="using_shared_aws_codeconnections"></a>

Pour CodeConnections l'intégration, voir[Connectez-vous aux référentiels Git avec AWS CodeConnections](integration-codeconnections.md).

CodeConnections fournit une authentification gérée pour GitHub GitLab, et Bitbucket sans stocker les informations d'identification.

## Utilisation des secrets de Kubernetes
<a name="_using_kubernetes_secrets"></a>

Stockez les informations d'identification directement dans Kubernetes à l'aide de la méthode Argo CD standard.

 **Pour le protocole HTTPS avec jeton d'accès personnel** :

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  username: your-username
  password: your-personal-access-token
```

 **Pour SSH :**

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  sshPrivateKey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    ... your private key ...
    -----END OPENSSH PRIVATE KEY-----
```

## CodeCommit référentiels
<a name="_codecommit_repositories_2"></a>

Pour AWS CodeCommit, accordez les CodeCommit autorisations de votre rôle de capacité IAM (`codecommit:GitPull`).

Configurez le référentiel :

```
apiVersion: v1
kind: Secret
metadata:
  name: codecommit-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo
  project: default
```

Pour une configuration détaillée de la politique IAM, consultez[Considérations relatives à Argo CD](argocd-considerations.md).

## Vérifier la connexion au référentiel
<a name="_verify_repository_connection"></a>

Vérifiez l'état de la connexion via l'interface utilisateur d'Argo CD sous Paramètres → Référentiels. L'interface utilisateur indique l'état de la connexion et les éventuelles erreurs d'authentification.

Les secrets du référentiel n'incluent pas d'informations sur le statut.

## Ressources supplémentaires
<a name="_additional_resources"></a>
+  [Enregistrer les clusters cibles](argocd-register-clusters.md)- Enregistrez les clusters cibles pour les déploiements
+  [Création d'applications](argocd-create-application.md)- Créez votre première application
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Autorisations IAM et configuration de sécurité
+  [Référentiels privés - Référence](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/) de configuration des référentiels en amont

# Enregistrer les clusters cibles
<a name="argocd-register-clusters"></a>

Enregistrez les clusters pour permettre à Argo CD d'y déployer des applications. Vous pouvez enregistrer le même cluster sur lequel Argo CD est en cours d'exécution (cluster local) ou des clusters distants dans différents comptes ou régions. Une fois qu'un cluster est enregistré, il reste dans un état de connexion inconnu jusqu'à ce que vous créiez une application au sein de ce cluster. Pour créer une application Argo CD après l'enregistrement de votre cluster, consultez[Création d'applications](argocd-create-application.md).

## Conditions préalables
<a name="_prerequisites"></a>
+ Création d'un cluster EKS doté de la fonctionnalité Argo CD
+  `kubectl`configuré pour communiquer avec votre cluster
+ Pour les clusters distants : autorisations IAM et entrées d'accès appropriées

## Enregistrez le cluster local
<a name="_register_the_local_cluster"></a>

Pour déployer des applications sur le même cluster que celui sur lequel Argo CD est exécuté, enregistrez-le en tant que cible de déploiement.

**Important**  
La fonctionnalité Argo CD n'enregistre pas automatiquement le cluster local. Vous devez l'enregistrer explicitement pour déployer des applications sur le même cluster. Vous pouvez utiliser le nom du cluster `in-cluster` pour assurer la compatibilité avec la plupart des exemples de CD Argo en ligne.

**Note**  
Une entrée d'accès EKS est automatiquement créée pour le cluster local avec le rôle Argo CD Capability, mais aucune autorisation RBAC Kubernetes n'est accordée par défaut. Cela suit le principe du moindre privilège : vous devez configurer explicitement les autorisations dont Argo CD a besoin en fonction de votre cas d'utilisation. Par exemple, si vous utilisez ce cluster uniquement comme hub Argo CD pour gérer des clusters distants, aucune autorisation de déploiement local n'est requise. Consultez la section relative aux exigences RBAC relatives aux entrées d'accès ci-dessous pour connaître les options de configuration.

 **À l'aide de l'Argo CD CLI** :

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/my-cluster \
  --name local-cluster
```

 **Utilisation d'un secret Kubernetes** :

```
apiVersion: v1
kind: Secret
metadata:
  name: local-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: local-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
  project: default
```

Appliquez la configuration :

```
kubectl apply -f local-cluster.yaml
```

**Note**  
Utilisez l'ARN du cluster EKS `server` sur le terrain, et non l'URL du serveur d'API Kubernetes. La fonctionnalité gérée nécessite ARNs d'identifier les clusters. La valeur par défaut n'`kubernetes.default.svc`est pas prise en charge.

## Enregistrer des clusters distants
<a name="_register_remote_clusters"></a>

Pour déployer sur des clusters distants :

 **Étape 1 : créer l'entrée d'accès sur le cluster distant** 

Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster distant, remplacez *remote-cluster* par le nom de votre cluster distant et remplacez l'ARN par l'ARN de votre rôle de fonctionnalité Argo CD.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD
```

 **Étape 2 : associer une politique d'accès aux autorisations Kubernetes RBAC** 

L'entrée d'accès nécessite des autorisations RBAC Kubernetes pour qu'Argo CD puisse déployer des applications. Pour démarrer rapidement, vous pouvez utiliser `AmazonEKSClusterAdminPolicy` :

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Important**  
`AmazonEKSClusterAdminPolicy`Fournit un accès complet à l'administrateur du cluster (équivalent à). `system:masters` C'est pratique pour démarrer mais ne doit pas être utilisé en production. Pour les environnements de production, utilisez des autorisations plus restrictives en associant l'entrée d'accès à des groupes Kubernetes personnalisés et en créant un rôle ou des liaisons appropriés. ClusterRole Consultez la section relative à la configuration de production ci-dessous pour la configuration du moindre privilège.

 **Étape 3 : enregistrer le cluster dans Argo CD** 

 **À l'aide de l'Argo CD CLI** :

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster \
  --name remote-cluster
```

 **Utilisation d'un secret Kubernetes** :

```
apiVersion: v1
kind: Secret
metadata:
  name: remote-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: remote-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster
  project: default
```

Appliquez la configuration :

```
kubectl apply -f remote-cluster.yaml
```

## Clusters entre comptes
<a name="_cross_account_clusters"></a>

Pour effectuer un déploiement sur des clusters appartenant à différents AWS comptes, procédez comme suit :

1. Dans le compte cible, créez une entrée d'accès sur le cluster EKS cible en utilisant l'Argo CD IAM Capability Role (ARN) du compte source comme principal.

1. Associer une politique d'accès aux autorisations Kubernetes RBAC appropriées

1. Enregistrez le cluster dans Argo CD à l'aide de son ARN de cluster EKS

Aucune création de rôle IAM ou configuration de politique de confiance supplémentaire n'est requise : les entrées d'accès EKS gèrent l'accès entre comptes.

Le format ARN du cluster inclut la région, de sorte que les déploiements entre régions utilisent le même processus que les déploiements dans la même région.

## Vérifier l'enregistrement du cluster
<a name="_verify_cluster_registration"></a>

Afficher les clusters enregistrés :

```
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster
```

Ou vérifiez l'état du cluster dans l'interface utilisateur d'Argo CD sous Paramètres → Clusters.

## Clusters privés
<a name="_private_clusters"></a>

La fonctionnalité Argo CD fournit un accès transparent à des clusters EKS entièrement privés sans nécessiter de peering VPC ou de configuration réseau spécialisée.

 AWS gère automatiquement la connectivité entre la fonctionnalité Argo CD et les clusters distants privés.

Enregistrez simplement le cluster privé à l'aide de son ARN, aucune configuration réseau supplémentaire n'est requise.

## Exigences RBAC d'accès et d'entrée
<a name="_access_entry_rbac_requirements"></a>

Lorsque vous créez une fonctionnalité Argo CD, une entrée d'accès EKS est automatiquement créée pour le rôle de capacité, mais aucune autorisation RBAC Kubernetes n'est accordée par défaut. Cette conception intentionnelle suit le principe du moindre privilège : différents cas d'utilisation nécessitent des autorisations différentes.

Par exemple :\$1 Si vous utilisez le cluster uniquement comme hub Argo CD pour gérer des clusters distants, il n'a pas besoin d'autorisations de déploiement local \$1 Si vous déployez des applications localement, il a besoin d'un accès en lecture à l'échelle du cluster et d'un accès en écriture à des espaces de noms spécifiques \$1 Si vous devez créer CRDs, il nécessite des autorisations d'administrateur de cluster supplémentaires

Vous devez configurer explicitement les autorisations dont Argo CD a besoin en fonction de vos besoins.

### Autorisations minimales pour Argo CD
<a name="_minimum_permissions_for_argo_cd"></a>

Argo CD a besoin de deux types d'autorisations pour fonctionner sans erreur :

 **Autorisations de lecture (à l'échelle du cluster)** : Argo CD doit être capable de lire tous les types de ressources et les définitions de ressources personnalisées (CRDs) du cluster pour :
+ Découverte des ressources et bilans de santé
+ Détection de la dérive entre l'état souhaité et l'état réel
+ Validation des ressources avant le déploiement

 **Autorisations d'écriture (spécifiques à l'espace de noms)** : Argo CD a besoin d'autorisations de création, de mise à jour et de suppression pour les ressources définies dans Applications :
+ Déployez les charges de travail des applications (déploiements, services ConfigMaps, etc.)
+ Appliquer des ressources personnalisées (CRDs spécifiques à vos applications)
+ Gérer le cycle de vie des applications

### Configuration rapide
<a name="_quick_setup"></a>

Pour démarrer rapidement, tester ou développer des environnements, utilisez `AmazonEKSClusterAdminPolicy` :

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Important**  
`AmazonEKSClusterAdminPolicy`Il fournit un accès complet à l'administrateur du cluster (équivalent à`system:masters`), y compris la possibilité de créer CRDs, de modifier des ressources à l'échelle du cluster et de les déployer dans n'importe quel espace de noms. C'est pratique pour le développement POCs mais ne doit pas être utilisé en production. Pour la production, utilisez la configuration de moindre privilège ci-dessous.

### Configuration de production avec le moins de privilèges
<a name="_production_setup_with_least_privilege"></a>

Pour les environnements de production, créez un RBAC Kubernetes personnalisé qui accorde :
+ Accès en lecture à toutes les ressources à l'échelle du cluster (pour la découverte et les bilans de santé)
+ Accès en écriture spécifique à l'espace de noms (pour les déploiements)

 **Étape 1 : associer l'entrée d'accès à un groupe Kubernetes personnalisé** 

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy \
  --access-scope type=namespace,namespaces=app-namespace
```

 **Étape 2 : Création ClusterRole pour un accès en lecture** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argocd-read-all
rules:
# Read access to all resources for discovery and health checks
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]
```

 **Étape 3 : créer un rôle pour l'accès en écriture aux espaces de noms des applications** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: argocd-deploy
  namespace: app-namespace
rules:
# Full access to deploy application resources
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
```

 **Étape 4 : lier les rôles au groupe Kubernetes** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: argocd-read-all
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: argocd-read-all
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: argocd-deploy
  namespace: app-namespace
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: argocd-deploy
  apiGroup: rbac.authorization.k8s.io
```

**Note**  
Le format du nom de groupe pour les entrées d'accès est `eks-access-entry:` suivi par l'ARN principal. Répétez cette opération RoleBinding pour chaque espace de noms dans lequel Argo CD doit déployer des applications.

**Important**  
Argo CD doit être capable de lire tous les types de ressources du cluster à des fins de vérification de l'état et de découverte, même s'il n'est déployé que dans des espaces de noms spécifiques. Sans accès en lecture à l'échelle du cluster, Argo CD affichera des erreurs lors de la vérification de l'état de l'application.

## Restreindre l'accès au cluster avec Projects
<a name="_restrict_cluster_access_with_projects"></a>

Utilisez les projets pour contrôler les clusters et les espaces de noms dans lesquels les applications peuvent être déployées en configurant les clusters et espaces de noms cibles autorisés dans : `spec.destinations`

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  destinations:
  - server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster
    namespace: '*'
  - server: arn:aws:eks:eu-west-1:111122223333:cluster/prod-eu-cluster
    namespace: '*'
  sourceRepos:
  - 'https://github.com/example/production-apps'
```

Pour en savoir plus, consultez [Travailler avec des projets Argo CD](argocd-projects.md).

## Ressources supplémentaires
<a name="_additional_resources"></a>
+  [Travailler avec des projets Argo CD](argocd-projects.md)- Organisez les applications et appliquez les limites de sécurité
+  [Création d'applications](argocd-create-application.md)- Déployez votre première application
+  [Utiliser ApplicationSets](argocd-applicationsets.md)- Déployez sur plusieurs clusters avec ApplicationSets
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Modèles multi-clusters et configuration entre comptes
+  Configuration [déclarative du cluster - Référence de configuration](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#clusters) du cluster en amont

# Travailler avec des projets Argo CD
<a name="argocd-projects"></a>

Les projets Argo CD (AppProject) fournissent un regroupement logique et un contrôle d'accès pour les applications. Les projets définissent les référentiels Git, les clusters cibles et les espaces de noms que les applications peuvent utiliser, ce qui permet la mutualisation et les limites de sécurité dans les instances Argo CD partagées.

## Quand utiliser Projects
<a name="_when_to_use_projects"></a>

Utilisez les projets pour :
+ Séparez les applications par équipe, environnement ou unité commerciale
+ Limiter les référentiels à partir desquels les équipes peuvent effectuer des déploiements
+ Limiter les clusters et les espaces de noms vers lesquels les équipes peuvent effectuer des déploiements
+ Appliquer les quotas de ressources et les types de ressources autorisés
+ Proposez un déploiement d'applications en libre-service avec des garde-fous

## Projet par défaut
<a name="_default_project"></a>

Chaque fonctionnalité d'Argo CD inclut un `default` projet qui permet d'accéder à tous les référentiels, clusters et espaces de noms. Bien que cela soit utile pour les tests initiaux, créez des projets dédiés avec des restrictions explicites pour l'utilisation en production.

Pour plus de détails sur la configuration de projet par défaut et sur la manière de la restreindre, consultez [The Default Project](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#the-default-project) dans la documentation d'Argo CD.

## Créer un projet
<a name="_create_a_project"></a>

Créez un projet en appliquant une `AppProject` ressource à votre cluster.

 **Exemple : projet spécifique à une équipe** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Applications for Team A

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'
    - 'https://github.com/my-org/shared-libs'

  # Destination clusters and namespaces
  destinations:
    - name: dev-cluster
      namespace: team-a-dev
    - name: prod-cluster
      namespace: team-a-prod

  # Allowed resource types
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace

  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
    - group: ''
      kind: ConfigMap
```

Appliquez le projet :

```
kubectl apply -f team-a-project.yaml
```

## Configuration du projet
<a name="_project_configuration"></a>

### Référentiels de sources
<a name="_source_repositories"></a>

Contrôlez les référentiels Git que les applications de ce projet peuvent utiliser :

```
spec:
  sourceRepos:
    - 'https://github.com/my-org/app-*'  # Wildcard pattern
    - 'https://github.com/my-org/infra'  # Specific repo
```

Vous pouvez utiliser des caractères génériques et des modèles de négation (`!`préfixe) pour autoriser ou refuser des référentiels spécifiques. Pour plus de détails, consultez [la section Gestion de projets](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) dans la documentation d'Argo CD.

### Restrictions de destination
<a name="_destination_restrictions"></a>

Limite dans laquelle les applications peuvent être déployées :

```
spec:
  destinations:
    - name: prod-cluster  # Specific cluster by name
      namespace: production
    - name: '*'  # Any cluster
      namespace: team-a-*  # Namespace pattern
```

**Important**  
Utilisez des noms de cluster et des modèles d'espaces de noms spécifiques plutôt que des caractères génériques pour les projets de production. Cela permet d'éviter les déploiements accidentels vers des clusters ou des espaces de noms non autorisés.

Vous pouvez utiliser des caractères génériques et des modèles de négation pour contrôler les destinations. Pour plus de détails, consultez [la section Gestion de projets](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) dans la documentation d'Argo CD.

### Restrictions de ressources
<a name="_resource_restrictions"></a>

Contrôlez les types de ressources Kubernetes qui peuvent être déployés :

 Ressources étendues au **cluster** :

```
spec:
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace
    - group: 'rbac.authorization.k8s.io'
      kind: Role
```

 **Ressources limitées à l'espace de noms :**

```
spec:
  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
    - group: ''
      kind: ConfigMap
    - group: 's3.services.k8s.aws'
      kind: Bucket
```

Utilisez des listes noires pour refuser des ressources spécifiques :

```
spec:
  namespaceResourceBlacklist:
    - group: ''
      kind: Secret  # Prevent direct Secret creation
```

## Affecter des applications à des projets
<a name="_assign_applications_to_projects"></a>

Lors de la création d'une application, spécifiez le projet dans le `spec.project` champ :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: team-a  # Assign to team-a project
  source:
    repoURL: https://github.com/my-org/my-app
    path: manifests
  destination:
    name: prod-cluster
    namespace: team-a-prod
```

Les applications sans projet spécifique utilisent le `default` projet.

## Rôles du projet et RBAC
<a name="_project_roles_and_rbac"></a>

Les projets peuvent définir des rôles personnalisés pour un contrôle d'accès précis. Associez les rôles du projet aux utilisateurs et aux groupes d' AWS Identity Center dans la configuration de vos fonctionnalités afin de contrôler qui peut synchroniser, mettre à jour ou supprimer des applications.

 **Exemple : projet avec rôles de développeur et d'administrateur** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  sourceRepos:
    - '*'
  destinations:
    - name: '*'
      namespace: 'team-a-*'

  roles:
    - name: developer
      description: Developers can sync applications
      policies:
        - p, proj:team-a:developer, applications, sync, team-a/*, allow
        - p, proj:team-a:developer, applications, get, team-a/*, allow
      groups:
        - team-a-developers

    - name: admin
      description: Admins have full access
      policies:
        - p, proj:team-a:admin, applications, *, team-a/*, allow
      groups:
        - team-a-admins
```

Pour plus de détails sur les rôles du projet, les jetons JWT pour les CI/CD pipelines et la configuration du RBAC, consultez la section [Rôles du projet](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#project-roles) dans la documentation Argo CD.

## Schémas courants
<a name="_common_patterns"></a>

### Projets axés sur l'environnement
<a name="_environment_based_projects"></a>

Créez des projets distincts pour chaque environnement :

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/*'
  destinations:
    - name: prod-cluster
      namespace: '*'
  # Strict resource controls for production
  clusterResourceWhitelist: []
  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
```

### Projets basés sur le travail d'équipe
<a name="_team_based_projects"></a>

Isolez les équipes avec des projets dédiés :

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: platform-team
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/platform-*'
  destinations:
    - name: '*'
      namespace: 'platform-*'
  # Platform team can manage cluster resources
  clusterResourceWhitelist:
    - group: '*'
      kind: '*'
```

### Projets multi-clusters
<a name="_multi_cluster_projects"></a>

Déployez sur plusieurs clusters avec des politiques cohérentes :

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: global-app
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/global-app'
  destinations:
    - name: us-west-cluster
      namespace: app
    - name: eu-west-cluster
      namespace: app
    - name: ap-south-cluster
      namespace: app
```

## Bonnes pratiques
<a name="_best_practices"></a>

 **Commencez par des projets restrictifs** : commencez par des autorisations restreintes et étendez-les selon les besoins plutôt que de commencer par un accès étendu.

 **Utilisez des modèles d'espaces de noms** : utilisez des caractères génériques dans les restrictions d'espace de noms (par exemple`team-a-*`) pour permettre de la flexibilité tout en maintenant les limites.

 **Projets de production distincts** : utilisez des projets dédiés pour la production avec des contrôles plus stricts et des politiques de synchronisation manuelle.

 **Documentez les objectifs du projet** : utilisez le `description` champ pour expliquer à quoi sert chaque projet et qui doit l'utiliser.

 **Vérifiez régulièrement les autorisations des projets : auditez régulièrement** les projets pour vous assurer que les restrictions correspondent toujours aux besoins de l'équipe et aux exigences de sécurité.

## Ressources supplémentaires
<a name="_additional_resources"></a>
+  [Configurer les autorisations d'Argo CD](argocd-permissions.md)- Configurer l'intégration du RBAC et de l'Identity Center
+  [Création d'applications](argocd-create-application.md)- Créez des applications dans des projets
+  [Utiliser ApplicationSets](argocd-applicationsets.md)- À utiliser ApplicationSets avec des projets pour des déploiements multi-clusters
+  [Documentation des projets Argo CD](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/) - Référence complète en amont

# Création d'applications
<a name="argocd-create-application"></a>

Les applications représentent des déploiements dans des clusters cibles. Chaque application définit une source (dépôt Git) et une destination (cluster et espace de noms). Une fois appliqué, Argo CD créera les ressources spécifiées par des manifestes dans le référentiel Git dans l'espace de noms du cluster. Les applications spécifient souvent des déploiements de charges de travail, mais elles peuvent gérer toutes les ressources Kubernetes disponibles dans le cluster de destination.

## Conditions préalables
<a name="_prerequisites"></a>
+ Création d'un cluster EKS doté de la fonctionnalité Argo CD
+ Accès au référentiel configuré (voir[Configuration de l'accès au référentiel](argocd-configure-repositories.md))
+ Cluster cible enregistré (voir[Enregistrer les clusters cibles](argocd-register-clusters.md))
+  `kubectl`configuré pour communiquer avec votre cluster

## Création d'une application de base
<a name="_create_a_basic_application"></a>

Définissez une application déployée à partir d'un dépôt Git :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: default
```

**Note**  
`destination.name`À utiliser avec le nom du cluster que vous avez utilisé lors de l'enregistrement du cluster (comme `in-cluster` pour le cluster local). Le `destination.server` champ fonctionne également avec le cluster EKS ARNs, mais l'utilisation de noms de clusters est recommandée pour une meilleure lisibilité.

Appliquez l'application :

```
kubectl apply -f application.yaml
```

Afficher le statut de la demande :

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

## Configuration de la source
<a name="_source_configuration"></a>

 **Référentiel Git** :

```
spec:
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: kubernetes/manifests
```

 **Tag ou commit Git spécifique** :

```
spec:
  source:
    targetRevision: v1.2.0  # or commit SHA
```

 **Tableau du casque** :

```
spec:
  source:
    repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - values.yaml
      parameters:
      - name: image.tag
        value: v1.2.0
```

 **Diagramme de Helm avec des valeurs provenant d'un dépôt Git externe** (modèle multi-source) :

```
spec:
  sources:
  - repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - $values/environments/production/values.yaml
  - repoURL: https://github.com/example/config-repo
    targetRevision: main
    ref: values
```

Pour plus d'informations, consultez la section [Fichiers Helm Value provenant d'un référentiel Git externe](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) dans la documentation du CD Argo.

 **Tableau de bord de l'ECR** :

```
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
```

Si le rôle de capacité dispose des autorisations ECR requises, le référentiel est utilisé directement et aucune configuration de référentiel n'est requise. Consultez [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails.

 **Dépôt Git provenant de CodeCommit** :

```
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Si le rôle de capacité dispose des CodeCommit autorisations requises, le référentiel est utilisé directement et aucune configuration de référentiel n'est requise. Consultez [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails.

 **Dépôt Git provenant de CodeConnections** :

```
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Le format de l'URL du référentiel est dérivé de l'ARN de CodeConnections connexion. Si le rôle de capacité dispose des CodeConnections autorisations requises et qu'une connexion est configurée, le référentiel est utilisé directement et aucune configuration de référentiel n'est requise. Consultez [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails.

 **Personnalisez** :

```
spec:
  source:
    repoURL: https://github.com/example/kustomize-app
    targetRevision: main
    path: overlays/production
    kustomize:
      namePrefix: prod-
```

## Politiques de synchronisation
<a name="_sync_policies"></a>

Contrôlez la façon dont Argo CD synchronise les applications.

 **Synchronisation manuelle (par défaut)** :

Les applications nécessitent une approbation manuelle pour être synchronisées :

```
spec:
  syncPolicy: {}  # No automated sync
```

Déclenchez manuellement la synchronisation :

```
kubectl patch application guestbook -n argocd \
  --type merge \
  --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
```

 **Synchronisation automatique** :

Les applications se synchronisent automatiquement lorsque des modifications de Git sont détectées :

```
spec:
  syncPolicy:
    automated: {}
```

 **Auto-guérison** :

Annulez automatiquement les modifications manuelles apportées au cluster :

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

Lorsqu'il est activé, Argo CD annule toutes les modifications manuelles apportées directement au cluster, garantissant ainsi que Git reste la source de vérité.

 **Élagage** :

Supprimez automatiquement les ressources supprimées de Git :

```
spec:
  syncPolicy:
    automated:
      prune: true
```

**Avertissement**  
L'élagage supprimera les ressources de votre cluster. À utiliser avec prudence dans les environnements de production.

 **Synchronisation automatique combinée** :

```
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

 **Réessayez la configuration** :

Configurez le comportement des nouvelles tentatives en cas d'échec des synchronisations :

```
spec:
  syncPolicy:
    retry:
      limit: 5  # Number of failed sync attempts; unlimited if less than 0
      backoff:
        duration: 5s  # Amount to back off (default unit: seconds, also supports "2m", "1h")
        factor: 2  # Factor to multiply the base duration after each failed retry
        maxDuration: 3m  # Maximum amount of time allowed for the backoff strategy
```

Cela est particulièrement utile pour les ressources qui doivent d'abord CRDs être créées, ou lorsque vous travaillez avec des instances kro où le CRD n'est peut-être pas immédiatement disponible.

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

Configuration de synchronisation supplémentaire :

 **Créez un espace de noms s'il n'existe pas** :

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

 **Ignorez le cycle à sec en cas de ressources manquantes** :

Utile lors de l'application de ressources qui dépendent de celles CRDs qui n'existent pas encore (comme les instances Kro) :

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

Cela peut également être appliqué à des ressources spécifiques à l'aide d'une étiquette apposée sur la ressource elle-même.

 **Validez les ressources avant de les appliquer** :

```
spec:
  syncPolicy:
    syncOptions:
    - Validate=true
```

 **Appliquer de manière désynchronisée uniquement** :

```
spec:
  syncPolicy:
    syncOptions:
    - ApplyOutOfSyncOnly=true
```

## Fonctionnalités de synchronisation avancées
<a name="_advanced_sync_features"></a>

Argo CD prend en charge les fonctionnalités de synchronisation avancées pour les déploiements complexes :
+  **Synchronisation des ondes** - Contrôlez l'ordre de création des ressources à l'aide d'`argocd.argoproj.io/sync-wave`annotations
+  **Crochets de synchronisation** - Exécutez des tâches avant ou après la synchronisation avec `argocd.argoproj.io/hook` les annotations (PreSync, PostSync, SyncFail)
+  **Évaluation de l'état des ressources** - Contrôles de santé personnalisés pour les ressources spécifiques à l'application

Pour plus de détails, consultez [Sync Waves](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/) et [Resource Hooks](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) dans la documentation d'Argo CD.

## Ignorer les différences
<a name="_ignore_differences"></a>

Empêchez Argo CD de synchroniser des champs spécifiques gérés par d'autres contrôleurs (comme la gestion des répliques par HPA) :

```
spec:
  ignoreDifferences:
  - group: apps
    kind: Deployment
    jsonPointers:
    - /spec/replicas
```

Pour plus de détails sur les modèles d'ignorance et les exclusions de champs, voir [Diffing Customization](https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/) dans la documentation d'Argo CD.

## Déploiement dans plusieurs environnements
<a name="_multi_environment_deployment"></a>

Déployez la même application dans plusieurs environnements :

 **Développement** :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-dev
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: develop
    path: overlays/development
  destination:
    name: dev-cluster
    namespace: my-app
```

 **Produktion** :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-prod
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: overlays/production
  destination:
    name: prod-cluster
    namespace: my-app
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
```

## Surveiller et gérer les applications
<a name="_monitor_and_manage_applications"></a>

 **Afficher le statut de la demande** :

```
kubectl get application my-app -n argocd
```

 **Accédez à l'interface utilisateur d'Argo CD** :

Ouvrez l'interface utilisateur du CD Argo via la console EKS pour afficher la topologie de l'application, l'état de synchronisation, l'état des ressources et l'historique des déploiements. Consultez les instructions [Travailler avec Argo CD](working-with-argocd.md) d'accès à l'interface utilisateur.

 **Applications de rétrogradation** :

Revenez à une version précédente à l'aide de l'interface utilisateur Argo CD, de l'Argo CD CLI, ou `targetRevision` en mettant à jour la spécification de l'application avec un commit ou une balise Git précédent.

À l'aide de l'Argo CD CLI :

```
argocd app rollback argocd/my-app <revision-id>
```

**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 :. `namespace/appname`

Pour plus d'informations, consultez la section [restauration de l'application argocd dans la documentation](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_rollback/) d'Argo CD.

## Ressources supplémentaires
<a name="_additional_resources"></a>
+  [Travailler avec des projets Argo CD](argocd-projects.md)- Organisez les applications avec des projets pour les environnements à locataires multiples
+  [Utiliser ApplicationSets](argocd-applicationsets.md)- Déployez sur plusieurs clusters à l'aide de modèles
+  [Spécification de l'application](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) - Référence complète de l'API de l'application
+  [Options de synchronisation](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/) - Configuration de synchronisation avancée

# Utiliser ApplicationSets
<a name="argocd-applicationsets"></a>

ApplicationSets générez plusieurs applications à partir de modèles, ce qui vous permet de déployer la même application sur plusieurs clusters, environnements ou espaces de noms avec une seule définition de ressource.

## Conditions préalables
<a name="_prerequisites"></a>
+ Création d'un cluster EKS doté de la fonctionnalité Argo CD
+ Accès au référentiel configuré (voir[Configuration de l'accès au référentiel](argocd-configure-repositories.md))
+  `kubectl`configuré pour communiquer avec votre cluster

**Note**  
Il n'est pas nécessaire de disposer de plusieurs clusters cibles pour ApplicationSets. Vous pouvez utiliser des générateurs autres que le générateur de clusters (tels que des générateurs de listes, de git ou de matrices) pour déployer des applications sans clusters distants.

## Comment ApplicationSets travailler
<a name="_how_applicationsets_work"></a>

ApplicationSets utilisez des générateurs pour produire des paramètres, puis appliquez ces paramètres à un modèle d'application. Chaque ensemble de paramètres générés crée une application.

Générateurs courants pour les déploiements EKS :
+  **Générateur de listes** - Définissez explicitement les clusters et les paramètres pour chaque environnement
+  **Générateur de clusters** - Déploiement automatique sur tous les clusters enregistrés
+  **Générateur Git** - Génère des applications à partir de la structure du référentiel
+  **Générateur de matrices** - Combinez des générateurs pour des déploiements multidimensionnels
+  **Générateur de fusion** - Fusionnez les paramètres de plusieurs générateurs

Pour une référence complète sur le générateur, consultez [ApplicationSet la documentation](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/).

## Générateur de listes
<a name="_list_generator"></a>

Déployez sur plusieurs clusters avec une configuration explicite :

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: guestbook-all-clusters
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - environment: dev
        replicas: "2"
      - environment: staging
        replicas: "3"
      - environment: prod
        replicas: "5"
  template:
    metadata:
      name: 'guestbook-{{environment}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/guestbook
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{environment}}-cluster'
        namespace: guestbook
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

**Note**  
À utiliser `destination.name` avec les noms de clusters pour une meilleure lisibilité. Le `destination.server` champ fonctionne également avec le cluster EKS ARNs si nécessaire.

Cela crée trois applications : `guestbook-dev``guestbook-staging`, et`guestbook-prod`.

## Générateur de clusters
<a name="_cluster_generator"></a>

Déployez automatiquement sur tous les clusters enregistrés :

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-addons
  namespace: argocd
spec:
  generators:
  - clusters: {}
  template:
    metadata:
      name: '{{name}}-addons'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/cluster-addons
        targetRevision: HEAD
        path: addons
      destination:
        server: '{{server}}'
        namespace: kube-system
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

Cela crée automatiquement une application pour chaque cluster enregistré.

 **Clusters de filtres** :

`matchLabels`À utiliser pour inclure des clusters spécifiques ou `matchExpressions` pour exclure des clusters :

```
spec:
  generators:
  - clusters:
      selector:
        matchLabels:
          environment: production
        matchExpressions:
        - key: skip-appset
          operator: DoesNotExist
```

## Générateurs Git
<a name="_git_generators"></a>

Les générateurs Git créent des applications basées sur la structure du référentiel :
+  **Générateur de répertoires** - Déployez chaque répertoire en tant qu'application distincte (utile pour les microservices)
+  **Générateur de fichiers** : générez des applications à partir de fichiers de paramètres (utile pour les déploiements multi-locataires)

 **Exemple : déploiement de microservices** 

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: microservices
  namespace: argocd
spec:
  generators:
  - git:
      repoURL: https://github.com/example/microservices
      revision: HEAD
      directories:
      - path: services/*
  template:
    metadata:
      name: '{{path.basename}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/microservices
        targetRevision: HEAD
        path: '{{path}}'
      destination:
        name: my-cluster
        namespace: '{{path.basename}}'
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - CreateNamespace=true
```

Pour plus de détails sur les générateurs Git et la configuration basée sur des fichiers, consultez [Git Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) dans la documentation du CD Argo.

## Générateur de matrices
<a name="_matrix_generator"></a>

Combinez plusieurs générateurs pour les déployer sur plusieurs dimensions (environnements × clusters) :

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: multi-env-multi-cluster
  namespace: argocd
spec:
  generators:
  - matrix:
      generators:
      - list:
          elements:
          - environment: dev
          - environment: staging
          - environment: prod
      - clusters:
          selector:
            matchLabels:
              region: us-west-2
  template:
    metadata:
      name: 'app-{{environment}}-{{name}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{name}}'
        namespace: 'app-{{environment}}'
```

Pour plus de détails sur la combinaison de générateurs, voir [Matrix Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) dans la documentation d'Argo CD.

## Déploiement multirégional
<a name="_multi_region_deployment"></a>

Déployez sur des clusters répartis dans plusieurs régions :

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: global-app
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - clusterName: prod-us-west
        region: us-west-2
      - clusterName: prod-us-east
        region: us-east-1
      - clusterName: prod-eu-west
        region: eu-west-1
  template:
    metadata:
      name: 'app-{{region}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: kubernetes
        helm:
          parameters:
          - name: region
            value: '{{region}}'
      destination:
        name: '{{clusterName}}'
        namespace: app
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

## Gérez ApplicationSets
<a name="_manage_applicationsets"></a>

 **Afficher ApplicationSets et générer les applications** :

```
kubectl get applicationsets -n argocd
kubectl get applications -n argocd -l argocd.argoproj.io/application-set-name=<applicationset-name>
```

 **Mettez à jour et ApplicationSet** :

Modifiez les ApplicationSet spécifications et réappliquez. Argo CD met automatiquement à jour toutes les applications générées :

```
kubectl apply -f applicationset.yaml
```

 **Supprimer un ApplicationSet** :

```
kubectl delete applicationset <name> -n argocd
```

**Avertissement**  
La suppression et la ApplicationSet suppression de toutes les applications générées. Si ces applications l'ont fait`prune: true`, leurs ressources seront également supprimées des clusters cibles.  
Pour préserver les ressources déployées lors de la suppression d'un ApplicationSet, définissez `.syncPolicy.preserveResourcesOnDeletion` sur `true` dans la ApplicationSet spécification. Pour plus d'informations, consultez la section [Élagage des applications et suppression des ressources](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Application-Deletion/) dans la documentation d'Argo CD.

**Important**  
La ApplicationSets fonctionnalité d'Argo CD comporte des considérations de sécurité que vous devez connaître avant de l'utiliser ApplicationSets. Pour plus d'informations, consultez [ApplicationSet la section Sécurité](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Security/) dans la documentation d'Argo CD.

## Ressources supplémentaires
<a name="_additional_resources"></a>
+  [Travailler avec des projets Argo CD](argocd-projects.md)- Organisez ApplicationSets avec des projets
+  [Création d'applications](argocd-create-application.md)- Comprendre la configuration des applications
+  [ApplicationSet Documentation](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) - Référence et modèles complets du générateur
+  [Référence du générateur](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators/) - Spécifications détaillées du générateur

# Considérations relatives à Argo CD
<a name="argocd-considerations"></a>

Cette rubrique aborde les considérations importantes relatives à l'utilisation de la fonctionnalité EKS pour Argo CD, notamment la planification, les autorisations, l'authentification et les modèles de déploiement multi-clusters.

## Planification
<a name="_planning"></a>

Avant de déployer Argo CD, tenez compte des points suivants :

 **Stratégie de dépôt** : déterminez où les manifestes de votre application seront stockés (CodeCommit, GitHub, GitLab, Bitbucket). Planifiez la structure de votre référentiel et votre stratégie de branchement pour différents environnements.

 **Stratégie RBAC** : planifiez les équipes ou les utilisateurs qui devraient avoir un accès administrateur, éditeur ou spectateur. Associez-les à des groupes AWS Identity Center ou à des rôles Argo CD.

 **Architecture multi-clusters** : déterminez si vous allez gérer plusieurs clusters à partir d'une seule instance Argo CD. Envisagez d'utiliser un cluster de gestion dédié pour Argo CD.

 **Organisation des applications** : planifiez la manière dont vous allez structurer les applications et ApplicationSets. Envisagez d'utiliser des projets pour organiser les applications par équipe ou par environnement.

 **Politiques de synchronisation** : décidez si les applications doivent être synchronisées automatiquement ou si elles doivent être approuvées manuellement. La synchronisation automatisée est courante pour le développement, manuelle pour la production.

## Permissions
<a name="_permissions"></a>

Pour des informations détaillées sur les rôles de capacité IAM, les politiques de confiance et les meilleures pratiques de sécurité, consultez [Fonctionnalité Amazon EKS : rôle IAM](capability-role.md) et[Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md).

### Présentation du rôle de capacité IAM
<a name="_iam_capability_role_overview"></a>

Lorsque vous créez une ressource de capacité Argo CD, vous fournissez un rôle de capacité IAM. Contrairement à ACK, Argo CD gère principalement les ressources Kubernetes, et non les ressources directement. AWS Cependant, le rôle de capacité IAM est requis pour :
+ Accès aux référentiels Git privés dans CodeCommit
+ Intégration à AWS Identity Center pour l'authentification
+ Accès aux AWS secrets dans Secrets Manager (si configuré)
+ Déploiements entre clusters vers d'autres clusters EKS

### CodeCommit intégration
<a name="_codecommit_integration"></a>

Si vous utilisez des CodeCommit référentiels, joignez une politique avec des autorisations de lecture :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "*"
    }
  ]
}
```

**Important**  
Pour une utilisation en production, limitez le `Resource` champ à un référentiel spécifique ARNs au lieu de l'utiliser`"*"`.  
Exemple :  

```
"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"
```
Cela limite l'accès de la fonctionnalité Argo CD aux seuls référentiels qu'elle doit gérer.

### Intégration de Secrets Manager
<a name="_secrets_manager_integration"></a>

Si vous stockez les informations d'identification du référentiel dans Secrets Manager, joignez la politique gérée pour l'accès en lecture :

```
arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess
```

Cette politique inclut les autorisations nécessaires : `secretsmanager:GetSecretValue``secretsmanager:DescribeSecret`, et les autorisations de déchiffrement KMS.

### Configuration de base
<a name="_basic_setup"></a>

Pour les fonctionnalités de base d'Argo CD avec les référentiels Git publics, aucune politique IAM supplémentaire n'est requise au-delà de la politique de confiance.

## Authentification
<a name="_authentication"></a>

### AWS Intégration à Identity Center
<a name="shared_aws_identity_center_integration"></a>

La fonctionnalité gérée d'Argo CD s'intègre directement à AWS Identity Center (anciennement AWS SSO), ce qui vous permet d'utiliser votre fournisseur d'identité existant pour l'authentification.

Lorsque vous configurez AWS l'intégration d'Identity Center :

1. Les utilisateurs accèdent à l'interface utilisateur du CD Argo via la console EKS

1. Ils s'authentifient à l'aide AWS d'Identity Center (qui peut être fédéré auprès de votre fournisseur d'identité d'entreprise)

1.  AWS Identity Center fournit des informations sur les utilisateurs et les groupes à Argo CD

1. Argo CD associe les utilisateurs et les groupes aux rôles RBAC en fonction de votre configuration

1. Les utilisateurs ne voient que les applications et les ressources auxquelles ils sont autorisés à accéder

### Simplification de l'accès grâce aux ensembles d'autorisations Identity Center
<a name="_simplifying_access_with_identity_center_permission_sets"></a>

 AWS Identity Center propose deux chemins d'authentification distincts lorsque vous travaillez avec Argo CD :

 **Authentification via l'API Argo CD** : Identity Center fournit une authentification SSO à l'interface utilisateur et à l'API d'Argo CD. Ceci est configuré via les mappages de rôles RBAC de la fonctionnalité Argo CD.

 **Accès au cluster EKS** : la fonctionnalité Argo CD utilise le rôle IAM fourni par le client pour s'authentifier auprès des clusters EKS par le biais d'entrées d'accès. Ces entrées d'accès peuvent être configurées manuellement pour ajouter ou supprimer des autorisations.

Vous pouvez utiliser les [ensembles d'autorisations Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) pour simplifier la gestion des identités en autorisant une seule identité à accéder à la fois aux clusters Argo CD et EKS. Cela réduit les frais généraux en vous obligeant à gérer une seule identité sur les deux systèmes, plutôt que de conserver des informations d'identification distinctes pour l'accès au CD Argo et l'accès au cluster.

### Mappages de rôles RBAC
<a name="_rbac_role_mappings"></a>

Argo CD possède des rôles intégrés que vous pouvez associer aux utilisateurs et aux groupes AWS d'Identity Center :

 **ADMINISTRATEUR** : accès complet à toutes les applications et à tous les paramètres. Peut créer, mettre à jour et supprimer des applications. Peut gérer la configuration d'Argo CD.

 **EDITEUR** : Peut créer et modifier des applications. Impossible de modifier les paramètres d'Argo CD ou de supprimer des applications.

 **VIEWER** : accès en lecture seule aux applications. Peut consulter l'état et l'historique de la demande. Impossible d'apporter des modifications.

**Note**  
Les noms de rôles distinguent les majuscules des minuscules et doivent être en majuscules (ADMIN, EDITOR, VIEWER).

**Important**  
L'intégration d'EKS Capabilities à AWS Identity Center prend en charge jusqu'à 1 000 identités par fonctionnalité Argo CD. Une identité peut être un utilisateur ou un groupe.

## Déploiements multiclusters
<a name="_multi_cluster_deployments"></a>

La fonctionnalité gérée d'Argo CD prend en charge les déploiements multi-clusters, ce qui vous permet de gérer des applications dans des clusters de développement, de préparation et de production à partir d'une seule instance Argo CD.

### Comment fonctionne le multi-cluster
<a name="_how_multi_cluster_works"></a>

Lorsque vous enregistrez des clusters supplémentaires avec Argo CD :

1. Vous créez des secrets de cluster qui font référence aux clusters EKS cibles par ARN

1. Vous créez des applications ou ApplicationSets qui ciblent différents clusters

1. Argo CD se connecte à chaque cluster pour déployer et surveiller les ressources

1. Vous visualisez et gérez tous les clusters à partir d'une seule interface utilisateur Argo CD

### Prérequis pour le multi-cluster
<a name="_prerequisites_for_multi_cluster"></a>

Avant d'enregistrer des clusters supplémentaires :
+ Créez une entrée d'accès sur le cluster cible pour le rôle de fonctionnalité Argo CD
+ Garantir la connectivité réseau entre la fonctionnalité Argo CD et les clusters cibles
+ Vérifiez les autorisations IAM pour accéder aux clusters cibles

### Enregistrer un cluster
<a name="_register_a_cluster"></a>

Enregistrez les clusters à l'aide de Kubernetes Secrets dans l'espace de noms. `argocd`

Obtenez l'ARN du cluster cible. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster cible et remplacez *target-cluster* par le nom de votre cluster cible.

```
aws eks describe-cluster \
  --region region-code \
  --name target-cluster \
  --query 'cluster.arn' \
  --output text
```

Créez un secret de cluster à l'aide de l'ARN du cluster :

```
apiVersion: v1
kind: Secret
metadata:
  name: target-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
type: Opaque
stringData:
  name: target-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster
  project: default
```

**Important**  
Utilisez l'ARN du cluster EKS `server` sur le terrain, et non l'URL du serveur d'API Kubernetes. La fonctionnalité gérée nécessite ARNs d'identifier les clusters cibles.

Appliquez le secret :

```
kubectl apply -f cluster-secret.yaml
```

### Configurer l'entrée d'accès sur le cluster cible
<a name="_configure_access_entry_on_target_cluster"></a>

Le cluster cible doit disposer d'une entrée d'accès qui accorde au rôle Argo CD l'autorisation de déployer des applications. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster cible, remplacez *target-cluster* par le nom de votre cluster cible et remplacez l'ARN par l'ARN de votre rôle de capacité Argo CD.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD \
  --kubernetes-groups system:masters
```

**Note**  
Pour une utilisation en production, pensez à utiliser des groupes Kubernetes plus restrictifs au lieu de. `system:masters`

### Accès au cluster privé
<a name="_private_cluster_access"></a>

La fonctionnalité gérée par Argo CD peut être déployée sur des clusters EKS entièrement privés sans nécessiter de peering VPC ou de configuration réseau spécialisée. AWS gère automatiquement la connectivité entre la fonctionnalité Argo CD et les clusters distants privés. Assurez-vous que les contrôles d'accès à votre référentiel et les politiques RBAC d'Argo CD sont correctement configurés.

### Déploiements entre comptes
<a name="_cross_account_deployments"></a>

Pour les déploiements entre comptes, ajoutez le rôle de capacité Argo CD IAM du compte source à l'entrée d'accès EKS du cluster cible :

1. Dans le compte cible, créez une entrée d'accès sur le cluster EKS cible

1. Utilisez l'Argo CD IAM Capability Role (ARN) du compte source comme principal

1. Configurer les autorisations RBAC Kubernetes appropriées pour l'entrée d'accès

1. Enregistrez le cluster cible dans Argo CD à l'aide de son ARN de cluster EKS

Aucune création de rôle IAM ou configuration de politique de confiance supplémentaire n'est requise : les entrées d'accès EKS gèrent l'accès entre comptes.

## Bonnes pratiques
<a name="_best_practices"></a>

 **Utilisez des sources déclaratives comme source de vérité** : stockez tous les manifestes de vos applications dans des sources déclaratives (référentiels Git, registres Helm ou images OCI), ce qui permet le contrôle des versions, les pistes d'audit et la collaboration.

 **Mettez en œuvre un RBAC approprié** : utilisez AWS l'intégration d'Identity Center pour contrôler qui peut accéder aux applications dans Argo CD et les gérer. Argo CD permet un contrôle d'accès précis aux ressources des applications (déploiements, modules, ConfigMaps secrets).

 **Utilisation ApplicationSets pour les déploiements multi-environnements** : ApplicationSets à utiliser pour déployer des applications sur plusieurs clusters ou espaces de noms avec différentes configurations.

## Gestion du cycle de vie
<a name="_lifecycle_management"></a>

### Politiques de synchronisation des applications
<a name="_application_sync_policies"></a>

Contrôlez la façon dont Argo CD synchronise les applications :

 **Synchronisation manuelle** : les applications nécessitent une approbation manuelle pour synchroniser les modifications. Recommandé pour les environnements **de production**.

 **Synchronisation automatique** : les applications se synchronisent automatiquement lorsque des modifications de Git sont détectées. Commun pour les environnements de développement et de mise en scène.

 **Réparation automatique** : annule automatiquement les modifications manuelles apportées au cluster. Garantit que l'état du cluster correspond à Git.

 **Élagage** : Supprime automatiquement les ressources supprimées de Git. À utiliser avec prudence car cela peut supprimer des ressources.

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

Argo CD surveille en permanence l'état des applications :
+  **Sain** : toutes les ressources fonctionnent comme prévu
+  **Progression** : des ressources sont en cours de création ou de mise à jour
+  **Dégradé** : certaines ressources ne sont pas saines
+  **Suspendu** : l'application est suspendue
+  **Manquant** : des ressources sont absentes du cluster

### Synchroniser les fenêtres
<a name="_sync_windows"></a>

Configurez les fenêtres de synchronisation pour contrôler le moment où les applications peuvent être synchronisées :
+ Autoriser les synchronisations uniquement pendant les fenêtres de maintenance
+ Bloquer les synchronisations pendant les heures ouvrables
+ Programmez des synchronisations automatiques à des heures spécifiques
+ Utilisez des fenêtres de synchronisation dans les situations où vous devez apporter des modifications et arrêter toute synchronisation (scénarios de rupture de vitre)

## Configuration du webhook pour une synchronisation plus rapide
<a name="_webhook_configuration_for_faster_sync"></a>

Par défaut, Argo CD interroge les référentiels Git toutes les 6 minutes pour détecter les modifications. Pour des déploiements plus réactifs, configurez les webhooks Git pour déclencher des synchronisations immédiates lorsque des modifications sont apportées.

Les webhooks offrent plusieurs avantages :
+ Réponse de synchronisation immédiate lorsque le code est envoyé (secondes au lieu de minutes)
+ Réduction des frais de sondage et amélioration des performances du système
+ Utilisation plus efficace des limites de débit des API
+ Meilleure expérience utilisateur grâce à des commentaires plus rapides

### Point de terminaison Webhook
<a name="_webhook_endpoint"></a>

L'URL du webhook suit le modèle`${serverUrl}/api/webhook`, où se `serverUrl` trouve l'URL de votre serveur Argo CD.

Par exemple, si l'URL de votre serveur Argo CD est`https://abc123.eks-capabilities.us-west-2.amazonaws.com`, l'URL du webhook est :

```
https://abc123.eks-capabilities.us-west-2.amazonaws.com/api/webhook
```

### Configurer les webhooks par le fournisseur Git
<a name="_configure_webhooks_by_git_provider"></a>

 **GitHub**: Dans les paramètres de votre dépôt, ajoutez un webhook avec l'URL du webhook Argo CD. Définissez le type de contenu sur `application/json` et sélectionnez « Juste l'événement push ».

 **GitLab**: Dans les paramètres de votre projet, ajoutez un webhook avec l'URL du webhook Argo CD. Activez les « événements push » et éventuellement « Tag les événements push ».

 **Bitbucket** : Dans les paramètres de votre dépôt, ajoutez un webhook avec l'URL du webhook Argo CD. Sélectionnez « Repository push » comme déclencheur.

 **CodeCommit**: Créez une EventBridge règle Amazon qui déclenche les changements d'état CodeCommit du référentiel et envoie des notifications au point de terminaison du webhook Argo CD.

Pour obtenir des instructions détaillées sur la configuration du webhook, voir Configuration du [webhook sur Argo CD](https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/).

**Note**  
Les webhooks complètent les sondages, ils ne les remplacent pas. Argo CD continue d'interroger les référentiels comme mécanisme de secours au cas où les notifications du webhook seraient manquées.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Travailler avec Argo CD](working-with-argocd.md)- Apprenez à créer et à gérer des applications Argo CD
+  [Résoudre les problèmes liés aux fonctionnalités d'Argo CD](argocd-troubleshooting.md)- Résoudre les problèmes liés à Argo CD
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez vos ressources de capacités Argo CD

# Résoudre les problèmes liés aux fonctionnalités d'Argo CD
<a name="argocd-troubleshooting"></a>

Cette rubrique fournit des conseils de dépannage relatifs à la fonctionnalité EKS pour Argo CD, notamment les vérifications de l'état des fonctionnalités, les problèmes de synchronisation des applications, l'authentification des référentiels et les déploiements multiclusters.

**Note**  
Les fonctionnalités EKS sont entièrement gérées et exécutées en dehors de votre cluster. Vous n'avez pas accès aux journaux du serveur Argo CD ni à l'espace de `argocd` noms. Le dépannage se concentre sur l'état des fonctionnalités, l'état des applications et la configuration.

## La fonctionnalité est ACTIVE mais les applications ne se synchronisent pas
<a name="_capability_is_active_but_applications_arent_syncing"></a>

Si la fonctionnalité de votre Argo CD affiche l'`ACTIVE`état mais que les applications ne se synchronisent pas, vérifiez l'état de la fonctionnalité et l'état de l'application.

 **Vérifiez l'état de santé des capacités** :

Vous pouvez consulter les problèmes liés à l'état et à l'état des fonctionnalités dans la console EKS ou à l'aide de la AWS CLI.

 **Console** :

1. Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Sélectionnez le nom de votre cluster.

1. Sélectionnez l’onglet **Observabilité**.

1. Sélectionnez **Surveiller le cluster**.

1. Choisissez l'onglet **Fonctionnalités** pour afficher l'état et l'état de toutes les fonctionnalités.

 ** AWS CLI** :

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd

# Look for issues in the health section
```

 **Causes courantes :**
+  **Référentiel non configuré** : dépôt Git non ajouté à Argo CD
+  **Échec de l'authentification** : clé SSH, jeton ou CodeCommit informations d'identification non valides
+  **Application non créée** : aucune ressource d'application n'existe dans le cluster
+  **Politique de synchronisation** : synchronisation manuelle requise (synchronisation automatique non activée)
+  Autorisations **IAM : autorisations** manquantes pour CodeCommit ou Secrets Manager

 **Vérifiez l'état de la demande** :

```
# List applications
kubectl get application -n argocd

# View sync status
kubectl get application my-app -n argocd -o jsonpath='{.status.sync.status}'

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

 **Vérifiez les conditions de candidature** :

```
# Describe application to see detailed status
kubectl describe application my-app -n argocd

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

## Applications bloquées dans l'état « En cours »
<a name="_applications_stuck_in_progressing_state"></a>

Si une application s'affiche `Progressing` mais n'atteint jamais les `Healthy` objectifs, vérifiez l'état des ressources et les événements de l'application.

 **Vérifiez l'état des ressources** :

```
# View application resources
kubectl get application my-app -n argocd -o jsonpath='{.status.resources}'

# Check for unhealthy resources
kubectl describe application my-app -n argocd | grep -A 10 "Health Status"
```

 **Causes courantes :**
+  **Déploiement non prêt** : les pods ne démarrent pas ou les sondes de disponibilité échouent
+  **Dépendances** des ressources : ressources attendant que d'autres ressources soient prêtes
+  **Erreurs d'extraction d'image : les** images du conteneur ne sont pas accessibles
+  **Ressources insuffisantes** : le cluster ne dispose pas de processeur ou de mémoire pour les pods

 **Vérifiez la configuration du cluster cible** (pour les configurations multi-clusters) :

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# View cluster secret details
kubectl get secret cluster-secret-name -n argocd -o yaml
```

## Défaillances d'authentification du référentiel
<a name="_repository_authentication_failures"></a>

Si Argo CD ne peut pas accéder à vos référentiels Git, vérifiez la configuration de l'authentification.

 **Pour les CodeCommit référentiels** :

Vérifiez que le rôle de capacité IAM dispose d' CodeCommit autorisations :

```
# View IAM policies
aws iam list-attached-role-policies --role-name my-argocd-capability-role
aws iam list-role-policies --role-name my-argocd-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-argocd-capability-role --policy-name policy-name
```

Le rôle nécessite une `codecommit:GitPull` autorisation pour accéder aux référentiels.

 **Pour les référentiels Git privés** :

Vérifiez que les informations d'identification du référentiel sont correctement configurées :

```
# Check repository secret exists
kubectl get secret -n argocd repo-secret-name -o yaml
```

Assurez-vous que le secret contient les informations d'authentification correctes (clé SSH, jeton ou nom d'utilisateur/mot de passe).

 **Pour les référentiels utilisant Secrets Manager** :

```
# Verify IAM Capability Role has Secrets Manager permissions
aws iam list-attached-role-policies --role-name my-argocd-capability-role

# Test secret retrieval
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:region-code:111122223333:secret:my-secret
```

## Problèmes de déploiement multicluster
<a name="_multi_cluster_deployment_issues"></a>

Si les applications ne sont pas déployées sur des clusters distants, vérifiez l'enregistrement du cluster et la configuration des accès.

 **Vérifiez l'enregistrement du cluster** :

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# Verify cluster secret format
kubectl get secret CLUSTER_SECRET_NAME -n argocd -o yaml
```

Assurez-vous que le `server` champ contient l'ARN du cluster EKS, et non l'URL de l'API Kubernetes.

 **Vérifiez l'entrée d'accès au cluster cible** :

Sur le cluster cible, vérifiez que le rôle Argo CD Capability possède une entrée d'accès :

```
# List access entries (run on target cluster or use AWS CLI)
aws eks list-access-entries --cluster-name target-cluster

# Describe specific access entry
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/my-argocd-capability-role
```

 **Vérifiez les autorisations IAM pour les comptes multiples :**

Pour les déploiements entre comptes, vérifiez que le rôle Argo CD Capability possède une entrée d'accès sur le cluster cible. La fonctionnalité gérée utilise les entrées d'accès EKS pour l'accès entre comptes, et non l'hypothèse du rôle IAM.

Pour en savoir plus sur la configuration multi-clusters, consultez[Enregistrer les clusters cibles](argocd-register-clusters.md).

## Étapes suivantes
<a name="_next_steps"></a>
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Considérations et meilleures pratiques relatives à Argo CD
+  [Travailler avec Argo CD](working-with-argocd.md)- Création et gestion des applications Argo CD
+  [Enregistrer les clusters cibles](argocd-register-clusters.md)- Configurer des déploiements multi-clusters
+  [Dépannage des fonctionnalités EKS](capabilities-troubleshooting.md)- Conseils généraux de résolution des problèmes liés aux fonctionnalités

# Comparaison de la fonctionnalité EKS pour Argo CD à celle d'Argo CD autogéré
<a name="argocd-comparison"></a>

La fonctionnalité EKS pour Argo CD fournit une expérience Argo CD entièrement gérée qui s'exécute dans EKS. Pour une comparaison générale des fonctionnalités EKS par rapport aux solutions autogérées, voir[Considérations relatives aux fonctionnalités EKS](capabilities-considerations.md). Cette rubrique se concentre sur les différences spécifiques à Argo CD, notamment l'authentification, la gestion multi-clusters et la prise en charge des fonctionnalités en amont.

## Différences par rapport à l'Argo CD en amont
<a name="_differences_from_upstream_argo_cd"></a>

La fonctionnalité EKS pour Argo CD est basée sur le CD Argo en amont, mais elle diffère en termes d'accès, de configuration et d'intégration aux AWS services.

 **RBAC et authentification** : cette fonctionnalité inclut trois rôles RBAC (administrateur, éditeur, lecteur) et utilise AWS Identity Center pour l'authentification au lieu de l'authentification intégrée d'Argo CD. Configurez les mappages de rôles via le `rbacRoleMapping` paramètre de la fonctionnalité pour mapper les groupes Identity Center aux rôles Argo CD, et non via Argo CD. `argocd-rbac-cm` ConfigMap L'interface utilisateur du CD Argo est hébergée avec sa propre URL directe (trouvez-la dans la console EKS sous l'onglet Capabilities de votre cluster), et l'accès à l'API utilise AWS l'authentification et l'autorisation via IAM.

 **Configuration du cluster** : cette fonctionnalité ne configure pas automatiquement le cluster local ou les hub-and-spoke topologies. Vous configurez vos clusters cibles de déploiement et vos entrées d'accès EKS. Cette fonctionnalité prend uniquement en charge les clusters Amazon EKS en tant que cibles de déploiement utilisant le cluster EKS ARNs (et non le serveur d'API Kubernetes). URLs La fonctionnalité n'ajoute pas automatiquement le cluster local (`kubernetes.default.svc`) en tant que cible de déploiement. Pour effectuer le déploiement sur le même cluster où la fonctionnalité a été créée, enregistrez explicitement ce cluster à l'aide de son ARN.

 **Accès aux clusters distants simplifié** : cette fonctionnalité simplifie les déploiements multi-clusters en utilisant les entrées d'accès EKS pour accorder un accès Argo CD aux clusters distants, éliminant ainsi le besoin de configurer des rôles IAM pour les comptes de service (IRSA) ou de définir des hypothèses de rôles IAM entre comptes. Cette fonctionnalité fournit également un accès transparent à des clusters EKS entièrement privés sans nécessiter de peering VPC ou de configuration réseau spécialisée. Elle AWS gère automatiquement la connectivité entre la fonctionnalité Argo CD et les clusters distants privés.

 **Intégration directe des AWS services** : la fonctionnalité fournit une intégration directe aux AWS services par le biais des autorisations IAM du rôle de capacité. Vous pouvez CodeCommit référencer des référentiels, des diagrammes ECR Helm et CodeConnections directement dans les ressources de l'application sans créer de configurations de référentiel. Cela simplifie l'authentification et élimine le besoin de gérer des informations d'identification distinctes pour les AWS services. Consultez [Configuration de l'accès au référentiel](argocd-configure-repositories.md) pour plus de détails.

 **Support des espaces de noms** : cette fonctionnalité vous oblige à spécifier un espace de noms unique dans lequel les ressources Argo CD ApplicationSet, application et AppProject personnalisées doivent être créées.

**Note**  
Cette restriction d'espace de noms s'applique uniquement aux ressources personnalisées d'Argo CD (Application, ApplicationSet, AppProject). Les charges de travail de votre application peuvent être déployées dans n'importe quel espace de noms de n'importe quel cluster cible. Par exemple, si vous créez la fonctionnalité avec un espace de noms`argocd`, toutes les applications CRs doivent être créées dans l'`argocd`espace de noms, mais ces applications peuvent déployer des charges de travail vers`default`, `production``staging`, ou tout autre espace de noms.

**Note**  
La fonctionnalité gérée comporte des exigences spécifiques en matière d'utilisation et de AppProject configuration de la CLI :  
Lorsque vous utilisez l'Argo CD CLI, spécifiez les applications avec le préfixe d'espace de noms : `argocd app sync namespace/appname` 
AppProject les ressources doivent spécifier `.spec.sourceNamespaces` les espaces de noms que le projet peut surveiller pour les applications (généralement définis sur l'espace de noms que vous avez spécifié lors de la création de la fonctionnalité)
Les annotations de suivi des ressources utilisent le format suivant : `namespace_appname:group/kind:namespace/name` 

 **Fonctionnalités non prises en charge** : les fonctionnalités suivantes ne sont pas disponibles dans la fonctionnalité gérée :
+ Plugins de gestion de configuration (CMPs) pour la génération de manifestes personnalisés
+ Scripts Lua personnalisés pour l'évaluation de l'état des ressources (les contrôles de santé intégrés pour les ressources standard sont pris en charge)
+ Le contrôleur des notifications
+ Fournisseurs SSO personnalisés (seul AWS Identity Center est pris en charge, y compris l'identité fédérée tierce via AWS Identity Center)
+ Extensions d'interface utilisateur et bannières personnalisées
+ Accès direct à `argocd-cm``argocd-params`, et autres configurations ConfigMaps
+ Modification du délai de synchronisation (fixé à 120 secondes)

 **Compatibilité** : les applications ApplicationSets fonctionnent de la même manière qu'Argo CD en amont, sans aucune modification de vos manifestes. La fonctionnalité utilise les mêmes Kubernetes APIs et CRDs les outils `kubectl` fonctionnent donc de la même manière. Cette fonctionnalité prend entièrement en charge les applications et ApplicationSets les GitOps flux de travail avec synchronisation automatique, les déploiements multiclusters, les politiques de synchronisation (automatisées, élagage, auto-guérison), les vagues de synchronisation et les hooks, l'évaluation de l'état des ressources Kubernetes standard, les fonctionnalités de restauration, les sources de référentiel Git (HTTPS et SSH), Helm, Kustomize et les manifestes YAML simples, les informations d'identification des GitHub applications, les projets de mutualisation, les exclusions et inclusions de ressources.

## Utilisation de l'Argo CD CLI avec la fonctionnalité gérée
<a name="argocd-cli-configuration"></a>

L'Argo CD CLI fonctionne de la même manière que l'Argo CD en amont pour la plupart des opérations, mais l'authentification et l'enregistrement du cluster diffèrent.

### Conditions préalables
<a name="_prerequisites"></a>

Installez l'Argo CD CLI en suivant les [instructions d'installation en amont](https://argo-cd.readthedocs.io/en/stable/cli_installation/).

### Configuration
<a name="_configuration"></a>

Configurez la CLI à l'aide de variables d'environnement :

1. Obtenez l'URL du serveur Argo CD depuis la console EKS (sous l'onglet **Capabilities** de votre cluster) ou à l'aide de la AWS CLI. Le `https://` préfixe doit être supprimé :

   ```
   export ARGOCD_SERVER=$(aws eks describe-capability \
     --cluster-name my-cluster \
     --capability-name my-argocd \
     --query 'capability.configuration.argoCd.serverUrl' \
     --output text \
     --region region-code | sed 's|^https://||')
   ```

1. Générez un jeton de compte depuis l'interface utilisateur d'Argo CD (**Paramètres** → **Comptes** → **admin** → **Générer un nouveau jeton**), puis définissez-le comme variable d'environnement :

   ```
   export ARGOCD_AUTH_TOKEN="your-token-here"
   ```

**Important**  
Cette configuration utilise le jeton de compte administrateur pour la configuration initiale et les flux de travail de développement. Pour les cas d'utilisation en production, utilisez des rôles et des jetons adaptés au projet afin de respecter le principe du moindre privilège. Pour plus d'informations sur la configuration des rôles de projet et du RBAC, consultez[Configurer les autorisations d'Argo CD](argocd-permissions.md).

1. Définissez l'option gRPC requise :

   ```
   export ARGOCD_OPTS="--grpc-web"
   ```

Une fois ces variables d'environnement définies, vous pouvez utiliser l'Argo CD CLI sans la `argocd login` commande.

### Principales différences
<a name="_key_differences"></a>

La fonctionnalité gérée présente les limites de la CLI suivantes :
+  `argocd admin`les commandes ne sont pas prises en charge (elles nécessitent un accès direct au pod)
+  `argocd login`n'est pas pris en charge (utilisez plutôt des jetons de compte ou de projet)
+  `argocd cluster add`nécessite l'`--aws-cluster-name`indicateur avec l'ARN du cluster EKS

### Exemple : enregistrer un cluster
<a name="_example_register_a_cluster"></a>

Enregistrez un cluster EKS pour le déploiement d'applications :

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

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

Pour la documentation complète de la CLI Argo CD, consultez la référence de la [CLI Argo](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/) CD.

## Chemin de migration
<a name="_migration_path"></a>

Vous pouvez passer d'un Argo CD autogéré à la fonctionnalité gérée :

1. Vérifiez la configuration actuelle de votre Argo CD pour détecter les fonctionnalités non prises en charge (contrôleur de notifications, bilans de santé personnalisés CMPs, extensions d'interface utilisateur)

1. Faites évoluer vos contrôleurs de CD Argo autogérés jusqu'à ce qu'il n'y ait plus de répliques pour éviter les conflits

1. Créez une ressource de capacité Argo CD sur votre cluster

1. Exportez vos applications existantes ApplicationSets, et AppProjects

1. Migrer les informations d'identification du référentiel, les secrets du cluster et les modèles d'informations d'identification du référentiel (records)

1. Si vous utilisez des clés GPG, des certificats TLS ou des hôtes connus SSH, migrez également ces configurations

1. Mettre à jour `destination.server` les champs pour utiliser les noms de clusters ou les clusters EKS ARNs

1. Appliquez-les à l'instance Argo CD gérée

1. Vérifiez que les applications se synchronisent correctement

1. Mettez hors service votre installation autogérée d'Argo CD

La fonctionnalité gérée utilise le même CD Argo APIs et les mêmes définitions de ressources, de sorte que vos manifestes existants fonctionnent avec un minimum de modifications.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Création d’une fonctionnalité Argo CD](create-argocd-capability.md)- Création d'une ressource de capacité Argo CD
+  [Travailler avec Argo CD](working-with-argocd.md)- Déployez votre première application
+  [Considérations relatives à Argo CD](argocd-considerations.md)- Configurer AWS l'intégration d'Identity Center