

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

# Fonctionnalités d'EKS
<a name="capabilities"></a>

**Astuce**  
Pour commencer : [créer une fonctionnalité ACK](create-ack-capability.md) \$1 [Créer une fonctionnalité Argo CD \$1 Créer une fonctionnalité](create-argocd-capability.md) [Kro](create-kro-capability.md) 

Amazon EKS Capabilities est un ensemble en couches de fonctionnalités de cluster entièrement gérées qui aident à accélérer la rapidité des développeurs et à se libérer de la complexité liée à la création et à la mise à l'échelle avec Kubernetes. Les fonctionnalités EKS sont des fonctionnalités natives de Kubernetes destinées au déploiement continu déclaratif, à la gestion des AWS ressources, ainsi qu'à la création et à l'orchestration des ressources Kubernetes, le tout entièrement géré par. AWS Grâce aux fonctionnalités d'EKS, vous pouvez vous concentrer davantage sur la création et le dimensionnement de vos charges de travail, en vous déchargeant de la charge opérationnelle liée à ces services de plateforme fondamentaux. AWS Ces fonctionnalités s'exécutent au sein d'EKS plutôt que dans vos clusters, ce qui élimine le besoin d'installer, de maintenir et de dimensionner les composants critiques de la plate-forme sur vos nœuds de travail.

Pour commencer, vous pouvez créer une ou plusieurs fonctionnalités EKS sur un cluster EKS nouveau ou existant. Pour ce faire, vous pouvez utiliser la AWS CLI, EKS AWS Management Console APIs, eksctl ou vos outils préférés infrastructure-as-code. Bien que les fonctionnalités EKS soient conçues pour fonctionner ensemble, il s'agit de ressources cloud indépendantes que vous pouvez sélectionner en fonction de votre cas d'utilisation et de vos exigences.

Toutes les versions de Kubernetes prises en charge par EKS sont prises en charge pour les fonctionnalités EKS.

**Note**  
Les fonctionnalités EKS sont disponibles dans toutes les régions AWS commerciales où Amazon EKS est disponible. Pour obtenir la liste des régions prises en charge, consultez la section [Points de terminaison et quotas Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) dans le manuel de référence AWS général.

## Fonctionnalités disponibles
<a name="_available_capabilities"></a>

### AWS Contrôleurs pour Kubernetes (ACK)
<a name="shared_aws_controllers_for_kubernetes_ack"></a>

ACK permet de gérer les AWS ressources à l'aide de Kubernetes APIs, ce qui vous permet de créer et de gérer des compartiments S3, des bases de données RDS, des rôles IAM et d'autres AWS ressources à l'aide des ressources personnalisées de Kubernetes. ACK concilie en permanence l'état souhaité avec l'état réel AWS, en corrigeant toute dérive au fil du temps afin de maintenir le bon fonctionnement de votre système et la configuration de vos ressources conformément aux spécifications. Vous pouvez gérer les AWS ressources parallèlement à vos charges de travail Kubernetes à l'aide des mêmes outils et flux de travail, avec la prise en charge de plus de 50 AWS services, dont S3, RDS, DynamoDB et Lambda. ACK prend en charge la gestion des ressources entre comptes et entre régions, permettant ainsi des architectures complexes de gestion de systèmes multi-comptes et multi-clusters. ACK prend en charge les ressources en lecture seule et l'adoption en lecture seule, facilitant ainsi la migration depuis d'autres infrastructures sous forme d'outils de code vers vos systèmes basés sur Kubernetes.

 [En savoir plus sur ACK →](ack.md) 

### Argo CD
<a name="_argo_cd"></a>

Argo CD implémente un déploiement continu GitOps basé sur le déploiement pour vos applications, en utilisant les référentiels Git comme source fiable pour vos charges de travail et l'état de votre système. Argo CD synchronise automatiquement les ressources des applications avec vos clusters à partir de vos référentiels Git, détectant et corrigeant les dérives pour garantir que les applications déployées correspondent à l'état souhaité. Vous pouvez déployer et gérer des applications sur plusieurs clusters à partir d'une seule instance Argo CD, avec un déploiement automatique à partir des référentiels Git chaque fois que des modifications sont validées. L'utilisation conjointe d'Argo CD et d'ACK fournit un GitOps système de base, simplifiant la gestion des dépendances liées à la charge de travail et prenant en charge les conceptions de systèmes complets, y compris la gestion des clusters et des infrastructures à grande échelle. Argo CD s'intègre à AWS Identity Center pour l'authentification et l'autorisation, et fournit une interface utilisateur Argo hébergée pour visualiser l'état de l'application et l'état de déploiement.

 [En savoir plus sur Argo CD →](argocd.md) 

### kro (Kube Resource Orchestrator)
<a name="_kro_kube_resource_orchestrator"></a>

kro vous permet de créer des Kubernetes personnalisés APIs qui composent plusieurs ressources en abstractions de haut niveau, permettant aux équipes de la plateforme de définir des modèles réutilisables pour des combinaisons de ressources communes et des éléments de base du cloud. Avec kro, vous pouvez composer Kubernetes et les AWS ressources en abstractions unifiées, en utilisant une syntaxe simple pour permettre des configurations dynamiques et une logique conditionnelle. kro permet aux équipes de plateforme de fournir des fonctionnalités de libre-service avec des garde-fous appropriés, permettant aux développeurs de fournir une infrastructure complexe à l'aide de simples infrastructures spécialement conçues APIs tout en respectant les normes organisationnelles et les meilleures pratiques. les ressources kro sont simplement des ressources Kubernetes et sont spécifiées dans des manifestes Kubernetes qui peuvent être stockés dans Git Git, ou poussé vers OCI- registres compatibles tels qu'Amazon ECR pour une large distribution organisationnelle.

 [En savoir plus sur Kro →](kro.md) 

## Avantages des fonctionnalités d'EKS
<a name="_benefits_of_eks_capabilities"></a>

Les fonctionnalités d'EKS sont entièrement gérées AWS, ce qui élimine le besoin d'installation, de maintenance et de mise à l'échelle des services de cluster de base. AWS gère les correctifs de sécurité, les mises à jour et la gestion opérationnelle, ce qui permet à vos équipes de se concentrer sur le développement AWS plutôt que sur les opérations du cluster. Contrairement aux modules complémentaires Kubernetes traditionnels qui consomment les ressources du cluster, les fonctionnalités s'exécutent dans EKS plutôt que sur vos nœuds de travail. Cela libère de la capacité et des ressources du cluster pour vos charges de travail tout en minimisant la charge opérationnelle liée à la gestion des contrôleurs intégrés au cluster et des autres composants de la plate-forme.

Grâce aux fonctionnalités d'EKS, vous pouvez gérer les déploiements, les AWS ressources, les ressources Kubernetes personnalisées et les compositions à l'aide de Kubernetes natifs et d'outils tels que. APIs `kubectl` Toutes les fonctionnalités fonctionnent dans le contexte de vos clusters, détectant et corrigeant automatiquement les dérives de configuration dans les ressources de l'application et de l'infrastructure cloud. Vous pouvez déployer et gérer des ressources sur plusieurs clusters, AWS comptes et régions à partir d'un point de contrôle unique, ce qui simplifie les opérations dans des environnements complexes et distribués.

Les fonctionnalités EKS sont conçues pour les GitOps flux de travail, fournissant une infrastructure déclarative contrôlée par version et une gestion des applications. Les modifications sont transmises par Git au système, fournissant des pistes d'audit, des fonctionnalités de restauration et des flux de travail collaboratifs qui s'intègrent à vos pratiques de développement existantes. Cette approche native de Kubernetes signifie que vous n'avez pas besoin d'utiliser plusieurs outils ou de gérer des infrastructure-as-code systèmes externes à vos clusters, et qu'il existe une seule source fiable à laquelle vous pouvez vous référer. L'état souhaité, défini dans la configuration déclarative Kubernetes contrôlée par version, est continuellement appliqué dans l'ensemble de votre environnement.

## Tarification
<a name="_pricing"></a>

Avec EKS Capabilities, il n'y a aucun engagement initial ni aucun frais minimum. Chaque ressource de fonctionnalité vous est facturée pour chaque heure pendant laquelle elle est active sur votre cluster Amazon EKS. Les ressources Kubernetes spécifiques gérées par EKS Capabilities sont également facturées à un taux horaire.

Pour obtenir les informations tarifaires actuelles, consultez la [page de tarification d'Amazon EKS](https://aws.amazon.com/eks/pricing/).

**Astuce**  
Vous pouvez utiliser AWS Cost Explorer et Cost and Usage Reports pour suivre les coûts de capacité séparément des autres frais EKS. Vous pouvez étiqueter vos capacités avec le nom du cluster, le type de capacité et d'autres informations à des fins de répartition des coûts.

## Comment fonctionnent les fonctionnalités d'EKS
<a name="_how_eks_capabilities_work"></a>

Chaque fonctionnalité est une AWS ressource que vous créez sur votre cluster EKS. Une fois créée, la fonctionnalité s'exécute dans EKS et est entièrement gérée par AWS.

**Note**  
Vous pouvez créer une ressource de capacité de chaque type (Argo CD, ACK et kro) pour un cluster donné. Vous ne pouvez pas créer plusieurs ressources de capacité du même type sur le même cluster.

Vous interagissez avec les fonctionnalités de votre cluster à l'aide de Kubernetes APIs et d'outils standard :
+ `kubectl`À utiliser pour appliquer des ressources personnalisées Kubernetes
+ Utiliser les référentiels Git comme source fiable pour GitOps les flux de travail

Des outils supplémentaires sont pris en charge pour certaines fonctionnalités. Par exemple :
+ Utilisez la CLI Argo CD pour configurer et gérer les référentiels et les clusters dans votre fonctionnalité Argo CD
+ Utilisez l'interface utilisateur d'Argo CD pour visualiser et gérer les applications gérées par votre fonctionnalité Argo CD

Les fonctionnalités sont conçues pour fonctionner ensemble, mais elles sont indépendantes et entièrement activées. Vous pouvez activer une, deux ou les trois fonctionnalités en fonction de vos besoins, et mettre à jour votre configuration en fonction de l'évolution de vos besoins.

Tous les types de calcul EKS sont compatibles avec les fonctionnalités EKS. Pour de plus amples informations, veuillez consulter [Gérer les ressources de calcul à l’aide de nœuds](eks-compute.md).

Pour la configuration de la sécurité et des informations sur les rôles IAM, consultez[Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md). Pour les modèles d'architecture multi-clusters, voir[Considérations relatives aux fonctionnalités EKS](capabilities-considerations.md).

## Cas d'utilisation courants
<a name="_common_use_cases"></a>

 **GitOps pour les applications et l'infrastructure** 

Utilisez Argo CD pour déployer des applications et des composants opérationnels et ACK pour gérer les configurations de clusters et provisionner l'infrastructure, tous deux à partir de référentiels Git. L'ensemble de votre pile (applications, bases de données, stockage et mise en réseau) est défini sous forme de code et automatiquement déployé.

Exemple : une équipe de développement introduit des modifications dans Git. Argo CD déploie l'application mise à jour et ACK approvisionne une nouvelle base de données RDS avec la configuration correcte. Toutes les modifications sont vérifiables, réversibles et cohérentes dans tous les environnements.

 **Ingénierie de plateforme avec libre-service** 

Utilisez kro pour créer des ressources personnalisées APIs qui composent les ressources ACK et Kubernetes. Les équipes de la plateforme définissent des modèles approuvés à l'aide de glissières de sécurité. Les équipes chargées des applications utilisent des outils simples et de haut niveau APIs pour approvisionner des stacks complets.

Exemple : une équipe de plateforme crée une API WebApplication « » qui fournit un compartiment de déploiement, de service, d'entrée et S3. Les développeurs utilisent cette API sans avoir besoin de comprendre la complexité ou AWS les autorisations sous-jacentes.

 **Gestion des applications multi-clusters** 

Utilisez Argo CD pour déployer des applications sur plusieurs clusters EKS dans différentes régions ou comptes. Gérez tous les déploiements à partir d'une seule instance Argo CD avec des politiques et des flux de travail cohérents.

Exemple : déployez la même application sur des clusters de développement, de préparation et de production répartis dans plusieurs régions. Argo CD garantit que chaque environnement reste synchronisé avec la branche Git correspondante.

 **Gestion de plusieurs clusters** 

Utilisez ACK pour définir et approvisionner des clusters EKS, kro pour personnaliser les configurations de clusters conformément aux normes organisationnelles et Argo CD pour gérer le cycle de vie et la configuration des clusters. Cela permet de gérer les end-to-end clusters depuis leur création jusqu'aux opérations en cours.

Exemple : définissez des clusters EKS à l'aide d'ACK et de kro pour provisionner et gérer l'infrastructure du cluster, en définissant les normes organisationnelles pour le réseau, les politiques de sécurité, les modules complémentaires et autres configurations. Utilisez Argo CD pour créer et gérer en permanence les clusters, les configurations et les mises à jour des versions de Kubernetes au sein de votre flotte en tirant parti de normes cohérentes et d'une gestion automatisée du cycle de vie.

 **Migrations et modernisation** 

Simplifiez la migration vers EKS grâce au provisionnement des ressources cloud et à des GitOps flux de travail natifs. Utilisez ACK pour adopter les AWS ressources existantes sans les recréer, et Argo CD pour opérationnaliser les déploiements de charges de travail à partir de Git.

Exemple : une équipe qui migre depuis EKS adopte ses bases de données RDS et ses compartiments S3 existants EC2 à l'aide d'ACK, puis utilise Argo CD pour déployer des applications conteneurisées à partir de Git. La voie de migration est claire et les opérations sont normalisées dès le premier jour.

 **Démarrage des comptes et des régions** 

Automatisez le déploiement de l'infrastructure entre les comptes et les régions en utilisant conjointement Argo CD et ACK. Définissez votre infrastructure sous forme de code dans Git et laissez les fonctionnalités s'occuper du déploiement et de la gestion.

Exemple : une équipe de plateforme gère des référentiels Git définissant les configurations de compte standard, les rôles IAMVPCs, les instances RDS et les stacks de surveillance. Argo CD déploie automatiquement ces configurations sur de nouveaux comptes et régions, garantissant ainsi la cohérence et réduisant le temps de configuration manuelle de plusieurs jours à quelques minutes.

# Utilisation des ressources en matière de capacités
<a name="working-with-capabilities"></a>

Cette rubrique décrit les opérations courantes de gestion des ressources de capacité pour tous les types de capacités.

## Ressources relatives aux fonctionnalités d'EKS
<a name="_eks_capability_resources"></a>

Les fonctionnalités EKS sont AWS des ressources qui activent les fonctionnalités gérées sur votre cluster Amazon EKS. Les fonctionnalités sont exécutées dans EKS, ce qui élimine le besoin d'installer et de maintenir des contrôleurs et d'autres composants opérationnels sur vos nœuds de travail. Les fonctionnalités sont créées pour un cluster EKS spécifique et restent affiliées à ce cluster pendant tout son cycle de vie.

Chaque ressource de capacité possède :
+ Un nom unique au sein de votre cluster
+ Un type de capacité (ACK, ARGOCD ou KRO)
+ Un Amazon Resource Name (ARN), spécifiant à la fois le nom et le type
+ Un rôle IAM axé sur les capacités
+ Un statut qui indique son état actuel
+ Configuration, à la fois générique et spécifique au type de fonctionnalité

## Comprendre l'état des capacités
<a name="_understanding_capability_status"></a>

Les ressources de capacité ont un statut qui indique leur état actuel. Vous pouvez consulter l'état des fonctionnalités et l'état de santé 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. Choisissez l'onglet **Fonctionnalités** pour afficher l'état de toutes les fonctionnalités.

1. Pour obtenir des informations détaillées sur l'état de santé, cliquez sur l'onglet **Observabilité**, puis sur **Surveiller le cluster**, puis sur l'onglet **Fonctionnalités**.

 ** AWS CLI** :

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

### Statuts des capacités
<a name="_capability_statuses"></a>

 **CRÉATION** : La capacité est en cours de configuration. Vous pouvez quitter la console : la fonctionnalité continuera de se créer en arrière-plan.

 **ACTIF** : La fonctionnalité fonctionne et est prête à être utilisée. Si les ressources ne fonctionnent pas comme prévu, vérifiez l'état des ressources et les autorisations IAM. Pour obtenir des conseils, veuillez consulter [Dépannage des fonctionnalités EKS](capabilities-troubleshooting.md).

 **MISE À JOUR** : Les modifications de configuration sont en cours d'application. Attendez que le statut revienne à`ACTIVE`.

 **SUPPRESSION** : la fonctionnalité est supprimée du cluster.

 **CREATE\$1FAILED** : le programme d'installation a rencontré une erreur. Les causes courantes incluent :
+ Politique de confiance des rôles IAM incorrecte ou manquante
+ Le rôle IAM n'existe pas ou n'est pas accessible
+ Problèmes d'accès au cluster
+ Paramètres de configuration non valides

Consultez la section sur l'état des fonctionnalités pour obtenir des informations spécifiques sur les erreurs.

 **UPDATE\$1FAILED : La mise à jour de configuration a échoué**. Consultez la section sur l'état des fonctionnalités pour plus de détails et vérifiez les autorisations IAM.

**Astuce**  
Pour obtenir des conseils de dépannage détaillés, voir :  
 [Dépannage des fonctionnalités EKS](capabilities-troubleshooting.md)- Résolution des problèmes généraux liés aux fonctionnalités
 [Résoudre les problèmes liés aux fonctionnalités ACK](ack-troubleshooting.md)- Problèmes spécifiques à ACK
 [Résoudre les problèmes liés aux fonctionnalités d'Argo CD](argocd-troubleshooting.md)- Problèmes spécifiques à Argo CD
 [Résoudre les problèmes liés aux fonctionnalités Kro](kro-troubleshooting.md)- problèmes spécifiques à Kro

## Créez des capacités
<a name="_create_capabilities"></a>

Pour créer une fonctionnalité sur votre cluster, consultez les rubriques suivantes :
+  [Création d'une fonctionnalité ACK](create-ack-capability.md)— Créez une fonctionnalité ACK pour gérer les AWS ressources à l'aide de Kubernetes APIs
+  [Création d’une fonctionnalité Argo CD](create-argocd-capability.md)— Création d'une fonctionnalité Argo CD pour GitOps une livraison continue
+  [Création d'une fonctionnalité Kro](create-kro-capability.md)— Créez une capacité KRO pour la composition et l'orchestration des ressources

## Fonctionnalités de la liste
<a name="_list_capabilities"></a>

Vous pouvez répertorier toutes les ressources de capacité d'un cluster.

### Console
<a name="_console"></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. Consultez les ressources relatives aux **capacités sous Fonctionnalités gérées**.

### AWS CLI
<a name="shared_aws_cli"></a>

Utilisez la `list-capabilities` commande pour afficher toutes les fonctionnalités de votre cluster. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster et remplacez *my-cluster* par le nom de votre cluster.

```
aws eks list-capabilities \
  --region region-code \
  --cluster-name my-cluster
```

```
{
    "capabilities": [
        {
            "capabilityName": "my-ack",
            "arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack/abc123",
            "type": "ACK",
            "status": "ACTIVE",
            "createdAt": "2025-11-02T10:30:00.000000-07:00",
            "modifiedAt": "2025-11-02T10:32:15.000000-07:00",
        },
        {
            "capabilityName": "my-kro",
            "arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/kro/my-kro/abc123",
            "type": "KRO",
            "status": "ACTIVE",
            "version": "v0.6.3",
            "createdAt": "2025-11-02T10:30:00.000000-07:00",
            "modifiedAt": "2025-11-02T10:32:15.000000-07:00",
        },
        {
            "capabilityName": "my-argocd",
            "arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/argocd/my-argocd/abc123",
            "type": "ARGOCD",
            "status": "ACTIVE",
            "version": "3.1.8-eks-1",
            "createdAt": "2025-11-21T08:22:28.486000-05:00",
            "modifiedAt": "2025-11-21T08:22:28.486000-05:00"
        }
    ]
}
```

## Décrire une fonctionnalité
<a name="_describe_a_capability"></a>

Obtenez des informations détaillées sur une fonctionnalité spécifique, notamment sa configuration et son état.

### Console
<a name="_console_2"></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. Choisissez la fonctionnalité que vous souhaitez afficher dans la section **Fonctionnalités gérées**.

1. Consultez les détails des fonctionnalités, notamment l'état, la configuration et l'heure de création.

### AWS CLI
<a name="shared_aws_cli"></a>

Utilisez la `describe-capability` commande pour afficher des informations détaillées. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster, remplacez *my-cluster* par le nom de votre cluster et remplacez par *capability-name* le nom de la fonctionnalité (ack, argocd ou kro).

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

 **Exemple de sortie :** 

```
{
  "capability": {
    "capabilityName": "my-ack",
    "capabilityArn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack/abc123",
    "clusterName": "my-cluster",
    "type": "ACK",
    "roleArn": "arn:aws:iam::111122223333:role/AmazonEKSCapabilityACKRole",
    "status": "ACTIVE",
    "configuration": {},
    "tags": {},
    "health": {
      "issues": []
    },
    "createdAt": "2025-11-19T17:11:30.242000-05:00",
    "modifiedAt": "2025-11-19T17:11:30.242000-05:00",
    "deletePropagationPolicy": "RETAIN"
  }
}
```

## Mettre à jour la configuration d'une fonctionnalité
<a name="_update_the_configuration_of_a_capability"></a>

Vous pouvez mettre à jour certains aspects de la configuration d'une fonctionnalité après sa création. Les options de configuration spécifiques varient en fonction du type de fonctionnalité.

**Note**  
Les ressources des fonctionnalités d'EKS sont entièrement gérées, y compris les correctifs et les mises à jour de version. La mise à jour d'une fonctionnalité met à jour la configuration des ressources et n'entraîne pas de mise à jour de version des composants de la fonctionnalité gérée.

### AWS CLI
<a name="shared_aws_cli"></a>

Utilisez la `update-capability` commande pour modifier une fonctionnalité :

```
aws eks update-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name capability-name \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/NewCapabilityRole
```

**Note**  
Les propriétés des fonctionnalités ne peuvent pas toutes être mises à jour après leur création. Reportez-vous à la documentation spécifique aux fonctionnalités pour plus de détails sur ce qui peut être modifié.

## Supprimer une fonctionnalité
<a name="_delete_a_capability"></a>

Lorsque vous n'avez plus besoin d'une fonctionnalité sur votre cluster, vous pouvez supprimer la ressource de capacité.

**Important**  
 **Supprimez les ressources du cluster avant de supprimer la fonctionnalité.**   
La suppression d'une ressource de capacité ne supprime pas automatiquement les ressources créées par le biais de cette fonctionnalité :  
Toutes les définitions de ressources personnalisées Kubernetes (CRDs) restent installées dans votre cluster.
Les ressources ACK restent dans votre cluster et les AWS ressources correspondantes restent dans votre compte
Les applications Argo CD et leurs ressources Kubernetes restent dans votre cluster
kro ResourceGraphDefinitions et les instances restent dans votre cluster
Vous devez supprimer ces ressources avant de supprimer la fonctionnalité afin d'éviter les ressources orphelines.  
Vous pouvez éventuellement choisir de conserver les AWS ressources associées aux ressources ACK Kubernetes. Voir les [considérations relatives à l'ACK](ack-considerations.md) 

### Console
<a name="_console_3"></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. Sélectionnez la fonctionnalité que vous souhaitez supprimer dans la liste des **fonctionnalités gérées**.

1. Choisissez la **fonctionnalité Supprimer**.

1. Dans la boîte de dialogue de confirmation, tapez le nom de la fonctionnalité pour confirmer la suppression.

1. Sélectionnez **Delete (Supprimer)**.

### AWS CLI
<a name="shared_aws_cli"></a>

Utilisez la `delete-capability` commande pour supprimer une ressource de capacité :

Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster, remplacez *my-cluster* par le nom de votre cluster et remplacez *capability-name* par le nom de la fonctionnalité à supprimer.

```
aws eks delete-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name capability-name
```

## Étapes suivantes
<a name="_next_steps"></a>
+  [Capacités : ressources Kubernetes](capability-kubernetes-resources.md)— Découvrez les ressources Kubernetes fournies par chaque type de fonctionnalité
+  [Concepts d'ACK](ack-concepts.md)— Comprendre les concepts ACK et le cycle de vie des ressources
+  [Travailler avec Argo CD](working-with-argocd.md)— Utilisation des fonctionnalités d'Argo CD pour GitOps les flux de travail
+  [concepts kro](kro-concepts.md)— Comprendre les concepts Kro et la composition des ressources

# Capacités : ressources Kubernetes
<a name="capability-kubernetes-resources"></a>

Une fois que vous avez activé une fonctionnalité sur votre cluster, vous interagissez le plus souvent avec elle en créant et en gérant des ressources personnalisées Kubernetes dans votre cluster. Chaque fonctionnalité fournit son propre ensemble de définitions de ressources personnalisées (CRDs) qui étendent l'API Kubernetes avec des fonctionnalités spécifiques aux fonctionnalités.

## Ressources sur Argo CD
<a name="_argo_cd_resources"></a>

Lorsque vous activez la fonctionnalité Argo CD, vous pouvez créer et gérer les ressources Kubernetes suivantes :

 **Application**   
Définit un déploiement depuis un dépôt Git vers un cluster cible. `Application`les ressources spécifient le référentiel source, l'espace de noms cible et la politique de synchronisation. Vous pouvez créer jusqu'à 1 000 `Application` ressources par instance de fonctionnalité Argo CD.

 **ApplicationSet**   
Génère plusieurs `Application` ressources à partir de modèles, permettant ainsi des déploiements multi-clusters et multi-environnements. `ApplicationSet`les ressources utilisent des générateurs pour créer `Application` des ressources dynamiquement en fonction de listes de clusters, de répertoires Git ou d'autres sources.

 **AppProject**   
Fournit un regroupement logique et un contrôle d'accès pour les `Application` ressources. `AppProject`les ressources définissent les référentiels, les clusters et les espaces de noms que les `Application` ressources peuvent utiliser, ce qui permet la mutualisation et les limites de sécurité.

Exemple `Application` de ressource :

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/org/repo
    targetRevision: main
    path: manifests
  destination:
    server: https://kubernetes.default.svc
    namespace: production
```

Pour plus d'informations sur les ressources et les concepts d'Argo CD, consultez[Concepts d'Argo CD](argocd-concepts.md).

## ressources kro
<a name="_kro_resources"></a>

Lorsque vous activez la fonctionnalité Kro, vous pouvez créer et gérer les ressources Kubernetes suivantes :

 **ResourceGraphDefinition (RGD)**   
Définit une API personnalisée qui compose plusieurs Kubernetes et AWS ressources dans une abstraction de niveau supérieur. Les équipes de la plateforme créent `ResourceGraphDefinition` des ressources pour fournir des modèles réutilisables avec des glissières de sécurité.

 **Instances de ressources personnalisées**   
Après avoir créé une `ResourceGraphDefinition` ressource, vous pouvez créer des instances de l'API personnalisée définie par le`ResourceGraphDefinition`. kro crée et gère automatiquement les ressources spécifiées dans le`ResourceGraphDefinition`.

Exemple `ResourceGraphDefinition` de ressource :

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        # ... deployment spec
    - id: service
      template:
        apiVersion: v1
        kind: Service
        # ... service spec
```

Exemple d'`WebApplication`instance :

```
apiVersion: v1alpha1
kind: WebApplication
metadata:
  name: my-web-app
  namespace: default
spec:
  name: my-web-app
  replicas: 3
```

Lorsque vous appliquez cette instance, kro crée automatiquement les `Service` ressources `Deployment` et définies dans le`ResourceGraphDefinition`.

Pour plus d'informations sur les ressources et les concepts de Kro, consultez[concepts kro](kro-concepts.md).

## Ressources de l'ACK
<a name="_ack_resources"></a>

Lorsque vous activez la fonctionnalité ACK, vous pouvez créer et gérer des ressources à l'aide AWS des ressources personnalisées de Kubernetes. ACK en fournit plus de 200 CRDs pour plus de 50 AWS services, ce qui vous permet de définir AWS des ressources parallèlement à vos charges de travail Kubernetes et de gérer des ressources d' AWS infrastructure dédiées avec Kubernetes.

Exemples de ressources ACK :

 **S3 Bucket**   
 `Bucket`les ressources créent et gèrent les compartiments Amazon S3 avec des politiques de versionnement, de chiffrement et de cycle de vie.

 **RDS DBInstance**   
 `DBInstance`provisionner les ressources et gérer les instances de base de données Amazon RDS avec des sauvegardes et des fenêtres de maintenance automatisées.

 **Tableau DynamoDB**   
 `Table`les ressources créent et gèrent des tables DynamoDB avec une capacité provisionnée ou à la demande.

 **IAM Role**   
 `Role`les ressources définissent les rôles IAM avec des politiques de confiance et des politiques d'autorisation pour l'accès aux AWS services.

 **Fonction Lambda**   
 `Function`les ressources créent et gèrent les fonctions Lambda avec la configuration du code, de l'exécution et des rôles d'exécution.

Exemple de spécification d'une `Bucket` ressource :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-app-bucket
spec:
  name: my-unique-bucket-name-12345
  versioning:
    status: Enabled
  encryption:
    rules:
      - applyServerSideEncryptionByDefault:
          sseAlgorithm: AES256
```

Pour plus d'informations sur les ressources et les concepts d'ACK, consultez[Concepts d'ACK](ack-concepts.md).

## Limites des ressources
<a name="_resource_limits"></a>

Les capacités EKS sont soumises aux limites de ressources suivantes :

 **Limites d'utilisation du CD Argo** :
+ 1 000 `Application` ressources maximum par instance de capacité Argo CD
+ Maximum de 100 clusters distants configurés par instance de capacité Argo CD

 **Limites de configuration des ressources** :
+ 150 ressources Kubernetes maximum par `Application` ressource dans Argo CD
+ 64 ressources Kubernetes maximum par in kro `ResourceGraphDefinition`

**Note**  
Ces limites s'appliquent au nombre de ressources gérées par chaque instance de fonctionnalité. Si vous avez besoin de limites plus élevées, vous pouvez déployer des fonctionnalités sur plusieurs clusters.

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

Pour les tâches spécifiques aux fonctionnalités et la configuration avancée, consultez les rubriques suivantes :
+  [Concepts d'ACK](ack-concepts.md)— Comprendre les concepts ACK et le cycle de vie des ressources
+  [Travailler avec Argo CD](working-with-argocd.md)— Utilisation des fonctionnalités d'Argo CD pour GitOps les flux de travail
+  [concepts kro](kro-concepts.md)— Comprendre les concepts Kro et la composition des ressources

# Considérations relatives aux fonctionnalités EKS
<a name="capabilities-considerations"></a>

Cette rubrique aborde les considérations importantes relatives à l'utilisation des fonctionnalités EKS, notamment la conception du contrôle d'accès, le choix entre les fonctionnalités EKS et les solutions autogérées, les modèles architecturaux pour les déploiements multiclusters et les meilleures pratiques opérationnelles.

## Fonctionnalité : rôles IAM et Kubernetes RBAC
<a name="_capability_iam_roles_and_kubernetes_rbac"></a>

Chaque ressource de capacité EKS possède un rôle IAM de fonctionnalité configuré. Le rôle de capacité est utilisé pour accorder des autorisations de AWS service permettant aux fonctionnalités EKS d'agir en votre nom. Par exemple, pour utiliser la fonctionnalité EKS pour ACK afin de gérer les compartiments Amazon S3, vous devez accorder à cette fonctionnalité des autorisations administratives lui permettant de créer et de gérer des compartiments.

Une fois la fonctionnalité configurée, les ressources S3 dans AWS peuvent être créées et gérées avec les ressources personnalisées Kubernetes de votre cluster. Kubernetes RBAC est le mécanisme de contrôle d'accès intégré au cluster qui permet de déterminer quels utilisateurs et groupes peuvent créer et gérer ces ressources personnalisées. Par exemple, accordez à des utilisateurs et à des groupes Kubernetes RBAC spécifiques des autorisations pour créer et gérer des `Bucket` ressources dans les espaces de noms de votre choix.

Ainsi, IAM et Kubernetes RBAC sont les deux moitiés du système de contrôle d' end-to-endaccès qui régit les autorisations liées aux capacités et aux ressources d'EKS. Il est important de concevoir la bonne combinaison d'autorisations IAM et de politiques d'accès RBAC pour votre cas d'utilisation.

Pour plus d'informations sur les fonctionnalités, les rôles IAM et les autorisations Kubernetes, consultez. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

## Modèles d'architecture multi-clusters
<a name="_multi_cluster_architecture_patterns"></a>

Lorsque vous déployez des fonctionnalités sur plusieurs clusters, tenez compte des modèles architecturaux courants suivants :

 **Hub and Spoke avec gestion centralisée** 

Exécutez les trois fonctionnalités dans un cluster géré de manière centralisée pour orchestrer les charges de travail et gérer l'infrastructure cloud sur plusieurs clusters de charge de travail.
+ Argo CD sur le cluster de gestion déploie des applications sur des clusters de charge de travail situés dans différentes régions ou comptes
+ ACK sur le cluster de gestion fournit des AWS ressources (RDS, S3, IAM) pour tous les clusters
+ kro sur le cluster de gestion crée des abstractions de plate-forme portables qui fonctionnent sur tous les clusters

Ce modèle centralise la gestion de la charge de travail et de l'infrastructure cloud, et peut simplifier les opérations pour les entreprises qui gèrent de nombreux clusters.

 **Décentralisé GitOps** 

Les charges de travail et l'infrastructure cloud sont gérées par des fonctionnalités du même cluster sur lequel les charges de travail sont exécutées.
+ Argo CD gère les ressources de l'application sur le cluster local.
+ Les ressources ACK sont utilisées pour les besoins des clusters et des charges de travail.
+ les abstractions de la plateforme kro sont installées et orchestrent les ressources locales.

Ce modèle décentralise les opérations, les équipes gérant leurs propres services de plateforme dédiés dans un ou plusieurs clusters.

 **Déploiement de Hub and Spoke avec Hybrid ACK** 

Combinez des modèles centralisés et décentralisés, avec des déploiements d'applications centralisés et une gestion des ressources en fonction du périmètre et de la propriété.
+ Cluster central :
  + Argo CD gère les GitOps déploiements vers le cluster local et tous les clusters de charge de travail distants
  + ACK est utilisé sur le cluster de gestion pour les ressources administrées (bases de données de production, rôles IAM,) VPCs
  + kro est utilisé sur le cluster de gestion pour les abstractions de plateforme réutilisables
+ Clusters de rayons :
  + Les charges de travail sont gérées via Argo CD sur le cluster centralisé
  + ACK est utilisé localement pour les ressources limitées à la charge de travail (compartiments S3, instances, ElastiCache files d'attente SQS)
  + kro est utilisé localement pour les compositions de ressources et les modèles de blocs de construction

Ce schéma distingue les préoccupations : les équipes chargées des plateformes gèrent les infrastructures critiques de manière centralisée sur des clusters de gestion, y compris éventuellement des clusters de charge de travail, tandis que les équipes chargées des applications spécifient et gèrent les ressources cloud parallèlement aux charges de travail.

 **Choisir un motif** 

Tenez compte des facteurs suivants lors du choix d'une architecture :
+  **Structure organisationnelle** : les équipes centralisées privilégient les modèles de hub ; les équipes décentralisées peuvent préférer les capacités par cluster
+  **Étendue des ressources** : les ressources réservées aux administrateurs (bases de données, IAM) bénéficient souvent d'une gestion centralisée ; les ressources de charge de travail (compartiments, files d'attente) peuvent être gérées localement
+  **Libre-service** : les équipes centralisées de la plateforme peuvent créer et distribuer des ressources personnalisées prescriptives afin de permettre un libre-service sécurisé des ressources cloud pour les besoins de charge de travail courants
+  **Gestion du parc de** clusters : les clusters de gestion centralisée fournissent un plan de contrôle appartenant au client pour la gestion du parc de clusters EKS, ainsi que d'autres ressources destinées aux administrateurs
+  **Exigences de conformité** : certaines organisations ont besoin d'un contrôle centralisé pour l'audit et la gouvernance
+  **Complexité opérationnelle : la** diminution du nombre d'instances de capacité simplifie les opérations mais peut créer des goulots d'étranglement

**Note**  
Vous pouvez commencer avec un modèle et évoluer vers un autre au fur et à mesure que votre plateforme mûrit. Les fonctionnalités sont indépendantes : vous pouvez les déployer différemment entre les clusters en fonction de vos besoins.

## Comparaison des fonctionnalités d'EKS avec les solutions autogérées
<a name="_comparing_eks_capabilities_to_self_managed_solutions"></a>

Les fonctionnalités EKS fournissent des expériences entièrement gérées pour les outils et contrôleurs Kubernetes les plus courants qui s'exécutent dans EKS. Cela diffère des solutions autogérées, que vous installez et exploitez dans votre cluster.

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

 **Déploiement et gestion** 

 AWS gère entièrement les fonctionnalités EKS sans qu'aucune installation, configuration ou maintenance des composants logiciels ne soit requise. AWS installe et gère automatiquement toutes les définitions de ressources personnalisées Kubernetes (CRDs) requises dans le cluster.

Avec les solutions autogérées, vous installez et configurez un logiciel de cluster à l'aide de graphiques Helm, de kubectl ou d'autres opérateurs. Vous avez le contrôle total du cycle de vie des logiciels et de la configuration d'exécution de vos solutions autogérées, en fournissant des personnalisations à tous les niveaux de la solution.

 **Exploitation et maintenance** 

 AWS gère les correctifs et autres opérations du cycle de vie des logiciels pour EKS Capabilities, avec des mises à jour automatiques et des correctifs de sécurité. Les fonctionnalités EKS sont intégrées à des AWS fonctionnalités pour des configurations rationalisées, offrent une haute disponibilité et une tolérance aux pannes intégrées, et éliminent le dépannage des charges de travail des contrôleurs au sein du cluster.

Les solutions autogérées vous obligent à surveiller l'état de santé et les journaux des composants, à appliquer des correctifs de sécurité et des mises à jour de version, à configurer la haute disponibilité avec plusieurs répliques et des budgets d'interruption des pods, à résoudre les problèmes de charge de travail des contrôleurs et à gérer les versions et les versions. Vous avez le contrôle total de vos déploiements, mais cela nécessite souvent des solutions sur mesure pour l'accès aux clusters privés et d'autres intégrations qui doivent être conformes aux normes organisationnelles et aux exigences de conformité en matière de sécurité.

 **Consommation de ressources** 

Les fonctionnalités EKS s'exécutent dans EKS et hors de vos clusters, libérant ainsi des ressources de nœud et de cluster. Les fonctionnalités n'utilisent pas les ressources de charge de travail du cluster, ne consomment ni le processeur ni la mémoire de vos nœuds de travail, évoluent automatiquement et ont un impact minimal sur la planification de la capacité du cluster.

Les solutions autogérées exécutent des contrôleurs et d'autres composants sur vos nœuds de travail, consommant ainsi directement les ressources des nœuds de travail IPs, du cluster et d'autres ressources du cluster. La gestion des services de cluster nécessite une planification des capacités pour leurs charges de travail, ainsi que la planification et la configuration des demandes de ressources et des limites afin de gérer les exigences de scalabilité et de haute disponibilité.

 **Support des fonctionnalités** 

En tant que fonctionnalités de service entièrement gérées, les fonctionnalités EKS Capabilities sont, par nature, bien ancrées par rapport aux solutions autogérées. Bien que les fonctionnalités soient compatibles avec la plupart des fonctionnalités et des cas d'utilisation, il y aura une différence de couverture par rapport aux solutions autogérées.

Avec les solutions autogérées, vous contrôlez entièrement la configuration, les fonctionnalités optionnelles et les autres aspects des fonctionnalités de votre logiciel. Vous pouvez choisir d'exécuter vos propres images personnalisées, de personnaliser tous les aspects de la configuration et de contrôler entièrement les fonctionnalités de votre solution autogérée.

 **Considérations relatives aux coûts** 

Chaque ressource de capacité EKS a un coût horaire associé, qui varie en fonction du type de capacité. Les ressources du cluster gérées par cette fonctionnalité ont également un coût horaire associé à leur propre tarification. Pour plus d’informations, consultez les [tarifs Amazon EKS](https://aws.amazon.com/eks/pricing/).

Les solutions autogérées n'ont aucun coût direct lié aux AWS frais, mais vous payez pour les ressources de calcul du cluster utilisées par les contrôleurs et les charges de travail associées. Au-delà de la consommation des ressources des nœuds et des clusters, le coût total de possession des solutions autogérées inclut les frais d'exploitation et les dépenses de maintenance, de dépannage et de support.

### Choisir entre les fonctionnalités EKS et les solutions autogérées
<a name="_choosing_between_eks_capabilities_and_self_managed_solutions"></a>

 **Capacités d'EKS** Envisagez ce choix lorsque vous souhaitez réduire les frais opérationnels et vous concentrer sur la valeur différenciée de vos logiciels et systèmes, plutôt que sur les opérations de plate-forme de cluster pour répondre à des exigences de base. Utilisez les fonctionnalités EKS lorsque vous souhaitez minimiser la charge opérationnelle liée aux correctifs de sécurité et à la gestion du cycle de vie des logiciels, libérer des ressources de nœuds et de clusters pour les charges de travail des applications, simplifier la configuration et la gestion de la sécurité, et bénéficier d'une couverture de AWS support. Les fonctionnalités EKS sont idéales pour la plupart des cas d'utilisation en production et constituent l'approche recommandée pour les nouveaux déploiements.

 **Solutions autogérées** Envisagez ce choix lorsque vous avez besoin de versions spécifiques de l'API de ressources Kubernetes, de versions de contrôleurs personnalisées, de systèmes d'automatisation et d'outils existants basés sur des déploiements autogérés ou lorsque vous avez besoin d'une personnalisation approfondie des configurations d'exécution des contrôleurs. Les solutions autogérées offrent de la flexibilité pour les cas d'utilisation spécialisés et vous permettent de contrôler totalement votre déploiement et votre configuration d'exécution.

**Note**  
Les fonctionnalités EKS peuvent coexister dans votre cluster avec des solutions autogérées, et des migrations par étapes sont possibles.

### Comparaisons spécifiques aux capacités
<a name="_capability_specific_comparisons"></a>

Pour des comparaisons détaillées, notamment les fonctionnalités spécifiques aux capacités, les différences en amont et les chemins de migration, voir :
+  [Comparaison de la capacité EKS pour ACK à une solution ACK autogérée](ack-comparison.md) 
+  [Comparaison de la fonctionnalité EKS pour Argo CD à celle d'Argo CD autogéré](argocd-comparison.md) 
+  [Comparaison entre la capacité EKS pour kro et celle pour kro autogérée](kro-comparison.md) 

# Déployez AWS des ressources depuis Kubernetes avec AWS Controllers for Kubernetes (ACK)
<a name="ack"></a>

 AWS Controllers for Kubernetes (ACK) vous permet de définir et de gérer les ressources de AWS service directement depuis Kubernetes. Avec AWS Controllers for Kubernetes (ACK), vous pouvez gérer les ressources de charge de travail et l'infrastructure cloud à l'aide de ressources personnalisées Kubernetes, parallèlement aux charges de travail de vos applications à l'aide de Kubernetes et d'outils Kubernetes familiers. APIs 

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

## Comment fonctionne ACK
<a name="_how_ack_works"></a>

ACK traduit les spécifications de ressources personnalisées de Kubernetes en AWS appels d'API. Lorsque vous créez, mettez à jour ou supprimez une ressource personnalisée Kubernetes représentant une ressource de AWS service, ACK effectue les appels d' AWS API requis pour créer, mettre à jour ou supprimer la ressource. AWS 

Chaque AWS ressource prise en charge par ACK possède sa propre définition de ressource personnalisée (CRD) qui définit le schéma de l'API Kubernetes pour spécifier sa configuration. Par exemple, ACK fournit CRDs S3, notamment des compartiments, des politiques de compartiment et d'autres ressources S3.

ACK concilie en permanence l'état de vos AWS ressources avec l'état souhaité défini dans vos ressources personnalisées Kubernetes. Si une ressource s'écarte de son état souhaité, ACK le détecte et prend des mesures correctives pour la remettre dans son alignement. Les modifications apportées aux ressources Kubernetes se répercutent immédiatement sur l'état AWS des ressources, tandis que la détection passive des dérives et la correction des modifications des AWS ressources en amont peuvent prendre jusqu'à 10 heures (période de resynchronisation), mais se produisent généralement bien plus tôt.

 **Exemple de manifeste de ressources du compartiment S3** 

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-ack-bucket
spec:
  name: my-unique-bucket-name
```

Lorsque vous appliquez cette ressource personnalisée à votre cluster, ACK crée un compartiment Amazon S3 dans votre compte s'il n'existe pas encore. Les modifications ultérieures apportées à cette ressource, par exemple en spécifiant un niveau de stockage autre que celui par défaut ou en ajoutant une politique, seront appliquées à la ressource S3 dans AWS. Lorsque cette ressource est supprimée du cluster, le compartiment S3 AWS est supprimé par défaut.

## Avantages de l'ACK
<a name="_benefits_of_ack"></a>

ACK fournit une gestion des AWS ressources native de Kubernetes, vous permettant de gérer les AWS ressources en utilisant les mêmes Kubernetes APIs et les mêmes outils que ceux que vous utilisez pour vos applications. Cette approche unifiée simplifie le flux de travail de gestion de votre infrastructure en éliminant le besoin de passer d'un outil à l'autre ou d'apprendre à utiliser infrastructure-as-code des systèmes distincts. Vous définissez vos AWS ressources de manière déclarative dans les manifestes Kubernetes, en activant les GitOps flux de travail et l'infrastructure en tant que pratiques de code qui s'intègrent parfaitement à vos processus de développement existants.

ACK concilie en permanence l'état souhaité de vos AWS ressources avec leur état réel, en corrigeant les dérives et en garantissant la cohérence au sein de votre infrastructure. Ce rapprochement continu signifie que les out-of-band modifications impératives apportées aux AWS ressources sont automatiquement annulées pour correspondre à votre configuration déclarée, préservant ainsi l'intégrité de votre infrastructure sous forme de code. Vous pouvez configurer ACK pour gérer les ressources sur plusieurs AWS comptes et régions, en activant des architectures multicomptes complexes sans outils supplémentaires.

Pour les entreprises qui migrent depuis d'autres outils de gestion d'infrastructure, ACK prend en charge l'adoption des ressources, ce qui vous permet de placer les AWS ressources existantes sous la gestion d'ACK sans les recréer. ACK fournit également des ressources en lecture seule pour l'observation AWS des ressources sans accès aux modifications, ainsi que des annotations pour éventuellement conserver les AWS ressources même lorsque la ressource Kubernetes est supprimée du cluster.

Pour en savoir plus et commencer à utiliser la fonctionnalité EKS pour ACK, consultez [Concepts d'ACK](ack-concepts.md) et[Considérations relatives à l'ACK pour EKS](ack-considerations.md).

## AWS Services pris en charge
<a name="supported_shared_aws_services"></a>

ACK prend en charge un large éventail de AWS services, y compris, mais sans s'y limiter :
+ Amazon EC2
+ Amazon S3
+ Amazon RDS
+ Amazon DynamoDB
+ Amazon ElastiCache
+ Amazon EKS
+ Amazon SQS
+ Amazon SNS
+  AWS Lambda
+  AWS IAM

Tous les AWS services répertoriés comme généralement disponibles en amont sont pris en charge par la fonctionnalité EKS pour ACK. Consultez la [liste complète des AWS services pris en charge](https://aws-controllers-k8s.github.io/community/docs/community/services/) pour plus de détails.

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

ACK s'intègre aux autres fonctionnalités gérées par EKS.
+  **Argo CD** : utilisez Argo CD pour gérer le déploiement des ressources ACK sur plusieurs clusters, en activant les GitOps flux de travail pour votre AWS infrastructure.
  + ACK étend les avantages de l' GitOps association avec ArgoCD, mais ACK ne nécessite pas d'intégration avec git.
+  **kro (Kube Resource Orchestrator)** : utilisez kro pour composer des ressources complexes à partir de ressources ACK, en créant des abstractions de haut niveau qui simplifient la gestion des ressources.
  + Vous pouvez créer des ressources personnalisées composites avec kro qui définissent à la fois les ressources Kubernetes et les ressources. AWS Les membres de l'équipe peuvent utiliser ces ressources personnalisées pour déployer rapidement des applications complexes.

## Débuter avec ACK
<a name="_getting_started_with_ack"></a>

Pour commencer à utiliser la fonctionnalité EKS pour ACK :

1. Créez et configurez un rôle de capacité IAM avec les autorisations nécessaires pour qu'ACK gère les AWS ressources en votre nom.

1.  [Créez une ressource de capacité ACK](create-ack-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. Appliquez des ressources personnalisées Kubernetes à votre cluster pour commencer à gérer vos AWS ressources dans Kubernetes.

# Création d'une fonctionnalité ACK
<a name="create-ack-capability"></a>

Ce chapitre explique comment créer une fonctionnalité ACK sur votre cluster Amazon EKS.

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

Avant de créer une fonctionnalité ACK, assurez-vous d'avoir :
+ Un cluster Amazon EKS
+ Un rôle de capacité IAM avec des autorisations permettant à ACK de gérer les ressources AWS 
+ Autorisations IAM suffisantes pour créer des ressources de capacités sur les clusters EKS
+ L'outil CLI approprié installé et configuré, ou l'accès à la console EKS

Pour obtenir des instructions sur la création du rôle de capacité IAM, consultez[Fonctionnalité Amazon EKS : rôle IAM](capability-role.md).

**Important**  
ACK est une fonctionnalité de gestion d'infrastructure qui permet de créer, de modifier et de supprimer AWS des ressources. Il s'agit d'une fonctionnalité réservée aux administrateurs qui doit être soigneusement contrôlée. Toute personne autorisée à créer des ressources Kubernetes dans votre cluster peut créer efficacement des AWS ressources via ACK, sous réserve des autorisations du rôle de capacité IAM. Le rôle de capacité IAM que vous fournissez détermine les AWS ressources qu'ACK peut créer et gérer. 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é ACK à l'aide de la AWS Management Console AWS CLI ou de eksctl :
+  [Création d'une fonctionnalité ACK à l'aide de la console](ack-create-console.md)- Utilisez la console pour une expérience guidée
+  [Création d'une fonctionnalité ACK à l'aide de la AWS CLI](ack-create-cli.md)- Utilisez la AWS CLI pour la création de scripts et l'automatisation
+  [Création d'une capacité ACK à l'aide de eksctl](ack-create-eksctl.md)- Utilisez eksctl pour une expérience native de Kubernetes

## Que se passe-t-il lorsque vous créez une fonctionnalité ACK ?
<a name="_what_happens_when_you_create_an_ack_capability"></a>

Lorsque vous créez une fonctionnalité ACK :

1. EKS crée le service de capacité ACK et le configure pour surveiller et gérer les ressources de votre cluster

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. La fonctionnalité assume le rôle de capacité IAM que vous fournissez.

1. ACK commence à surveiller ses ressources personnalisées dans votre cluster

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

Une fois active, vous pouvez créer des ressources personnalisées ACK dans votre cluster pour gérer les AWS ressources.

**Note**  
L'entrée d'accès créée automatiquement inclut celle `AmazonEKSACKPolicy` qui accorde à ACK les autorisations nécessaires pour gérer les AWS ressources. Certaines ressources ACK qui font référence à des secrets Kubernetes (telles que les bases de données RDS avec mots de passe) nécessitent des politiques d'accès supplémentaires. Pour en savoir plus sur les entrées d'accès et comment configurer des autorisations supplémentaires, consultez[Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md).

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

Après avoir créé la fonctionnalité ACK :
+  [Concepts d'ACK](ack-concepts.md)- Comprenez les concepts ACK et commencez à utiliser les AWS ressources
+  [Concepts d'ACK](ack-concepts.md)- En savoir plus sur le rapprochement, les exportations sur le terrain et les modèles d'adoption des ressources
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer les autorisations IAM et les modèles multi-comptes

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

Cette rubrique décrit comment créer une fonctionnalité AWS Controllers for Kubernetes (ACK) à l'aide du. AWS Management Console

## Création de la fonctionnalité ACK
<a name="_create_the_ack_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 ** AWS Controllers for Kubernetes (ACK).**

1. Choisissez **Create AWS Controllers pour la fonctionnalité Kubernetes**.

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 d'administrateur** 

     Cela ouvre la console IAM dans un nouvel onglet avec la politique de confiance préremplie et la politique `AdministratorAccess` gérée. Vous pouvez désélectionner cette politique et ajouter d'autres autorisations si vous le souhaitez.

     Après avoir créé le rôle, retournez à la console EKS et le rôle sera automatiquement sélectionné.
**Important**  
La `AdministratorAccess` politique suggérée accorde des autorisations étendues et vise à rationaliser le démarrage. Pour une utilisation en production, remplacez-la par une politique personnalisée qui n'accorde que les autorisations nécessaires pour les AWS services spécifiques que vous prévoyez de gérer avec ACK. Pour obtenir des conseils sur la création de politiques de moindre privilège, consultez [Configurer les autorisations ACK](ack-permissions.md) et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

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 de la fonctionnalité ACK.

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

## Vérifiez que les ressources personnalisées sont disponibles
<a name="_verify_custom_resources_are_available"></a>

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

 **Utilisation de la console** 

1. Accédez à votre cluster dans la console Amazon EKS

1. Choisissez l'onglet **Ressources**

1. Choisissez les **extensions** 

1. Choisissez **CustomResourceDefinitions** 

Vous devriez voir un certain nombre de AWS ressources CRDs répertoriées.

 **Utilisation de kubectl** 

```
kubectl api-resources | grep services.k8s.aws
```

Vous devriez voir un certain nombre de AWS ressources APIs répertoriées.

**Note**  
La fonctionnalité des AWS Controllers for Kubernetes installera un certain nombre de ressources CRDs pour diverses ressources. AWS 

## Étapes suivantes
<a name="_next_steps"></a>
+  [Concepts d'ACK](ack-concepts.md)- Comprenez les concepts ACK et lancez-vous
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer les autorisations IAM pour les autres services AWS 
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez votre ressource de capacité ACK

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

Cette rubrique décrit comment créer une fonctionnalité AWS Controllers for Kubernetes (ACK) à l'aide de la CLI. AWS 

## 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).

## É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 > ack-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 ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

Associez la politique `AdministratorAccess` gérée au rôle :

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**Important**  
La `AdministratorAccess` politique suggérée accorde des autorisations étendues et vise à rationaliser le démarrage. Pour une utilisation en production, remplacez-la par une politique personnalisée qui n'accorde que les autorisations nécessaires pour les AWS services spécifiques que vous prévoyez de gérer avec ACK. Pour obtenir des conseils sur la création de politiques de moindre privilège, consultez [Configurer les autorisations ACK](ack-permissions.md) et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

## Étape 2 : Création de la fonctionnalité ACK
<a name="_step_2_create_the_ack_capability"></a>

Créez la ressource de capacité ACK sur votre cluster. Remplacez *region-code* par la AWS région dans laquelle se trouve votre cluster et remplacez *my-cluster* par le nom de votre cluster.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --delete-propagation-policy RETAIN
```

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 dans laquelle se trouve votre cluster et remplacez *my-cluster* par le nom de votre cluster.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --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-ack
```

## É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 ACK sont disponibles dans votre cluster :

```
kubectl api-resources | grep services.k8s.aws
```

Vous devriez voir un certain nombre de AWS ressources APIs répertoriées.

**Note**  
La fonctionnalité des AWS Controllers for Kubernetes installera un certain nombre de ressources CRDs pour diverses ressources. AWS 

## Étapes suivantes
<a name="_next_steps"></a>
+  [Concepts d'ACK](ack-concepts.md)- Comprenez les concepts ACK et lancez-vous
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer les autorisations IAM pour les autres services AWS 
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez votre ressource de capacité ACK

# Création d'une capacité ACK à l'aide de eksctl
<a name="ack-create-eksctl"></a>

Cette rubrique décrit comment créer une fonctionnalité AWS Controllers for Kubernetes (ACK) à 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 > ack-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 ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

Associez la politique `AdministratorAccess` gérée au rôle :

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**Important**  
La `AdministratorAccess` politique suggérée accorde des autorisations étendues et vise à rationaliser le démarrage. Pour une utilisation en production, remplacez-la par une politique personnalisée qui n'accorde que les autorisations nécessaires pour les AWS services spécifiques que vous prévoyez de gérer avec ACK. Pour obtenir des conseils sur la création de politiques de moindre privilège, consultez [Configurer les autorisations ACK](ack-permissions.md) et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

**Important**  
Cette politique accorde des autorisations pour la gestion des compartiments S3 avec`"Resource": "*"`, ce qui permet d'effectuer des opérations sur tous les compartiments S3.  
Pour une utilisation en production :\$1 Limitez le `Resource` champ à des modèles de bucket ARNs ou de nom spécifiques \$1 Utilisez les clés de condition IAM pour limiter l'accès par balises de ressource \$1 N'accordez que les autorisations minimales nécessaires à votre cas d'utilisation  
Pour les autres AWS services, voir[Configurer les autorisations ACK](ack-permissions.md).

Attachez la stratégie au rôle :

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/ACKS3Policy
```

## Étape 2 : Création de la fonctionnalité ACK
<a name="_step_2_create_the_ack_capability"></a>

Créez la capacité ACK à l'aide de eksctl. 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 create capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --ack-service-controllers s3
```

**Note**  
Le `--ack-service-controllers` drapeau est facultatif. En cas d'omission, ACK active tous les contrôleurs disponibles. Pour améliorer les performances et la sécurité, pensez à activer uniquement les contrôleurs dont vous avez besoin. Vous pouvez spécifier plusieurs contrôleurs : `--ack-service-controllers s3,rds,dynamodb` 

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

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

Vérifiez l'état des capacités :

```
eksctl get capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack
```

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

## É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 ACK sont disponibles dans votre cluster :

```
kubectl api-resources | grep services.k8s.aws
```

Vous devriez voir un certain nombre de AWS ressources APIs répertoriées.

**Note**  
La fonctionnalité des AWS Controllers for Kubernetes installera un certain nombre de ressources CRDs pour diverses ressources. AWS 

## Étapes suivantes
<a name="_next_steps"></a>
+  [Concepts d'ACK](ack-concepts.md)- Comprenez les concepts ACK et lancez-vous
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer les autorisations IAM pour les autres services AWS 
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez votre ressource de capacité ACK

# Concepts d'ACK
<a name="ack-concepts"></a>

ACK gère les AWS ressources via Kubernetes en APIs conciliant en permanence l'état souhaité dans vos manifestes avec l'état réel dans. AWS Lorsque vous créez ou mettez à jour une ressource personnalisée Kubernetes, ACK effectue les appels d' AWS API nécessaires pour créer ou modifier la AWS ressource correspondante, puis surveille sa dérive et met à jour le statut de Kubernetes pour refléter l'état actuel. Cette approche vous permet de gérer l'infrastructure à l'aide d'outils et de flux de travail Kubernetes familiers tout en maintenant la cohérence entre votre cluster et. AWS

Cette rubrique explique les concepts fondamentaux qui sous-tendent la façon dont ACK gère les AWS ressources via Kubernetes APIs.

## Commencer à utiliser ACK
<a name="_getting_started_with_ack"></a>

Après avoir créé la fonctionnalité ACK (voir[Création d'une fonctionnalité ACK](create-ack-capability.md)), vous pouvez commencer à gérer les AWS ressources à l'aide de manifestes Kubernetes dans votre cluster.

Par exemple, créez ce manifeste de compartiment S3 dans`bucket.yaml`, en choisissant votre propre nom de compartiment unique.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-test-bucket
  namespace: default
spec:
  name: my-unique-bucket-name-12345
```

Appliquez le manifeste :

```
kubectl apply -f bucket.yaml
```

Vérifiez le statut :

```
kubectl get bucket my-test-bucket
kubectl describe bucket my-test-bucket
```

Vérifiez que le bucket a été créé dans AWS :

```
aws s3 ls | grep my-unique-bucket-name-12345
```

Supprimez la ressource Kubernetes :

```
kubectl delete bucket my-test-bucket
```

Vérifiez que le bucket a été supprimé de AWS :

```
aws s3 ls | grep my-unique-bucket-name-12345
```

Le bucket ne doit plus apparaître dans la liste, ce qui prouve qu'ACK gère le cycle de vie complet des AWS ressources.

Pour plus d'informations sur la prise en main d'ACK, consultez [Getting Started with ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/getting-started/).

## Cycle de vie et réconciliation des ressources
<a name="_resource_lifecycle_and_reconciliation"></a>

ACK utilise une boucle de réconciliation continue pour garantir que vos AWS ressources correspondent à l'état souhaité défini dans vos manifestes Kubernetes.

 **Comment fonctionne la réconciliation** :

1. Vous créez ou mettez à jour une ressource personnalisée Kubernetes (par exemple, un compartiment S3)

1. ACK détecte le changement et compare l'état souhaité avec l'état réel dans AWS 

1. S'ils diffèrent, ACK effectue des appels d' AWS API pour concilier la différence

1. ACK met à jour le statut des ressources dans Kubernetes pour refléter l'état actuel

1. La boucle se répète en continu, généralement toutes les quelques heures

La réconciliation est déclenchée lorsque vous créez une nouvelle ressource Kubernetes, que vous mettez à jour une ressource existante ou lorsque ACK détecte une dérive due à des modifications manuelles effectuées en AWS dehors d'ACK. `spec` En outre, ACK effectue des rapprochements périodiques avec une période de resynchronisation de 10 heures. Les modifications apportées aux ressources Kubernetes déclenchent une réconciliation immédiate, tandis que la détection passive des modifications des AWS ressources en amont se produit lors de la resynchronisation périodique.

Lorsque vous suivez l'exemple de démarrage ci-dessus, ACK exécute les étapes suivantes :

1. Vérifie si le bucket existe dans AWS 

1. Si ce n'est pas le cas, appelez `s3:CreateBucket` 

1. Met à jour le statut de Kubernetes avec l'ARN et l'état du bucket

1. Poursuite de la surveillance de la dérive

Pour en savoir plus sur le fonctionnement d'ACK, consultez [ACK Reconciliation](https://aws-controllers-k8s.github.io/community/docs/user-docs/reconciliation/).

## Conditions relatives au statut
<a name="_status_conditions"></a>

Les ressources ACK utilisent des conditions d'état pour communiquer leur état. La compréhension de ces conditions vous aide à résoudre les problèmes et à comprendre l'état des ressources.
+  **Prêt** : indique que la ressource est prête à être consommée (condition Kubernetes standardisée).
+  **ACK. ResourceSynced**: indique que la spécification de la ressource correspond à l'état de la AWS ressource.
+  **ACK.terminal** : indique qu'une erreur irrécupérable s'est produite.
+  **ACK.adopted** : indique que la ressource a été adoptée à partir d'une AWS ressource existante plutôt que créée.
+  **Ack.Recoverable** : indique une erreur récupérable qui peut être résolue sans mettre à jour les spécifications.
+  **ACK.advisory** : fournit des informations consultatives sur la ressource.
+  **ACK. LateInitialized**: indique si l'initialisation tardive des champs est terminée.
+  **ACK. ReferencesResolved**: indique si tous les `AWSResourceReference` champs ont été résolus.
+  **ACK. IAMRoleSélectionné** : indique si un IAMRole sélecteur a été sélectionné pour gérer cette ressource.

Vérifiez l'état de la ressource :

```
# Check if resource is ready
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'

# Check for terminal errors
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'
```

Exemple de statut :

```
status:
  conditions:
  - type: Ready
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.ResourceSynced
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.Terminal
    status: "True"
  ackResourceMetadata:
    arn: arn:aws:s3:::my-unique-bucket-name
    ownerAccountID: "111122223333"
    region: us-west-2
```

Pour en savoir plus sur le statut et les conditions de l'ACK, consultez la section [Conditions de l'ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/conditions/).

## Politiques de suppression
<a name="_deletion_policies"></a>

La politique de suppression d'ACK contrôle ce qui arrive aux AWS ressources lorsque vous supprimez la ressource Kubernetes.

 **Supprimer (par défaut)** 

La AWS ressource est supprimée lorsque vous supprimez la ressource Kubernetes : il s'agit du comportement par défaut.

```
# No annotation needed - this is the default
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: temp-bucket
spec:
  name: temporary-bucket
```

La suppression de cette ressource entraîne la suppression du compartiment S3 dans AWS.

 **Conserver** 

La AWS ressource est conservée lorsque vous supprimez la ressource Kubernetes :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: important-bucket
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  name: production-data-bucket
```

La suppression de cette ressource la supprime de Kubernetes mais laisse le compartiment S3 dedans. AWS

Cette `retain` politique est utile pour les bases de données de production qui doivent survivre à la ressource Kubernetes, pour les ressources partagées utilisées par plusieurs applications, pour les ressources contenant des données importantes qui ne doivent pas être supprimées accidentellement ou pour la gestion temporaire d'ACK dans le cadre de laquelle vous adoptez une ressource, la configurez, puis la relancez à la gestion manuelle.

Pour en savoir plus sur la politique de suppression d'ACK, consultez la section [Politique de suppression d'ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/deletion-policy/).

## Adoption des ressources
<a name="_resource_adoption"></a>

L'adoption vous permet de placer les AWS ressources existantes sous la gestion d'ACK sans les recréer.

Quand utiliser l'adoption :
+ Migration de l'infrastructure existante vers la gestion ACK
+ Récupération de AWS ressources orphelines en cas de suppression accidentelle de ressources dans Kubernetes
+ Importation de ressources créées par d'autres outils (CloudFormation, Terraform)

Comment fonctionne l'adoption :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Lorsque vous créez cette ressource :

1. ACK vérifie si un bucket portant ce nom existe dans AWS 

1. S'il est trouvé, ACK l'adopte (aucun appel d'API à créer)

1. ACK lit la configuration actuelle depuis AWS 

1. ACK met à jour le statut de Kubernetes pour refléter l'état réel

1. Les mises à jour futures réconcilient normalement la ressource

Une fois adoptées, les ressources sont gérées comme n'importe quelle autre ressource ACK, et la suppression de la ressource Kubernetes entraîne la suppression de la AWS ressource, sauf si vous utilisez la `retain` politique de suppression.

Lors de l'adoption de ressources, AWS celles-ci doivent déjà exister et ACK a besoin d'autorisations de lecture pour les découvrir. La `adopt-or-create` politique adopte la ressource si elle existe ou la crée si elle n'existe pas. Cela est utile lorsque vous souhaitez un flux de travail déclaratif qui fonctionne, que la ressource existe ou non.

Pour en savoir plus sur l'adoption des ressources ACK, consultez la section [Adoption des ressources ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/).

## Ressources entre comptes et entre régions
<a name="_cross_account_and_cross_region_resources"></a>

ACK peut gérer les ressources de différents AWS comptes et régions à partir d'un seul cluster.

 **Annotations de ressources interrégionales** 

Vous pouvez spécifier la région d'une AWS ressource à l'aide d'une annotation :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: eu-bucket
  annotations:
    services.k8s.aws/region: eu-west-1
spec:
  name: my-eu-bucket
```

Vous pouvez également spécifier la région de toutes les AWS ressources créées dans un espace de noms donné :

 **Annotations relatives à l'espace de noms** 

Définissez une région par défaut pour toutes les ressources d'un espace de noms :

```
apiVersion: v1
kind: Namespace
metadata:
  name: production
  annotations:
    services.k8s.aws/default-region: us-west-2
```

Les ressources créées dans cet espace de noms utilisent cette région sauf si elles sont remplacées par une annotation au niveau des ressources.

 **Compte croisé** 

Utilisez les sélecteurs de rôles IAM pour associer des rôles IAM spécifiques à des espaces de noms :

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: target-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

Les ressources créées dans l'espace de noms mappé utilisent automatiquement le rôle spécifié.

Pour en savoir plus sur les sélecteurs de rôles IAM, consultez la section Gestion des [ressources entre comptes ACK](https://aws-controllers-k8s.github.io/docs/guides/cross-account). Pour plus de détails sur la configuration entre comptes, voir[Configurer les autorisations ACK](ack-permissions.md).

## Gestion des erreurs et comportement des nouvelles tentatives
<a name="_error_handling_and_retry_behavior"></a>

ACK gère automatiquement les erreurs transitoires et réessaie les opérations qui ont échoué.

Réessayez la stratégie :
+ Les erreurs transitoires (limitation du débit, problèmes de service temporaires, autorisations insuffisantes) déclenchent de nouvelles tentatives automatiques
+ Le recul exponentiel évite le surmenage AWS APIs
+ Le nombre maximal de tentatives varie en fonction du type d'erreur
+ Erreurs permanentes (paramètres non valides, conflits de noms de ressources), ne réessayez pas

Vérifiez l'état de la ressource pour obtenir des informations détaillées sur les erreurs en utilisant `kubectl describe` :

```
kubectl describe bucket my-bucket
```

Recherchez les conditions d'état avec des messages d'erreur, les événements indiquant les récentes tentatives de rapprochement et le `message` champ des conditions d'état expliquant les échecs. Les erreurs courantes incluent des autorisations IAM insuffisantes, des conflits de noms de ressources AWS, des valeurs de configuration non valides dans le `spec` et des quotas de AWS service dépassés.

Pour résoudre les erreurs courantes, consultez[Résoudre les problèmes liés aux fonctionnalités ACK](ack-troubleshooting.md).

## Composition des ressources avec kro
<a name="_resource_composition_with_kro"></a>

Pour composer et connecter plusieurs ressources ACK ensemble, utilisez la fonctionnalité EKS pour kro (Kube Resource Orchestrator). kro fournit un moyen déclaratif de définir des groupes de ressources, en transmettant la configuration entre les ressources afin de gérer simplement des modèles d'infrastructure complexes.

Pour des exemples détaillés de création de compositions de ressources personnalisées avec des ressources ACK, voir [concepts kro](kro-concepts.md) 

## Étapes suivantes
<a name="_next_steps"></a>
+  [Considérations relatives à l'ACK pour EKS](ack-considerations.md)- Modèles et stratégies d'intégration spécifiques à EKS

# Configurer les autorisations ACK
<a name="ack-permissions"></a>

ACK nécessite des autorisations IAM pour créer et gérer AWS des ressources en votre nom. Cette rubrique explique comment IAM fonctionne avec ACK et fournit des conseils sur la configuration des autorisations pour différents cas d'utilisation.

## Comment IAM travaille avec ACK
<a name="_how_iam_works_with_ack"></a>

ACK utilise des rôles IAM pour s'authentifier auprès de vos ressources AWS et effectuer des actions sur celles-ci. Il existe deux manières de fournir des autorisations à ACK :

 **Rôle de capacité : rôle** IAM que vous fournissez lors de la création de la fonctionnalité ACK. Ce rôle est utilisé par défaut pour toutes les opérations ACK.

 **Sélecteurs de rôles IAM** : rôles IAM supplémentaires pouvant être mappés à des espaces de noms ou à des ressources spécifiques. Ces rôles remplacent le rôle de capacité pour les ressources relevant de leur champ d'application.

Lorsqu'ACK doit créer ou gérer une ressource, il détermine le rôle IAM à utiliser :

1. Vérifiez si un IAMRole sélecteur correspond à l'espace de noms de la ressource

1. Si une correspondance est trouvée, supposons que le rôle IAM

1. Sinon, utilisez le rôle de capacité

Cette approche permet une gestion flexible des autorisations, qu'il s'agisse de configurations simples à rôle unique ou de configurations complexes impliquant plusieurs comptes et plusieurs équipes.

## Mise en route : configuration simple des autorisations
<a name="_getting_started_simple_permission_setup"></a>

Pour le développement, les tests ou les cas d'utilisation simples, vous pouvez ajouter toutes les autorisations de service nécessaires directement au rôle de capacité.

Cette approche fonctionne bien lorsque :
+ Vous commencez à utiliser ACK
+ Toutes les ressources se trouvent dans le même AWS compte
+ Une seule équipe gère toutes les ressources de l'ACK
+ Vous êtes sûr que tous les utilisateurs d'ACK ont les mêmes autorisations

## Bonnes pratiques de production : sélecteurs de rôles IAM
<a name="_production_best_practice_iam_role_selectors"></a>

Pour les environnements de production, utilisez les sélecteurs de rôle IAM pour implémenter l'accès avec le moindre privilège et l'isolation au niveau de l'espace de noms.

Lorsque vous utilisez des sélecteurs de rôle IAM, le rôle de capacité n'a besoin que d'`sts:TagSession`autorisations pour assumer `sts:AssumeRole` les rôles spécifiques au service. Vous n'avez pas besoin d'ajouter d'autorisations de AWS service (comme S3 ou RDS) au rôle de capacité lui-même. Ces autorisations sont accordées aux rôles IAM individuels assumés par le rôle de capacité.

 **Choix entre les modèles d'autorisation** :

Utilisez **des autorisations directes** (ajout d'autorisations de service au rôle de capacité) lorsque :
+ Vous êtes sur le point de démarrer et vous souhaitez la configuration la plus simple
+ Toutes les ressources se trouvent dans le même compte que votre cluster
+ Vous avez des exigences en matière d'autorisations administratives à l'échelle du cluster
+ Toutes les équipes peuvent partager les mêmes autorisations

Utilisez les **sélecteurs de rôles IAM** lorsque :
+ Gestion des ressources sur plusieurs AWS comptes
+ Des équipes ou des espaces de noms différents ont besoin d'autorisations différentes
+ Vous avez besoin d'un contrôle d'accès précis par espace de noms
+ Vous souhaitez suivre les pratiques de sécurité fondées sur le principe du moindre privilège

Vous pouvez commencer par des autorisations directes et migrer vers les sélecteurs de rôle IAM ultérieurement à mesure que vos besoins augmentent.

 **Pourquoi utiliser les sélecteurs de rôles IAM en production :** 
+  **Privilège minimal** : chaque espace de noms ne reçoit que les autorisations dont il a besoin
+  **Isolement** de l'équipe : l'équipe A ne peut pas utiliser accidentellement les autorisations de l'équipe B
+  **Audit simplifié** : mappage clair de l'espace de noms qui utilise quel rôle
+  **Support multicompte** : nécessaire pour gérer les ressources de plusieurs comptes
+  **Séparation des préoccupations** : différents services ou environnements utilisent des rôles différents

### Configuration de base du sélecteur de rôle IAM
<a name="_basic_iam_role_selector_setup"></a>

 **Étape 1 : créer un rôle IAM spécifique au service** 

Créez un rôle IAM avec des autorisations pour des AWS services spécifiques :

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

Configurez la politique de confiance pour permettre au rôle de capacité de l'assumer :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

 **Étape 2 : Accorder AssumeRole l'autorisation à Capability Role** 

Ajoutez l'autorisation au rôle de capacité pour assumer le rôle spécifique au service :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::111122223333:role/ACK-S3-Role"
    }
  ]
}
```

 **Étape 3 : créer un IAMRole sélecteur** 

Mappez le rôle IAM à un espace de noms :

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: s3-namespace-config
spec:
  arn: arn:aws:iam::111122223333:role/ACK-S3-Role
  namespaceSelector:
    names:
      - s3-resources
```

 **Étape 4 : créer des ressources dans l'espace de noms mappé** 

Les ressources de l'espace de `s3-resources` noms utilisent automatiquement le rôle spécifié :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
  namespace: s3-resources
spec:
  name: my-production-bucket
```

## Gestion de plusieurs comptes
<a name="_multi_account_management"></a>

Utilisez les sélecteurs de rôle IAM pour gérer les ressources de plusieurs AWS comptes.

 **Étape 1 : créer un rôle IAM entre comptes** 

Dans le compte cible (444455556666), créez un rôle qui fait confiance au rôle de capacité du compte source :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

Associez des autorisations spécifiques au service à ce rôle.

 **Étape 2 : Accorder AssumeRole l'autorisation** 

Dans le compte source (111122223333), autorisez le rôle de capacité à assumer le rôle de compte cible :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::444455556666:role/ACKTargetAccountRole"
    }
  ]
}
```

 **Étape 3 : créer un IAMRole sélecteur** 

Associez le rôle multicompte à un espace de noms :

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: production-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

 **Étape 4 : Création de ressources** 

Les ressources de l'espace de `production` noms sont créées dans le compte cible :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
  namespace: production
spec:
  name: my-cross-account-bucket
```

## Balises de session
<a name="_session_tags"></a>

La fonctionnalité EKS ACK définit automatiquement les balises de session pour toutes les demandes AWS d'API. Ces balises permettent un contrôle d'accès et un audit précis en identifiant la source de chaque demande.

### Tags de session disponibles
<a name="_available_session_tags"></a>

Les balises de session suivantes sont incluses dans chaque appel AWS d'API effectué par ACK :


| Clé de tag | Description | 
| --- | --- | 
|   `eks:eks-capability-arn`   |  L'ARN de la capacité EKS à l'origine de la demande  | 
|   `eks:kubernetes-namespace`   |  L'espace de noms Kubernetes de la ressource gérée  | 
|   `eks:kubernetes-api-group`   |  Le groupe d'API Kubernetes de la ressource (par exemple,) `s3.services.k8s.aws`  | 

### Utilisation de balises de session pour le contrôle d'accès
<a name="_using_session_tags_for_access_control"></a>

Vous pouvez utiliser ces balises de session dans les conditions de politique IAM pour limiter les ressources qu'ACK peut gérer. Cela fournit une couche de sécurité supplémentaire au-delà des sélecteurs de rôles IAM basés sur des espaces de noms.

 **Exemple : Restreindre par espace de noms** 

Autorisez ACK à créer des compartiments S3 uniquement lorsque la demande provient de l'`production`espace de noms :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:CreateBucket",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/eks:kubernetes-namespace": "production"
        }
      }
    }
  ]
}
```

 **Exemple : Restreindre en fonction de la capacité** 

Autoriser les actions uniquement à partir d'une fonctionnalité ACK spécifique :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/eks:eks-capability-arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack"
        }
      }
    }
  ]
}
```

**Note**  
Les balises de session sont différentes de l'ACK autogéré, qui ne définit pas ces balises par défaut. Cela permet un contrôle d'accès plus granulaire grâce à la fonctionnalité gérée.

## Modèles de sélection de rôles IAM avancés
<a name="_advanced_iam_role_selector_patterns"></a>

Pour une configuration avancée, y compris les sélecteurs d'étiquettes, le mappage des rôles spécifiques aux ressources et des exemples supplémentaires, consultez la documentation [ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/irsa/) IRSA.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Concepts d'ACK](ack-concepts.md)- Comprendre les concepts ACK et le cycle de vie des ressources
+  [Concepts d'ACK](ack-concepts.md)- En savoir plus sur les politiques d'adoption et de suppression des ressources
+  [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)- Comprendre les meilleures pratiques en matière de sécurité en termes de fonctionnalités

# Considérations relatives à l'ACK pour EKS
<a name="ack-considerations"></a>

Cette rubrique couvre les considérations importantes relatives à l'utilisation de la fonctionnalité EKS pour ACK, notamment la configuration IAM, les modèles multi-comptes et l'intégration avec d'autres fonctionnalités EKS.

## Modèles de configuration IAM
<a name="_iam_configuration_patterns"></a>

La fonctionnalité ACK utilise un rôle de capacité IAM pour s'authentifier. AWS Choisissez le modèle IAM adapté à vos besoins.

### Simple : rôle de capacité unique
<a name="_simple_single_capability_role"></a>

Pour le développement, les tests ou les cas d'utilisation simples, accordez toutes les autorisations nécessaires directement au rôle de capacité.

 **Quand utiliser** :
+ Commencer à utiliser ACK
+ Déploiements à compte unique
+ Toutes les ressources sont gérées par une seule équipe
+ Environnements de développement et de test

 **Exemple** : ajoutez des autorisations S3 et RDS à votre rôle de capacité avec des conditions de balisage des ressources :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["rds:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        },
      }
    }
  ]
}
```

Cet exemple limite les opérations S3 et RDS à des régions spécifiques et exige que les ressources RDS soient dotées d'une `ManagedBy: ACK` balise.

### Production : Sélecteurs de rôles IAM
<a name="_production_iam_role_selectors"></a>

Pour les environnements de production, utilisez les sélecteurs de rôle IAM pour implémenter l'accès avec le moindre privilège et l'isolation au niveau de l'espace de noms.

 **Quand utiliser** :
+ Environnements de production
+ Clusters multi-équipes
+ Gestion des ressources multi-comptes
+ Exigences de sécurité relatives au moindre privilège
+ Les différents services nécessitent des autorisations différentes

 **Avantages** :
+ Chaque espace de noms ne reçoit que les autorisations dont il a besoin
+ Isolement de l'équipe - L'équipe A ne peut pas utiliser les autorisations de l'équipe B
+ Audit et conformité simplifiés
+ Nécessaire pour la gestion des ressources entre comptes

Pour une configuration détaillée du sélecteur de rôle IAM, consultez. [Configurer les autorisations ACK](ack-permissions.md)

## Intégration avec d'autres fonctionnalités d'EKS
<a name="_integration_with_other_eks_capabilities"></a>

### GitOps avec Argo CD
<a name="_gitops_with_argo_cd"></a>

Utilisez le CD EKS Capability for Argo pour déployer des ressources ACK à partir de référentiels Git, permettant ainsi des GitOps flux de travail pour la gestion de l'infrastructure.

 **Considérations :**
+ Stockez les ressources ACK à côté des manifestes d'applications pour end-to-end GitOps
+ Organisez par environnement, service ou type de ressource en fonction de la structure de votre équipe
+ Utilisez la synchronisation automatique d'Argo CD pour un rapprochement continu
+ Activez l'élagage pour supprimer automatiquement les ressources supprimées
+ Envisagez hub-and-spoke des modèles de gestion de l'infrastructure multi-clusters

GitOps fournit des pistes d'audit, des fonctionnalités de restauration et une gestion déclarative de l'infrastructure. Pour en savoir plus sur Argo CD, voir[Travailler avec Argo CD](working-with-argocd.md).

### Composition des ressources avec kro
<a name="_resource_composition_with_kro"></a>

Utilisez la fonctionnalité EKS pour kro (Kube Resource Orchestrator) pour composer plusieurs ressources ACK en abstractions de niveau supérieur et personnalisées. APIs

 **Quand utiliser Kro avec ACK** :
+ Créez des modèles réutilisables pour les piles d'infrastructure courantes (base de données, sauvegarde et surveillance)
+ Créez des plateformes en libre-service simplifiées APIs pour les équipes d'application
+ Gérer les dépendances des ressources et transmettre des valeurs entre les ressources (fonction ARN du compartiment S3 vers Lambda)
+ Standardisez les configurations d'infrastructure entre les équipes
+ Réduisez la complexité en masquant les détails de mise en œuvre derrière des ressources personnalisées

 **Exemples de modèles** :
+ Pile d'applications : compartiment S3, file d'attente SQS et configuration des notifications
+ Configuration de la base de données : instance RDS \$1 groupe de paramètres \$1 groupe de sécurité \$1 secrets
+ Mise en réseau : VPC \$1 sous-réseaux \$1 tables de routage \$1 groupes de sécurité

kro gère l'ordre des dépendances, la propagation des statuts et la gestion du cycle de vie des ressources composées. Pour en savoir plus sur Kro, voir[concepts kro](kro-concepts.md).

## Organisation de vos ressources
<a name="_organizing_your_resources"></a>

Organisez les ressources ACK à l'aide des espaces de noms et des balises de AWS ressources Kubernetes pour améliorer la gestion, le contrôle d'accès et le suivi des coûts.

### Organisation de l'espace de noms
<a name="_namespace_organization"></a>

Utilisez les espaces de noms Kubernetes pour séparer logiquement les ressources ACK par environnement (production, développement, développement), par équipe (plateforme, données, ml) ou par application.

 **Avantages** :
+ RBAC limité à l'espace de noms pour le contrôle d'accès
+ Définissez les régions par défaut par espace de noms à l'aide d'annotations
+ Gestion et nettoyage des ressources simplifiés
+ Séparation logique alignée sur la structure organisationnelle

### Étiquette des ressources
<a name="_resource_tagging"></a>

La fonctionnalité EKS ACK applique automatiquement des balises par défaut à toutes les AWS ressources qu'elle crée. Ces étiquettes diffèrent de l'ACK autogéré et offrent une meilleure traçabilité.

 **Balises par défaut appliquées par la fonctionnalité** :


| Clé de tag | Description | 
| --- | --- | 
|   `eks:controller-version`   |  La version du contrôleur ACK  | 
|   `eks:kubernetes-namespace`   |  L'espace de noms Kubernetes de la ressource ACK  | 
|   `eks:kubernetes-resource-name`   |  Le nom de la ressource Kubernetes  | 
|   `eks:kubernetes-api-group`   |  Le groupe d'API Kubernetes (par exemple,) `s3.services.k8s.aws`  | 
|   `eks:eks-capability-arn`   |  L'ARN de la fonctionnalité EKS ACK  | 

**Note**  
L'ACK autogéré utilise différentes balises par défaut : `services.k8s.aws/controller-version` et`services.k8s.aws/namespace`. Les balises de la fonctionnalité utilisent le `eks:` préfixe par souci de cohérence avec les autres fonctionnalités d'EKS.

 **Tags supplémentaires recommandés** :

Ajoutez des balises personnalisées pour la répartition des coûts, le suivi de la propriété et à des fins organisationnelles :
+ Environnement (production, mise en scène, développement)
+ Propriété d'une équipe ou d'un département
+ Centre de coûts pour la répartition de la facturation
+ Nom de l'application ou du service

## Migration depuis d'autres Infrastructure-as-code outils
<a name="_migration_from_other_infrastructure_as_code_tools"></a>

De nombreuses entreprises trouvent la valeur de la standardisation sur Kubernetes au-delà de l'orchestration de leur charge de travail. La migration de la gestion de l'infrastructure et AWS des ressources vers ACK vous permet de standardiser la gestion de l'infrastructure à l'aide de Kubernetes APIs parallèlement aux charges de travail de vos applications.

 **Avantages de la standardisation sur Kubernetes** pour l'infrastructure :
+  **Source unique de vérité** : gérez à la fois les applications et l'infrastructure dans Kubernetes, permettant ainsi une pratique end-to-end GitOps 
+  **Outillage unifié** : les équipes utilisent les ressources et les outils Kubernetes plutôt que d'apprendre plusieurs outils et frameworks
+  **Réconciliation cohérente** : ACK réconcilie en permanence les AWS ressources, comme le fait Kubernetes pour les charges de travail, en détectant et en corrigeant les dérives par rapport aux outils indispensables
+  **Compositions natives** : avec kro et ACK combinés, référencez les AWS ressources directement dans les manifestes d'applications et de ressources, en passant des chaînes de connexion et ARNs entre les ressources
+  **Opérations simplifiées** : un seul plan de contrôle pour les déploiements, les annulations et l'observabilité sur l'ensemble de votre système

ACK prend en charge l'adoption AWS des ressources existantes sans les recréer, ce qui permet une migration sans interruption depuis CloudFormation Terraform ou des ressources externes au cluster.

 **Adoptez une ressource existante** :

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Une fois adoptée, la ressource est gérée par ACK et peut être mise à jour via les manifestes Kubernetes. Vous pouvez effectuer une migration incrémentielle, en adoptant des ressources selon vos besoins, tout en conservant les outils IaC existants pour d'autres ressources.

ACK prend également en charge les ressources en lecture seule. Pour les ressources gérées par d'autres équipes ou les outils que vous souhaitez référencer mais ne pas modifier, combinez l'adoption avec la politique de `retain` suppression et accordez uniquement des autorisations de lecture IAM. Cela permet aux applications de découvrir une infrastructure partagée (rôles IAMVPCs, clés KMS) via Kubernetes APIs sans risquer de modifications.

Pour en savoir plus sur l'adoption des ressources, voir[Concepts d'ACK](ack-concepts.md).

## Politiques de suppression
<a name="_deletion_policies"></a>

Les politiques de suppression contrôlent ce qu'il advient AWS des ressources lorsque vous supprimez la ressource Kubernetes correspondante. Choisissez la bonne politique en fonction du cycle de vie des ressources et de vos exigences opérationnelles.

### Supprimer (par défaut)
<a name="_delete_default"></a>

La AWS ressource est supprimée lorsque vous supprimez la ressource Kubernetes. Cela permet de maintenir la cohérence entre votre cluster et AWS de garantir que les ressources ne s'accumulent pas.

 **Quand utiliser la suppression** :
+ Environnements de développement et de test dans lesquels le nettoyage est important
+ Ressources éphémères liées au cycle de vie des applications (bases de données de test, compartiments temporaires)
+ Ressources qui ne devraient pas durer plus longtemps que l'application (files d'attente SQS, clusters) ElastiCache 
+ Optimisation des coûts : nettoyage automatique des ressources inutilisées
+ Environnements gérés avec GitOps lesquels la suppression des ressources de Git devrait supprimer l'infrastructure

La politique de suppression par défaut s'aligne sur le modèle déclaratif de Kubernetes : le contenu du cluster correspond à ce qui existe dans. AWS

### Conserver
<a name="_retain"></a>

La AWS ressource est conservée lorsque vous supprimez la ressource Kubernetes. Cela protège les données critiques et permet aux ressources de survivre à leur représentation sur Kubernetes.

 **Quand utiliser Retain** :
+ Bases de données de production contenant des données critiques qui doivent résister aux modifications des clusters
+ Compartiments de stockage à long terme soumis à des exigences de conformité ou d'audit
+ Ressources partagées utilisées par plusieurs applications ou équipes
+ Migration des ressources vers différents outils de gestion
+ Scénarios de reprise après sinistre dans lesquels vous souhaitez préserver l'infrastructure
+ Ressources présentant des dépendances complexes qui nécessitent une mise hors service minutieuse

```
apiVersion: rds.services.k8s.aws/v1alpha1
kind: DBInstance
metadata:
  name: production-db
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  dbInstanceIdentifier: prod-db
  # ... configuration
```

**Important**  
Les ressources conservées continuent d'entraîner des AWS coûts et doivent être supprimées manuellement AWS lorsqu'elles ne sont plus nécessaires. Utilisez le balisage des ressources pour suivre les ressources conservées à des fins de nettoyage.

Pour en savoir plus sur les politiques de suppression, consultez[Concepts d'ACK](ack-concepts.md).

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

Pour des informations détaillées sur l'utilisation d'ACK :
+  [Guide d'utilisation d'ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/usage/) - Création et gestion de ressources
+  [Référence de l'API ACK](https://aws-controllers-k8s.github.io/community/reference/) - Documentation complète sur les API pour tous les services
+  [Documentation ACK - Documentation](https://aws-controllers-k8s.github.io/community/docs/) utilisateur complète

## Étapes suivantes
<a name="_next_steps"></a>
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer les autorisations IAM et les modèles multi-comptes
+  [Concepts d'ACK](ack-concepts.md)- Comprendre les concepts ACK et le cycle de vie des ressources
+  [Résoudre les problèmes liés aux fonctionnalités ACK](ack-troubleshooting.md)- Résoudre les problèmes d'ACK
+  [Travailler avec Argo CD](working-with-argocd.md)- Déployez les ressources ACK avec GitOps
+  [concepts kro](kro-concepts.md)- Composez les ressources ACK en abstractions de niveau supérieur

# Résoudre les problèmes liés aux fonctionnalités ACK
<a name="ack-troubleshooting"></a>

Cette rubrique fournit des conseils de dépannage relatifs à la fonctionnalité EKS pour ACK, notamment les vérifications de l'état des fonctionnalités, la vérification de l'état des ressources et les problèmes d'autorisation IAM.

**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 ni aux espaces de noms des contrôleurs. Le dépannage se concentre sur l'état des capacités, l'état des ressources et la configuration IAM.

## La capacité est ACTIVE mais les ressources ne sont pas créées
<a name="_capability_is_active_but_resources_arent_being_created"></a>

Si votre fonctionnalité ACK affiche un `ACTIVE` état mais que les ressources n'y sont pas créées AWS, vérifiez l'état de la fonctionnalité, l'état des ressources et les autorisations IAM.

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

Vous pouvez consulter les problèmes d'état et d'é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-ack

# Look for issues in the health section
```

 **Causes courantes :**
+  **Autorisations IAM manquantes** : le rôle de capacité ne dispose pas d'autorisations pour le service AWS 
+  **Mauvais espace de noms** : ressources créées dans l'espace de noms sans sélecteur approprié IAMRole
+  **Spécification de ressource non valide :** vérifiez les conditions d'état des ressources pour détecter les erreurs de validation
+  Limitation de **l'API : les** limites de débit des AWS API sont atteintes
+  **Webhooks d'admission** : webhooks d'admission empêchant le contrôleur de corriger le statut des ressources

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

```
# Describe the resource to see conditions and events
kubectl describe bucket my-bucket -n default

# Look for status conditions
kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}'

# View resource events
kubectl get events --field-selector involvedObject.name=my-bucket -n default
```

 **Vérifiez les autorisations IAM** :

```
# View the Capability Role's policies
aws iam list-attached-role-policies --role-name my-ack-capability-role
aws iam list-role-policies --role-name my-ack-capability-role

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

## Ressources créées dans Kubernetes AWS mais non affichées
<a name="resources_created_in_shared_aws_but_not_showing_in_kubernetes"></a>

ACK suit uniquement les ressources qu'il crée via les manifestes Kubernetes. Pour gérer les AWS ressources existantes avec ACK, utilisez la fonctionnalité d'adoption.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Pour en savoir plus sur l'adoption des ressources, voir[Concepts d'ACK](ack-concepts.md).

## Les ressources entre comptes ne sont pas créées
<a name="_cross_account_resources_not_being_created"></a>

Si aucune ressource n'est créée dans un AWS compte cible lors de l'utilisation des sélecteurs de rôle IAM, vérifiez la relation de confiance et la configuration du IAMRole sélecteur.

 **Vérifiez la relation de confiance** :

```
# Check the trust policy in the target account role
aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'
```

La politique de confiance doit permettre au rôle de capacité du compte source de l'assumer.

 **Confirmez la configuration IAMRole du sélecteur** :

```
# List IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Describe specific selector
kubectl describe iamroleselector my-selector
```

 **Vérifiez l'alignement de l'espace de noms** :

IAMRoleLes sélecteurs sont des ressources limitées à un cluster mais ciblent des espaces de noms spécifiques. Assurez-vous que vos ressources ACK se trouvent dans un espace de noms qui correspond au IAMRole sélecteur d'espace de noms du sélecteur :

```
# Check resource namespace
kubectl get bucket my-cross-account-bucket -n production

# List all IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Check which namespace the selector targets
kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'
```

 **Vérifiez la condition IAMRole sélectionnée** :

Vérifiez que le IAMRole sélecteur a bien été mis en correspondance avec votre ressource en vérifiant la `ACK.IAMRoleSelected` condition suivante :

```
# Check if IAMRoleSelector was matched
kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'
```

Si la condition est `False` ou absente, le IAMRole sélecteur d'espace de noms du sélecteur ne correspond pas à l'espace de noms de la ressource. Vérifiez que le sélecteur `namespaceSelector` correspond aux libellés d'espace de noms de votre ressource.

 **Vérifiez les autorisations relatives aux rôles de capacité** :

Le rôle de capacité a besoin `sts:AssumeRole` et `sts:TagSession` autorisations pour le rôle de compte cible :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`"
    }
  ]
}
```

Pour une configuration détaillée entre comptes, voir[Configurer les autorisations ACK](ack-permissions.md).

## Étapes suivantes
<a name="_next_steps"></a>
+  [Considérations relatives à l'ACK pour EKS](ack-considerations.md)- Considérations et meilleures pratiques relatives à l'ACK
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer les autorisations IAM et les modèles multi-comptes
+  [Concepts d'ACK](ack-concepts.md)- Comprendre les concepts ACK et le cycle de vie des ressources
+  [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 capacité EKS pour ACK à une solution ACK autogérée
<a name="ack-comparison"></a>

La capacité EKS pour ACK fournit les mêmes fonctionnalités que les contrôleurs ACK autogérés, mais avec des avantages opérationnels significatifs. 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 à ACK.

## Différences par rapport à l'ACK en amont
<a name="_differences_from_upstream_ack"></a>

La capacité EKS pour ACK est basée sur les contrôleurs ACK en amont, mais elle diffère en termes d'intégration IAM.

 Rôle de **capacité IAM : la fonctionnalité utilise un rôle** IAM dédié avec une politique de confiance qui autorise le principal du `capabilities.eks.amazonaws.com` service, et non l'IRSA (rôles IAM pour les comptes de service). Vous pouvez associer des politiques IAM directement au rôle de capacité sans avoir à créer ou à annoter des comptes de service Kubernetes ou à configurer des fournisseurs OIDC. Une bonne pratique pour les cas d'utilisation en production consiste à configurer les autorisations de service à l'aide de`IAMRoleSelector`. Pour plus d’informations, consultez [Configurer les autorisations ACK](ack-permissions.md).

 **Balises de session** : la fonctionnalité gérée définit automatiquement les balises de session pour toutes les demandes d' AWS API, ce qui permet un contrôle d'accès et un audit précis. Les balises incluent `eks:eks-capability-arn``eks:kubernetes-namespace`, et`eks:kubernetes-api-group`. Cela diffère de l'ACK autogéré, qui ne définit pas ces balises par défaut. Consultez [Configurer les autorisations ACK](ack-permissions.md) pour plus de détails sur l'utilisation des balises de session dans les politiques IAM.

 **Balises de ressources** : la fonctionnalité applique des balises par défaut différentes aux AWS ressources par rapport à l'ACK autogéré. La fonctionnalité utilise des balises `eks:` préfixées (telles que`eks:kubernetes-namespace`,`eks:eks-capability-arn`) au lieu des `services.k8s.aws/` balises utilisées par ACK autogéré. Consultez [Considérations relatives à l'ACK pour EKS](ack-considerations.md) la liste complète des balises de ressources par défaut.

 **Compatibilité des ressources** : les ressources personnalisées ACK fonctionnent de la même manière que les ressources ACK en amont, sans aucune modification de vos fichiers YAML de ressources ACK. La fonctionnalité utilise les mêmes Kubernetes APIs et CRDs les outils `kubectl` fonctionnent donc de la même manière. Tous les contrôleurs GA et les ressources de l'ACK en amont sont pris en charge.

Pour consulter la documentation complète d'ACK et les guides spécifiques aux services, consultez la documentation [ACK](https://aws-controllers-k8s.github.io/community/).

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

Vous pouvez passer d'un ACK autogéré à une fonctionnalité gérée sans aucune interruption de service :

1. Mettez à jour votre contrôleur ACK autogéré pour l'utiliser `kube-system` pour les baux électoraux des dirigeants, par exemple :

   ```
   helm upgrade --install ack-s3-controller \
     oci://public.ecr.aws/aws-controllers-k8s/s3-chart \
     --namespace ack-system \
     --set leaderElection.namespace=kube-system
   ```

   Cela déplace le bail du contrôleur vers`kube-system`, ce qui permet à la capacité gérée de se coordonner avec celui-ci.

1. Créez la fonctionnalité ACK sur votre cluster (voir[Création d'une fonctionnalité ACK](create-ack-capability.md))

1. La fonctionnalité gérée reconnaît les AWS ressources existantes gérées par ACK et prend en charge le rapprochement

1. Diminuez ou supprimez progressivement les déploiements de contrôleurs autogérés :

   ```
   helm uninstall ack-s3-controller --namespace ack-system
   ```

Cette approche permet aux deux contrôleurs de coexister en toute sécurité pendant la migration. La fonctionnalité gérée adopte automatiquement les ressources précédemment gérées par des contrôleurs autogérés, garantissant ainsi un rapprochement continu sans conflits.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Création d'une fonctionnalité ACK](create-ack-capability.md)- Création d'une ressource de capacité ACK
+  [Concepts d'ACK](ack-concepts.md)- Comprendre les concepts ACK et le cycle de vie des ressources
+  [Configurer les autorisations ACK](ack-permissions.md)- Configurer l'IAM et les autorisations

# 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

# Composition des ressources avec kro (Kube Resource Orchestrator)
<a name="kro"></a>

 **kro (Kube Resource Orchestrator)** est un projet open source natif de Kubernetes qui vous permet de définir des Kubernetes personnalisés à l'aide d'une configuration simple et directe. APIs Avec kro, vous pouvez facilement configurer de nouvelles personnalisations APIs qui créent un groupe d'objets Kubernetes et les opérations logiques entre eux.

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

## Comment fonctionne Kro
<a name="_how_kro_works"></a>

kro introduit une définition de ressource personnalisée (CRD) appelée `ResourceGraphDefinition` (RGD) qui permet de créer des Kubernetes personnalisés de manière simple et rationalisée. APIs Lorsque vous créez un`ResourceGraphDefinition`, kro utilise des extensions Kubernetes natives pour créer et gérer de nouvelles APIs extensions dans votre cluster. À partir de cette spécification de ressource unique, kro créera et enregistrera un nouveau CRD pour vous en fonction de votre spécification et s'adaptera pour gérer vos ressources personnalisées nouvellement définies.

RGDs peut inclure plusieurs ressources, et kro déterminera les interdépendances et l'ordre des ressources, pour que vous n'ayez pas à le faire. Vous pouvez utiliser une syntaxe simple pour injecter de la configuration d'une ressource à l'autre, ce qui simplifie considérablement les compositions et élimine le besoin d'opérateurs de « colle » dans votre cluster. Avec kro, vos ressources personnalisées peuvent inclure des ressources Kubernetes natives ainsi que toutes les définitions de ressources personnalisées (CRDs) installées dans le cluster.

kro prend en charge un seul type de ressource principale :
+  **ResourceGraphDefinition (RGD)** : définit une ressource personnalisée Kubernetes, encapsulant une ou plusieurs ressources Kubernetes natives ou personnalisées sous-jacentes

En plus de cette ressource, kro créera et gérera le cycle de vie de vos ressources personnalisées créées avec elle, ainsi que de toutes les ressources qui les constituent.

kro s'intègre parfaitement à AWS Controllers for Kubernetes (ACK), ce qui vous permet de composer des ressources de charge de travail avec des ressources pour créer des abstractions de AWS haut niveau. Cela vous permet de créer vos propres éléments constitutifs du cloud, de simplifier la gestion des ressources et d'activer des modèles réutilisables avec des paramètres de configuration par défaut et immuables basés sur les normes de votre organisation.

## Les avantages de Kro
<a name="_benefits_of_kro"></a>

kro permet aux équipes de plateforme de créer des Kubernetes personnalisés APIs qui composent plusieurs ressources en abstractions de niveau supérieur. Cela simplifie la gestion des ressources en permettant aux développeurs de déployer des applications complexes à l'aide de ressources personnalisées simples, standardisées et versionnées. Vous définissez des modèles réutilisables pour les combinaisons de ressources communes, ce qui permet une création de ressources cohérente au sein de votre organisation.

kro utilise le [langage d'expression commun (CEL) dans Kubernetes](https://kubernetes.io/docs/reference/using-api/cel/) pour transmettre des valeurs entre les ressources et intégrer une logique conditionnelle, offrant ainsi une flexibilité dans la composition des ressources. Vous pouvez composer à la fois les ressources Kubernetes et les AWS ressources gérées par ACK de manière personnalisée unifiée APIs, ce qui permet de définir des applications et des infrastructures complètes.

kro prend en charge la configuration déclarative via les manifestes Kubernetes, ce qui permet aux GitOps flux de travail et à l'infrastructure de devenir des pratiques de code qui s'intègrent parfaitement à vos processus de développement existants. Dans le cadre des fonctionnalités gérées par EKS, kro est entièrement géré par AWS, ce qui élimine le besoin d'installer, de configurer et de maintenir des contrôleurs kro sur vos clusters.

 **Exemple : création d'un ResourceGraphDefinition** 

L'exemple suivant montre une application simple `ResourceGraphDefinition` qui crée une application Web avec un déploiement et un service :

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer | default=3
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: ${schema.spec.name}
        spec:
          replicas: ${schema.spec.replicas}
    - id: service
      template:
        apiVersion: v1
        kind: Service
        metadata:
          name: ${schema.spec.name}
```

Lorsque les utilisateurs créent des instances de la ressource `WebApplication` personnalisée, kro crée automatiquement les ressources de déploiement et de service correspondantes, en gérant leur cycle de vie ainsi que la ressource personnalisée.

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

kro s'intègre aux autres fonctionnalités gérées par EKS.
+  ** AWS Contrôleurs pour Kubernetes (ACK)** : utilisez kro pour composer les ressources ACK en abstractions de niveau supérieur, simplifiant ainsi la gestion des ressources. AWS 
+  **Argo CD** : utilisez Argo CD pour gérer le déploiement de ressources personnalisées Kro sur plusieurs clusters, en activant des GitOps flux de travail pour les éléments constitutifs de votre plate-forme et les piles d'applications.

## Débuter avec Kro
<a name="_getting_started_with_kro"></a>

Pour commencer à utiliser la fonctionnalité EKS pour Kro :

1.  [Créez une ressource de capacité Kro](create-kro-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. Créez ResourceGraphDefinitions (RGDs) qui définit vos compositions personnalisées APIs et vos compositions de ressources.

1. Appliquez des instances de vos ressources personnalisées pour provisionner et gérer les Kubernetes et les ressources sous-jacentes. AWS 

# Création d'une fonctionnalité Kro
<a name="create-kro-capability"></a>

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

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

Avant de créer une fonctionnalité Kro, 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)
+ Autorisations IAM suffisantes pour créer des ressources de capacités sur les clusters EKS
+ (Pour CLI/ekSCTL) L'outil CLI approprié est installé et configuré

**Note**  
Contrairement à ACK et Argo CD, kro n'a pas besoin d'autorisations IAM supplémentaires au-delà de la politique de confiance. kro fonctionne entièrement au sein de votre cluster et n'effectue pas d'appels d'API. AWS Cependant, vous devez tout de même fournir un rôle de capacité IAM avec la politique de confiance appropriée. Pour plus d'informations sur la configuration des autorisations RBAC de Kubernetes pour kro, consultez. [Configurer les autorisations Kro](kro-permissions.md)

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

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

## Que se passe-t-il lorsque vous créez une capacité Kro
<a name="_what_happens_when_you_create_a_kro_capability"></a>

Lorsque vous créez une fonctionnalité Kro :

1. EKS crée le service Kro Capability et le configure pour surveiller et gérer les ressources de votre cluster

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, `AmazonEKSKROPolicy` qui accorde les autorisations de gestion ResourceGraphDefinitions et de gestion de leurs instances (voir[Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md))

1. La fonctionnalité assume le rôle de capacité IAM que vous fournissez (utilisé uniquement pour la relation de confiance)

1. kro commence à surveiller les `ResourceGraphDefinition` ressources et leurs instances

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

Une fois actif, vous pouvez créer ResourceGraphDefinitions pour définir des paramètres personnalisés APIs et créer des instances de ceux-ci APIs.

**Note**  
L'entrée d'accès créée automatiquement inclut celle `AmazonEKSKROPolicy` qui accorde à Kro les autorisations de gestion ResourceGraphDefinitions et leurs instances. Pour permettre à kro de créer les ressources Kubernetes sous-jacentes définies dans vos fichiers ResourceGraphDefinitions (telles que les déploiements, les services ou les ressources ACK), vous devez configurer des politiques d'entrée d'accès supplémentaires. Pour en savoir plus sur les entrées d'accès et sur la façon de configurer des autorisations supplémentaires, consultez [Configurer les autorisations Kro](kro-permissions.md) et[Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md).

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

Après avoir créé la fonctionnalité Kro :
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et la composition des ressources
+  [concepts kro](kro-concepts.md)- En savoir plus sur SimpleSchema les expressions CEL et les modèles de composition des ressources

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

Cette rubrique décrit comment créer une fonctionnalité kro (Kube Resource Orchestrator) à l'aide du. AWS Management Console

## Création de la fonctionnalité Kro
<a name="_create_the_kro_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 volet de navigation de gauche, choisissez **kro (Kube Resource Orchestrator**).

1. Choisissez **Create Kro Capability.**

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 **Create kro** role 

     Cela ouvre la console IAM dans un nouvel onglet avec une politique de confiance préremplie. Le rôle ne nécessite aucune autorisation IAM supplémentaire puisque kro fonctionne entièrement au sein de votre cluster.

     Après avoir créé le rôle, retournez à la console EKS et le rôle sera automatiquement sélectionné.
**Note**  
Contrairement à ACK et Argo CD, kro n'a pas besoin d'autorisations IAM supplémentaires au-delà de la politique de confiance. kro fonctionne entièrement au sein de votre cluster et n'effectue pas d'appels d'API. AWS 

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 **Capabilities**, consultez l'état des capacités Kro.

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 le dépannage, consultez[Utilisation des ressources en matière de capacités](working-with-capabilities.md).

## Accorder des autorisations pour gérer les ressources Kubernetes
<a name="_grant_permissions_to_manage_kubernetes_resources"></a>

Lorsque vous créez une fonctionnalité kro, une entrée d'accès EKS est automatiquement créée avec le`AmazonEKSKROPolicy`, ce qui permet à kro de gérer ses ResourceGraphDefinitions instances. Cependant, aucune autorisation n'est accordée par défaut pour créer les ressources Kubernetes sous-jacentes (telles que les déploiements, les services ConfigMaps, etc.) définies dans votre. ResourceGraphDefinitions

Cette conception intentionnelle suit le principe du moindre privilège : différents nécessitent des autorisations différentes ResourceGraphDefinitions . Vous devez configurer explicitement les autorisations dont Kro a besoin en fonction des ressources que vous ResourceGraphDefinitions allez gérer.

Pour une mise en route rapide, des environnements de test ou de développement, utilisez `AmazonEKSClusterAdminPolicy` :

1. Dans la console EKS, accédez à l'onglet **Accès** de votre cluster.

1. Sous **Entrées d'accès**, recherchez l'entrée correspondant à votre rôle de capacité Kro (il comportera l'ARN du rôle que vous avez créé précédemment).

1. Choisissez l'entrée d'accès pour en ouvrir les détails.

1. Dans la section **Politiques d'accès**, choisissez **Politique d'accès associée**.

1. Sélectionnez `AmazonEKSClusterAdminPolicy` dans la liste des politiques.

1. Pour **Etendue d'accès**, sélectionnez **Cluster**.

1. Choisissez **Associer**.

**Important**  
Il `AmazonEKSClusterAdminPolicy` accorde des autorisations étendues pour créer et gérer toutes les ressources Kubernetes, y compris la possibilité de créer n'importe quel type de ressource dans tous les espaces de noms. C'est pratique pour le développement POCs mais ne doit pas être utilisé en production. Pour la production, créez des politiques RBAC personnalisées qui n'accordent que les autorisations nécessaires pour les ressources spécifiques que vous ResourceGraphDefinitions allez gérer. Pour obtenir des conseils sur la configuration des autorisations de moindre privilège, reportez-vous [Configurer les autorisations Kro](kro-permissions.md) aux sections et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

## Vérifiez que les ressources personnalisées sont disponibles
<a name="_verify_custom_resources_are_available"></a>

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

 **Utilisation de la console** 

1. Accédez à votre cluster dans la console Amazon EKS

1. Choisissez l'onglet **Ressources**

1. Choisissez les **extensions** 

1. Choisissez **CustomResourceDefinitions** 

Vous devriez voir le type de `ResourceGraphDefinition` ressource répertorié.

 **Utilisation de kubectl** 

```
kubectl api-resources | grep kro.run
```

Vous devriez voir le type de `ResourceGraphDefinition` ressource répertorié.

## Étapes suivantes
<a name="_next_steps"></a>
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et la composition des ressources
+  [concepts kro](kro-concepts.md)- En savoir plus sur SimpleSchema les expressions CEL et les modèles de composition
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez votre ressource Kro Capability

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

Cette rubrique décrit comment créer une fonctionnalité kro (Kube Resource Orchestrator) à l'aide de la CLI. AWS 

## 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).

## É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 > kro-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 KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**Note**  
Contrairement à ACK et Argo CD, kro ne nécessite pas d'autorisations IAM supplémentaires. kro fonctionne entièrement au sein de votre cluster et n'effectue pas d'appels d'API. AWS Le rôle est uniquement nécessaire pour établir une relation de confiance avec le service des capacités EKS.

## Étape 2 : Création de la fonctionnalité Kro
<a name="_step_2_create_the_kro_capability"></a>

Créez la ressource de capacité Kro sur votre cluster. *region-code*Remplacez-le par la AWS région où se trouve votre cluster (par exemple`us-west-2`) et *my-cluster* par le nom de votre cluster.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/KROCapabilityRole \
  --delete-propagation-policy RETAIN
```

La commande revient immédiatement, mais la fonctionnalité met un certain temps à devenir active car EKS crée l'infrastructure de capacités et les composants 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 dans laquelle se trouve votre cluster et remplacez *my-cluster* par le nom de votre cluster.

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

La fonctionnalité est prête lorsque l'état s'affiche`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-kro
```

## Étape 4 : octroyer des autorisations pour gérer les ressources Kubernetes
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

Lorsque vous créez une fonctionnalité kro, une entrée d'accès EKS est automatiquement créée avec le`AmazonEKSKROPolicy`, ce qui permet à kro de gérer ses ResourceGraphDefinitions instances. Cependant, aucune autorisation n'est accordée par défaut pour créer les ressources Kubernetes sous-jacentes (telles que les déploiements, les services ConfigMaps, etc.) définies dans votre. ResourceGraphDefinitions

Cette conception intentionnelle suit le principe du moindre privilège : différents nécessitent des autorisations différentes ResourceGraphDefinitions . Par exemple :\$1 A ResourceGraphDefinition qui crée uniquement ConfigMaps et Secrets a besoin d'autorisations différentes de celles qui créent des déploiements et des services \$1 A ResourceGraphDefinition qui crée des ressources ACK a besoin d'autorisations pour ces ressources personnalisées spécifiques \$1 Certains ResourceGraphDefinitions peuvent uniquement lire les ressources existantes sans en créer de nouvelles

Vous devez configurer explicitement les autorisations dont Kro a besoin en fonction des ressources que vous ResourceGraphDefinitions allez gérer.

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

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

Obtenez l'ARN du rôle de capacité :

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Associez la politique d'administration du cluster :

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Important**  
Il `AmazonEKSClusterAdminPolicy` accorde des autorisations étendues pour créer et gérer toutes les ressources Kubernetes, y compris la possibilité de créer n'importe quel type de ressource dans tous les espaces de noms. C'est pratique pour le développement POCs mais ne doit pas être utilisé en production. Pour la production, créez des politiques RBAC personnalisées qui n'accordent que les autorisations nécessaires pour les ressources spécifiques que vous ResourceGraphDefinitions allez gérer. Pour obtenir des conseils sur la configuration des autorisations de moindre privilège, reportez-vous [Configurer les autorisations Kro](kro-permissions.md) aux sections et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

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

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

```
kubectl api-resources | grep kro.run
```

Vous devriez voir le type de `ResourceGraphDefinition` ressource répertorié.

## Étapes suivantes
<a name="_next_steps"></a>
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et la composition des ressources
+  [concepts kro](kro-concepts.md)- En savoir plus sur SimpleSchema les expressions CEL et les modèles de composition
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez votre ressource Kro Capability

# Création d'une capacité kro à l'aide de eksctl
<a name="kro-create-eksctl"></a>

Cette rubrique décrit comment créer une fonctionnalité kro (Kube Resource Orchestrator) à 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 > kro-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 KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**Note**  
Contrairement à ACK et Argo CD, kro n'a pas besoin d'autorisations IAM supplémentaires au-delà de la politique de confiance. kro fonctionne entièrement au sein de votre cluster et n'effectue pas d'appels d'API. AWS 

## Étape 2 : Création de la fonctionnalité Kro
<a name="_step_2_create_the_kro_capability"></a>

Créez la capacité kro à l'aide de eksctl. 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 create capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/KROCapabilityRole
```

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

## Étape 3 : vérifier que la fonctionnalité est active
<a name="_step_3_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-kro
```

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

## Étape 4 : accorder des autorisations pour gérer les ressources Kubernetes
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

Par défaut, kro peut uniquement créer ResourceGraphDefinitions et gérer leurs instances. Pour permettre à kro de créer et de gérer les ressources Kubernetes sous-jacentes définies dans votre fichier ResourceGraphDefinitions, associez la politique d'`AmazonEKSClusterAdminPolicy`accès à l'entrée d'accès de la fonctionnalité.

Obtenez l'ARN du rôle de capacité :

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Associez la politique d'administration du cluster :

```
aws eks associate-access-policy \
  --region region-code \
  --cluster my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Important**  
Il `AmazonEKSClusterAdminPolicy` accorde des autorisations étendues pour créer et gérer toutes les ressources Kubernetes et vise à rationaliser le démarrage. Pour une utilisation en production, créez des politiques RBAC plus restrictives qui n'accordent que les autorisations nécessaires pour les ressources spécifiques que vous ResourceGraphDefinitions allez gérer. Pour obtenir des conseils sur la configuration des autorisations de moindre privilège, reportez-vous [Configurer les autorisations Kro](kro-permissions.md) aux sections et. [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)

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

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

```
kubectl api-resources | grep kro.run
```

Vous devriez voir le type de `ResourceGraphDefinition` ressource répertorié.

## Étapes suivantes
<a name="_next_steps"></a>
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et la composition des ressources
+  [concepts kro](kro-concepts.md)- En savoir plus sur SimpleSchema les expressions CEL et les modèles de composition
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérez votre ressource Kro Capability

# concepts kro
<a name="kro-concepts"></a>

kro permet aux équipes de plateforme de créer des Kubernetes personnalisés APIs qui composent plusieurs ressources en abstractions de niveau supérieur. Cette rubrique présente un exemple pratique, puis explique les concepts de base que vous devez comprendre lorsque vous travaillez avec la capacité EKS pour kro.

## Débuter avec Kro
<a name="_getting_started_with_kro"></a>

Après avoir créé la fonctionnalité Kro (voir[Création d'une fonctionnalité Kro](create-kro-capability.md)), vous pouvez commencer à créer une APIs utilisation personnalisée ResourceGraphDefinitions dans votre cluster.

Voici un exemple complet qui crée une abstraction d'application Web simple :

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: webapplication
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    group: kro.run
    spec:
      name: string | required=true
      image: string | default="nginx:latest"
      replicas: integer | default=3
  resources:
  - id: deployment
    template:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: ${schema.spec.name}
      spec:
        replicas: ${schema.spec.replicas}
        selector:
          matchLabels:
            app: ${schema.spec.name}
        template:
          metadata:
            labels:
              app: ${schema.spec.name}
          spec:
            containers:
            - name: app
              image: ${schema.spec.image}
              ports:
              - containerPort: 80
  - id: service
    template:
      apiVersion: v1
      kind: Service
      metadata:
        name: ${schema.spec.name}
      spec:
        selector:
          app: ${schema.spec.name}
        ports:
        - protocol: TCP
          port: 80
          targetPort: 80
```

Après avoir appliqué cela ResourceGraphDefinition, les équipes d'application peuvent créer des applications Web à l'aide de votre API simplifiée :

```
apiVersion: kro.run/v1alpha1
kind: WebApplication
metadata:
  name: my-app
spec:
  name: my-app
  replicas: 5
```

kro crée automatiquement le déploiement et le service avec la configuration appropriée. Comme il `image` n'est pas spécifié, il utilise la valeur par défaut `nginx:latest` du schéma.

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

**Important**  
kro valide ResourceGraphDefinitions au moment de la création, pas au moment de l'exécution. Lorsque vous créez un RGD, kro valide la syntaxe du CEL, vérifie le type des expressions par rapport aux schémas Kubernetes réels, vérifie l'existence des champs et détecte les dépendances circulaires. Cela signifie que les erreurs sont détectées immédiatement lorsque vous créez le RGD, avant que les instances ne soient déployées.

### ResourceGraphDefinition
<a name="_resourcegraphdefinition"></a>

A ResourceGraphDefinition (RGD) définit une API Kubernetes personnalisée en spécifiant :
+  **Schéma** : structure de l'API à l'aide SimpleSchema du format (noms de champs, types, valeurs par défaut, validation)
+  **Ressources** : modèles pour les Kubernetes sous-jacents ou AWS ressources à créer
+  **Dépendances** - Comment les ressources sont liées les unes aux autres (détectée automatiquement à partir des références aux champs)

Lorsque vous appliquez un RGD, kro enregistre une nouvelle définition de ressource personnalisée (CRD) dans votre cluster. Les équipes d'application peuvent ensuite créer des instances de votre API personnalisée, et kro se charge de créer et de gérer toutes les ressources sous-jacentes.

Pour plus d'informations, consultez la section [ResourceGraphDefinition Présentation](https://kro.run/docs/concepts/rgd/overview/) dans la documentation de kro.

### SimpleSchema format
<a name="_simpleschema_format"></a>

SimpleSchema fournit un moyen simplifié de définir des schémas d'API sans avoir besoin de connaissances d'OpenAPI :

```
schema:
  apiVersion: v1alpha1
  kind: Database
  spec:
    name: string | required=true description="Database name"
    size: string | default="small" enum=small,medium,large
    replicas: integer | default=1 minimum=1 maximum=5
```

SimpleSchema prend en charge `string` `integer``boolean`,, et `number` types avec des contraintes telles que `required``default`,`maximum`,`minimum`/`enum`, et`pattern`.

Pour plus d'informations, consultez [SimpleSchema](https://kro.run/docs/concepts/rgd/schema/)la documentation de kro.

### Expressions CEL
<a name="_cel_expressions"></a>

kro utilise le langage d'expression commun (CEL) pour référencer les valeurs de manière dynamique et ajouter une logique conditionnelle. Les expressions CEL sont encapsulées `${` `}` et peuvent être utilisées de deux manières :

 **Expressions autonomes** - La valeur complète du champ est une expression unique :

```
spec:
  replicas: ${schema.spec.replicaCount}  # Expression returns integer
  labels: ${schema.spec.labelMap}        # Expression returns object
```

Le résultat de l'expression remplace la valeur complète du champ et doit correspondre au type attendu du champ.

 **Modèles de chaînes** : une ou plusieurs expressions incorporées dans une chaîne :

```
metadata:
  name: "${schema.spec.prefix}-${schema.spec.name}"  # Multiple expressions
  annotation: "Created by ${schema.spec.owner}"      # Single expression in string
```

Toutes les expressions des modèles de chaînes doivent renvoyer des chaînes. `string()`À utiliser pour convertir d'autres types :`"replicas-${string(schema.spec.count)}"`.

 **Références de champs** - Accédez aux valeurs des spécifications de l'instance à l'aide `schema.spec` de :

```
template:
  metadata:
    name: ${schema.spec.name}-deployment
    namespace: ${schema.metadata.namespace}  # Can also reference metadata
  spec:
    replicas: ${schema.spec.replicas}
```

 **Accès aux champs facultatif - À** utiliser `?` pour les champs qui n'existent peut-être pas :

```
# For ConfigMaps or Secrets with unknown structure
value: ${configmap.data.?DATABASE_URL}

# For optional status fields
ready: ${deployment.status.?readyReplicas > 0}
```

Si le champ n'existe pas, l'expression est renvoyée `null` au lieu d'échouer.

 **Ressources conditionnelles** - N'incluez les ressources que lorsque les conditions sont remplies :

```
resources:
- id: ingress
  includeWhen:
    - ${schema.spec.enableIngress == true}
  template:
    # ... ingress configuration
```

Le `includeWhen` champ accepte une liste d'expressions booléennes. Toutes les conditions doivent être remplies pour que la ressource soit créée. Actuellement, seuls `includeWhen` les `schema.spec` champs peuvent être référencés.

 **Transformations** - Transformez les valeurs à l'aide d'opérateurs et de fonctions ternaires :

```
template:
  spec:
    resources:
      requests:
        memory: ${schema.spec.size == "small" ? "512Mi" : "2Gi"}

    # String concatenation
    image: ${schema.spec.registry + "/" + schema.spec.imageName}

    # Type conversion
    port: ${string(schema.spec.portNumber)}
```

 **Références entre ressources** : valeurs de référence provenant d'autres ressources :

```
resources:
- id: bucket
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    spec:
      name: ${schema.spec.name}-data

- id: configmap
  template:
    apiVersion: v1
    kind: ConfigMap
    data:
      BUCKET_NAME: ${bucket.spec.name}
      BUCKET_ARN: ${bucket.status.ackResourceMetadata.arn}
```

Lorsque vous référencez une autre ressource dans une expression CEL, cela crée automatiquement une dépendance. kro s'assure que la ressource référencée est créée en premier.

Pour plus d'informations, consultez la section [Expressions CEL](https://kro.run/docs/concepts/rgd/cel-expressions/) dans la documentation de kro.

### Dépendances des ressources
<a name="_resource_dependencies"></a>

kro déduit automatiquement les dépendances à partir des expressions CEL : vous ne spécifiez pas l'ordre, vous décrivez les relations. Lorsqu'une ressource en référence une autre à l'aide d'une expression CEL, kro crée une dépendance et détermine l'ordre de création correct.

```
resources:
- id: bucket
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    spec:
      name: ${schema.spec.name}-data

- id: notification
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: BucketNotification
    spec:
      bucket: ${bucket.spec.name}  # Creates dependency: notification depends on bucket
```

L'expression `${bucket.spec.name}` crée une dépendance. kro crée un graphe acyclique dirigé (DAG) de toutes les ressources et de leurs dépendances, puis calcule un ordre topologique pour la création.

 **Ordre de création** : les ressources sont créées dans l'ordre topologique (les dépendances d'abord).

 **Création parallèle** : les ressources sans dépendances sont créées simultanément.

 **Ordre de suppression** : les ressources sont supprimées dans l'ordre topologique inverse (les personnes dépendantes d'abord).

 **Dépendances circulaires** : non autorisées : kro rejette les dépendances circulaires lors de la ResourceGraphDefinitions validation.

Vous pouvez consulter l'ordre de création calculé :

```
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.topologicalOrder}'
```

Pour plus d'informations, consultez la section [Inférence graphique](https://kro.run/docs/concepts/rgd/dependencies-ordering/) dans la documentation de kro.

## Composer avec ACK
<a name="_composing_with_ack"></a>

kro fonctionne parfaitement avec la capacité EKS permettant à ACK de composer des AWS ressources avec des ressources Kubernetes :

```
resources:
# Create {aws} S3 bucket with ACK
- id: bucket
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    spec:
      name: ${schema.spec.name}-files

# Inject bucket details into Kubernetes ConfigMap
- id: config
  template:
    apiVersion: v1
    kind: ConfigMap
    data:
      BUCKET_NAME: ${bucket.spec.name}
      BUCKET_ARN: ${bucket.status.ackResourceMetadata.arn}

# Use ConfigMap in application deployment
- id: deployment
  template:
    apiVersion: apps/v1
    kind: Deployment
    spec:
      template:
        spec:
          containers:
          - name: app
            envFrom:
            - configMapRef:
                name: ${config.metadata.name}
```

Ce modèle vous permet de créer des AWS ressources, d'extraire leurs détails (ARNs, URLs, points de terminaison) et de les injecter dans la configuration de votre application, le tout géré comme une seule unité.

Pour plus de modèles de composition et des exemples avancés, voir[considérations relatives à Kro pour EKS](kro-considerations.md).

## Étapes suivantes
<a name="_next_steps"></a>
+  [considérations relatives à Kro pour EKS](kro-considerations.md)- Découvrez les modèles spécifiques à EKS, le RBAC et l'intégration avec ACK et Argo CD
+  Documentation [kro - Documentation](https://kro.run/docs/overview) kro complète, y compris les expressions CEL avancées, les modèles de validation et le dépannage

# Configurer les autorisations Kro
<a name="kro-permissions"></a>

Contrairement à ACK et Argo CD, kro ne nécessite pas d'autorisations IAM. kro fonctionne entièrement au sein de votre cluster Kubernetes et n'effectue pas d'appels d'API. AWS Contrôlez l'accès aux ressources Kro à l'aide de la norme Kubernetes RBAC.

## Comment fonctionnent les autorisations avec Kro
<a name="_how_permissions_work_with_kro"></a>

kro utilise deux types de ressources Kubernetes avec des portées différentes :

 **ResourceGraphDefinitions**: ressources étendues au cluster qui définissent la personnalisation. APIs Généralement géré par les équipes de plateforme qui conçoivent et maintiennent les normes organisationnelles.

 **Instances** : ressources personnalisées étendues à l'espace de noms créées à partir de. ResourceGraphDefinitions Peut être créé par les équipes chargées des applications disposant des autorisations RBAC appropriées.

Par défaut, la fonctionnalité Kro dispose des autorisations nécessaires pour gérer ResourceGraphDefinitions ses instances via la politique de saisie d'`AmazonEKSKROPolicy`accès. Cependant, kro a besoin d'autorisations supplémentaires pour créer et gérer les ressources Kubernetes sous-jacentes définies dans votre répertoire ResourceGraphDefinitions (telles que les déploiements, les services ou les ressources ACK). Vous devez accorder ces autorisations par le biais de politiques d'entrée d'accès ou de Kubernetes RBAC. Pour plus de détails sur l'octroi de ces autorisations, voir [Autorisations de ressources arbitraires kro](capabilities-security.md#kro-resource-permissions).

## Autorisations de l'équipe de plateforme
<a name="_platform_team_permissions"></a>

Les équipes de la plateforme ont besoin d'autorisations pour créer et gérer ResourceGraphDefinitions.

 **Exemple ClusterRole pour les équipes de plateforme** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kro-platform-admin
rules:
- apiGroups: ["kro.run"]
  resources: ["resourcegraphdefinitions"]
  verbs: ["*"]
```

 **Associez les membres de l'équipe de la plateforme** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: platform-team-kro-admin
subjects:
- kind: Group
  name: platform-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: kro-platform-admin
  apiGroup: rbac.authorization.k8s.io
```

## Autorisations de l'équipe d'application
<a name="_application_team_permissions"></a>

Les équipes d'application ont besoin d'autorisations pour créer des instances de ressources personnalisées dans leurs espaces de noms.

 **Exemple de rôle pour les équipes de candidature** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: kro-app-developer
  namespace: my-app
rules:
- apiGroups: ["kro.run"]
  resources: ["webapps", "databases"]
  verbs: ["create", "get", "list", "update", "delete", "patch"]
```

 **Associez les membres de l'équipe de candidature** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-team-kro-developer
  namespace: my-app
subjects:
- kind: Group
  name: app-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: kro-app-developer
  apiGroup: rbac.authorization.k8s.io
```

**Note**  
Le groupe d'API du rôle (`kro.run`dans cet exemple) doit correspondre à celui `apiVersion` défini dans votre ResourceGraphDefinition schéma.

## Accès en lecture seule
<a name="_read_only_access"></a>

Accordez un accès en lecture seule à la vue ResourceGraphDefinitions et aux instances sans autorisation de modification.

 **Lecture seule ClusterRole** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kro-viewer
rules:
- apiGroups: ["kro.run"]
  resources: ["resourcegraphdefinitions"]
  verbs: ["get", "list", "watch"]
```

 **Rôle en lecture seule pour les instances** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: kro-instance-viewer
  namespace: my-app
rules:
- apiGroups: ["kro.run"]
  resources: ["webapps", "databases"]
  verbs: ["get", "list", "watch"]
```

## Accès à plusieurs espaces de noms
<a name="_multi_namespace_access"></a>

Accordez aux équipes d'application l'accès à plusieurs espaces de noms à l'aide de ClusterRoles with RoleBindings.

 **ClusterRole pour l'accès à plusieurs espaces de noms :**

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kro-multi-namespace-developer
rules:
- apiGroups: ["kro.run"]
  resources: ["webapps"]
  verbs: ["create", "get", "list", "update", "delete"]
```

 **Liez à des espaces de noms spécifiques :**

```
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-team-dev-access
  namespace: development
subjects:
- kind: Group
  name: app-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: kro-multi-namespace-developer
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-team-staging-access
  namespace: staging
subjects:
- kind: Group
  name: app-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: kro-multi-namespace-developer
  apiGroup: rbac.authorization.k8s.io
```

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

 **Principe du moindre privilège** : accordez uniquement les autorisations minimales nécessaires pour les responsabilités de chaque équipe.

 **Utilisez des groupes plutôt que des utilisateurs individuels** : liez les rôles à des groupes plutôt qu'à des utilisateurs individuels pour faciliter la gestion.

 **Problèmes liés à la plateforme et à l'application distincts** : les équipes chargées de la plateforme gèrent ResourceGraphDefinitions, les équipes chargées des applications gèrent les instances.

 **Isolation des espaces de noms** : utilisez des espaces de noms pour isoler différentes équipes ou environnements, le RBAC contrôlant l'accès à chaque espace de noms.

 Accès **en lecture seule pour l'audit : fournissez un accès** en lecture seule aux équipes de sécurité et de conformité à des fins d'audit.

## Étapes suivantes
<a name="_next_steps"></a>
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et la composition des ressources
+  [concepts kro](kro-concepts.md)- Comprendre SimpleSchema les expressions CEL et les modèles de composition
+  [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

# considérations relatives à Kro pour EKS
<a name="kro-considerations"></a>

Cette rubrique aborde les considérations importantes relatives à l'utilisation de la fonctionnalité EKS pour kro, notamment le moment d'utiliser la composition des ressources, les modèles RBAC et l'intégration avec d'autres fonctionnalités EKS.

## Quand utiliser Kro
<a name="_when_to_use_kro"></a>

kro est conçu pour créer des modèles d'infrastructure réutilisables et personnalisés APIs qui simplifient la gestion complexe des ressources.

 **Utilisez Kro lorsque vous devez** :
+ Créez des plateformes en libre-service simplifiées APIs pour les équipes d'application
+ Standardisez les modèles d'infrastructure entre les équipes (base de données, sauvegarde et surveillance)
+ Gérez les dépendances des ressources et transmettez des valeurs entre les ressources
+ Créez des abstractions personnalisées qui masquent la complexité de l'implémentation
+ Composez plusieurs ressources ACK en blocs de construction de niveau supérieur
+ Activez GitOps les flux de travail pour les infrastructures complexes

 **N'utilisez pas kro lorsque** :
+ Gestion de ressources simples et autonomes (utilisez directement les ressources ACK ou Kubernetes)
+ Vous avez besoin d'une logique d'exécution dynamique (kro est déclaratif, pas impératif)
+ Les ressources n'ont pas de dépendances ni de configuration partagée

kro excelle dans la création de « voies pavées », des modèles réutilisables et opiniâtres qui permettent aux équipes de déployer facilement et correctement des infrastructures complexes.

## Modèles RBAC
<a name="_rbac_patterns"></a>

kro permet de séparer les préoccupations entre les équipes de plateforme qui créent ResourceGraphDefinitions et les équipes d'application qui créent les instances.

### Responsabilités de l'équipe de plateforme
<a name="_platform_team_responsibilities"></a>

Les équipes de la plateforme créent et gèrent ResourceGraphDefinitions (RGDs) qui définissent la personnalisation APIs.

 **Autorisations nécessaires** :
+ Création, mise à jour, suppression ResourceGraphDefinitions
+ Gérer les types de ressources sous-jacents (déploiements, services, ressources ACK)
+ Accès à tous les espaces de noms où RGDs seront utilisés

 **Exemple ClusterRole pour l'équipe de la plateforme** :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: platform-kro-admin
rules:
- apiGroups: ["kro.run"]
  resources: ["resourcegraphdefinitions"]
  verbs: ["*"]
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]
```

Pour une configuration RBAC détaillée, voir[Configurer les autorisations Kro](kro-permissions.md).

### Responsabilités de l'équipe de candidature
<a name="_application_team_responsibilities"></a>

Les équipes d'application créent des instances de ressources personnalisées définies par RGDs sans avoir à comprendre la complexité sous-jacente.

 **Autorisations nécessaires** :
+ Création, mise à jour, suppression d'instances de ressources personnalisées
+ Accès en lecture à leur espace de noms
+ Aucun accès aux ressources sous-jacentes ou RGDs

 **Avantages** :
+ Les équipes utilisent des outils simples et de haut niveau APIs
+ Les équipes de plateforme contrôlent les détails de mise en œuvre
+ Réduction du risque de mauvaise configuration
+ Intégration plus rapide pour les nouveaux membres de l'équipe

## Intégration avec d'autres fonctionnalités d'EKS
<a name="_integration_with_other_eks_capabilities"></a>

### Composer des ressources ACK
<a name="_composing_ack_resources"></a>

kro est particulièrement puissant lorsqu'il est associé à ACK pour créer des modèles d'infrastructure.

 **Schémas courants** :
+  **Application avec stockage** : compartiment S3 \$1 file d'attente SQS \$1 configuration des notifications
+  **Pile de base** de données : instance RDS \$1 groupe de paramètres \$1 groupe de sécurité \$1 secret Secrets Manager
+  **Mise en réseau** : VPC \$1 sous-réseaux \$1 tables de routage \$1 groupes de sécurité \$1 passerelles NAT
+  **Calcul avec stockage** : EC2 instance \$1 volumes EBS \$1 profil d'instance IAM

kro gère l'ordre des dépendances, transmet les valeurs entre les ressources (chaînes similaires ARNs et chaînes de connexion) et gère le cycle de vie complet en tant qu'unité unique.

Pour des exemples de composition de ressources ACK, voir[Concepts d'ACK](ack-concepts.md).

### GitOps avec Argo CD
<a name="_gitops_with_argo_cd"></a>

Utilisez le CD EKS Capability for Argo pour déployer à la fois des instances RGDs et des instances à partir de référentiels Git.

 **Organisation du référentiel** :
+  **Dépôt de plateforme** : contenus ResourceGraphDefinitions gérés par l'équipe de la plateforme
+  **Dépôts d'applications** : contiennent des instances de ressources personnalisées gérées par les équipes chargées des applications
+  **Dépôt partagé : contient à** la fois des instances RGDs et des instances pour les petites organisations

 **Considérations :**
+ Déployez RGDs avant les instances (les ondes de synchronisation Argo CD peuvent vous aider)
+ Utilisez des projets Argo CD distincts pour les équipes chargées des plateformes et des applications
+ L'équipe de la plateforme contrôle l'accès au référentiel RGD
+ Les équipes chargées des applications ont un accès en lecture seule aux définitions RGD

Pour en savoir plus sur Argo CD, voir[Travailler avec Argo CD](working-with-argocd.md).

## Organiser ResourceGraphDefinitions
<a name="_organizing_resourcegraphdefinitions"></a>

Organisez RGDs en fonction de l'objectif, de la complexité et de la propriété.

 **Par objectif** :
+  **Infrastructure** : piles de bases de données, mise en réseau, stockage
+  **Application** : applications Web APIs, tâches par lots
+  **Plateforme** : services partagés, surveillance, journalisation

 **Par complexité** :
+  **Simple** : 2 à 3 ressources avec un minimum de dépendances
+  **Modéré** : 5 à 10 ressources avec certaines dépendances
+  **Complexe** : plus de 10 ressources avec des dépendances complexes

 **Conventions de dénomination** :
+ Utilisez des noms descriptifs :`webapp-with-database`, `s3-notification-queue` 
+ Incluez la version dans le nom pour les modifications majeures : `webapp-v2` 
+ Utilisez des préfixes cohérents pour les éléments suivants RGDs :`platform- `, `app-` 

 **Stratégie d'espace de noms** :
+ RGDs sont limités à la taille d'un cluster (et non à un espace de noms)
+ Les instances sont dotées d'un espace de noms
+ Utilisez des sélecteurs d'espaces de noms RGDs pour contrôler où les instances peuvent être créées

## Versionnage et mises à jour
<a name="_versioning_and_updates"></a>

Planifiez l'évolution du RGD et la migration des instances.

 Mises à **jour du RGD** :
+  **Changements permanents** : mettez à jour le RGD en place (ajoutez des champs facultatifs, de nouvelles ressources avec IncludeWhen)
+  **Changements radicaux** : créer un nouveau RGD avec un nom différent (webapp-v2)
+  **Obsolète** : Marquez les anciens RGDs avec des annotations, communiquez le calendrier de migration

 **Migration d'instance** :
+ Créez de nouvelles instances avec un RGD mis à jour
+ Validez que les nouvelles instances fonctionnent correctement
+ Supprimer les anciennes instances
+ kro gère automatiquement les mises à jour des ressources sous-jacentes

 **Bonnes pratiques** :
+ Testez d'abord les modifications du RGD dans des environnements hors production
+ Utiliser le versionnement sémantique dans les noms RGD pour les modifications majeures
+ Documenter les modifications majeures et les voies de migration
+ Fournir des exemples de migration pour les équipes chargées des applications

## Validation et tests
<a name="_validation_and_testing"></a>

Validez RGDs avant le déploiement en production.

 **Stratégies de validation** :
+  **Validation du schéma** : kro valide automatiquement la structure RGD
+  Instances **à sec : créez des instances** de test dans les espaces de noms de développement
+  **Tests d'intégration** : vérifier que les ressources composées fonctionnent ensemble
+  **Application des politiques** : utilisez des contrôleurs d'admission pour faire appliquer les normes organisationnelles

 **Problèmes courants à tester** :
+ Dépendances des ressources et classement
+ Transfert de valeur entre les ressources (expressions CEL)
+ Inclusion conditionnelle de ressources (IncludeWhen)
+ Propagation du statut à partir des ressources sous-jacentes
+ Autorisations RBAC pour la création d'instances

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

Pour des informations détaillées sur l'utilisation de kro :
+  [Débuter avec kro](https://kro.run/docs/guides/getting-started) - Création ResourceGraphDefinitions
+  [Expressions CEL](https://kro.run/docs/concepts/cel) - Écrire des expressions CEL
+  [Kro Guides](https://kro.run/docs/guides/) - Modèles de composition avancés
+  [Dépannage](https://kro.run/docs/troubleshooting) - Dépannage et débogage

## Étapes suivantes
<a name="_next_steps"></a>
+  [Configurer les autorisations Kro](kro-permissions.md)- Configurer le RBAC pour les équipes chargées des plateformes et des applications
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et le cycle de vie des ressources
+  [Résoudre les problèmes liés aux fonctionnalités Kro](kro-troubleshooting.md)- Résoudre les problèmes liés à KRO
+  [Concepts d'ACK](ack-concepts.md)- En savoir plus sur les ressources d'ACK pour la composition
+  [Travailler avec Argo CD](working-with-argocd.md)- Déploiement RGDs et instances avec GitOps

# Résoudre les problèmes liés aux fonctionnalités Kro
<a name="kro-troubleshooting"></a>

Cette rubrique fournit des conseils de dépannage relatifs à la fonctionnalité EKS pour kro, notamment les vérifications de l'état des fonctionnalités, les autorisations RBAC, les erreurs d'expression CEL et les problèmes de composition des ressources.

**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 contrôleur ni à l'espace de `kro-system` noms. Le dépannage se concentre sur l'état des capacités, la configuration RBAC et l'état des ressources.

## La fonctionnalité est ACTIVE mais ResourceGraphDefinitions ne fonctionne pas
<a name="_capability_is_active_but_resourcegraphdefinitions_arent_working"></a>

Si votre capacité Kro affiche un `ACTIVE` état mais ResourceGraphDefinitions ne crée pas de ressources sous-jacentes, vérifiez l'état de la fonctionnalité, les autorisations RBAC et l'état des ressources.

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

# Look for issues in the health section
```

 **Causes courantes :**
+  **Permissions RBAC manquantes** : kro n'a pas les autorisations nécessaires pour créer des ressources Kubernetes sous-jacentes
+  **Expressions CEL non valides** : erreurs de syntaxe dans ResourceGraphDefinition
+  **Dépendances des ressources : les** ressources dépendantes ne sont pas prêtes
+  **Validation du schéma** : l'instance ne répond pas aux exigences du schéma RGD

 **Vérifiez les autorisations RBAC** :

```
# Check if capability has cluster admin policy
kubectl get accessentry -A | grep kro
```

Si la fonctionnalité ne dispose pas des autorisations requises, associez-la à l'`AmazonEKSClusterAdminPolicy`entrée d'accès de la fonctionnalité kro ou créez des politiques RBAC plus restrictives pour une utilisation en production. Consultez [Configurer les autorisations Kro](kro-permissions.md) pour plus de détails.

 **Vérifier ResourceGraphDefinition le statut** :

```
# List all RGDs
kubectl get resourcegraphdefinition

# Describe specific RGD
kubectl describe resourcegraphdefinition my-rgd

# Check for validation errors
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'
```

ResourceGraphDefinitions ont trois conditions de statut clés :
+  `ResourceGraphAccepted`- Si le RGD a réussi la validation (syntaxe CEL, vérification de type, existence du champ)
+  `KindReady`- Si le CRD de votre API personnalisée a été généré et enregistré
+  `ControllerReady`- Si kro surveille activement les instances de votre API personnalisée

Si tel `ResourceGraphAccepted` est le cas`False`, vérifiez que le message de condition ne contient pas d'erreurs de validation, telles que des champs inconnus, des incohérences de type ou des dépendances circulaires.

## Instances créées mais les ressources sous-jacentes n'apparaissent pas
<a name="_instances_created_but_underlying_resources_not_appearing"></a>

Si des instances de ressources personnalisées existent mais que les ressources Kubernetes sous-jacentes (déploiements, services ConfigMaps) ne sont pas créées, vérifiez que kro dispose des autorisations nécessaires et vérifiez qu'il n'y a pas d'erreurs de composition.

 **Vérifiez l'état de l'instance** :

```
# Describe the instance (replace with your custom resource kind and name)
kubectl describe custom-kind
         my-instance

# View instance events
kubectl get events --field-selector involvedObject.name=my-instance

# Check instance status conditions
kubectl get custom-kind
         my-instance -o jsonpath='{.status.conditions}'

# Check instance state
kubectl get custom-kind
         my-instance -o jsonpath='{.status.state}'
```

Les instances possèdent un `state` champ indiquant un statut élevé :
+  `ACTIVE`- L'instance est en cours d'exécution avec succès
+  `IN_PROGRESS`- L'instance est en cours de traitement ou de réconciliation
+  `FAILED`- L'instance n'a pas pu être réconciliée
+  `DELETING`- L'instance est en cours de suppression
+  `ERROR`- Une erreur s'est produite lors du traitement

Les instances sont également soumises à quatre conditions de statut :
+  `InstanceManaged`- Les finaliseurs et les étiquettes sont correctement définis
+  `GraphResolved`- Graphe d'exécution créé et ressources résolues
+  `ResourcesReady`- Toutes les ressources créées et prêtes
+  `Ready`- Santé globale de l'instance (elle ne l'est que `True` lorsque toutes les sous-conditions le sont`True`)

Concentrez-vous sur la `Ready` condition pour déterminer l'état de santé de l'instance. Si tel `Ready` est le cas`False`, vérifiez les sous-conditions pour identifier la phase qui a échoué.

 **Vérifiez les autorisations RBAC** :

La fonctionnalité Kro nécessite des autorisations pour créer les ressources Kubernetes sous-jacentes définies dans votre. ResourceGraphDefinitions

```
# Check if the capability has the AmazonEKSClusterAdminPolicy
kubectl get accessentry -A | grep kro
```

Si des autorisations sont manquantes, `AmazonEKSClusterAdminPolicy` associez-les à l'entrée d'accès de la fonctionnalité kro ou créez des politiques RBAC plus restrictives pour une utilisation en production. Consultez [Configurer les autorisations Kro](kro-permissions.md) pour plus de détails.

## Erreurs d'expression CEL
<a name="_cel_expression_errors"></a>

Les erreurs d'expression CEL sont détectées au moment de ResourceGraphDefinition la création, et non lors de la création des instances. kro valide toute la syntaxe des CEL, vérifie le type des expressions par rapport aux schémas Kubernetes et vérifie l'existence des champs lorsque vous créez le RGD.

 **Erreurs de validation CEL courantes** :
+  Référence de **champ non définie : référence** à un champ qui n'existe pas dans le schéma ou dans la ressource
+  **Incompatibilité de type** : l'expression renvoie un type incorrect (par exemple, une chaîne où un entier est attendu)
+  **Syntaxe non valide** : crochets, guillemets ou opérateurs manquants dans l'expression CEL
+  **Type de ressource inconnu** : Référencement d'un CRD qui n'existe pas dans le cluster

 **Vérifiez l'état de validation du RGD** :

```
# Check if RGD was accepted
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}'

# View detailed validation errors
kubectl describe resourcegraphdefinition my-rgd
```

Si tel `ResourceGraphAccepted` est le cas`False`, le message de condition contient l'erreur de validation.

 **Exemples d'expressions CEL valides** :

```
# Reference schema field
${schema.spec.appName}

# Conditional expression
${schema.spec.replicas > 1}

# String template (expressions must return strings)
name: "${schema.spec.appName}-service"

# Standalone expression (can be any type)
replicas: ${schema.spec.replicaCount}

# Resource reference
${deployment.status.availableReplicas}

# Optional field access (returns null if field doesn't exist)
${configmap.data.?DATABASE_URL}
```

## Les dépendances des ressources ne sont pas résolues
<a name="_resource_dependencies_not_resolving"></a>

kro déduit automatiquement les dépendances à partir des expressions CEL et crée les ressources dans le bon ordre. Si les ressources ne sont pas créées comme prévu, vérifiez l'ordre des dépendances et l'état de préparation des ressources.

 **Afficher l'ordre de création calculé** :

```
# See the order kro will create resources
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.topologicalOrder}'
```

Cela montre l'ordre calculé en fonction des références d'expression CEL entre les ressources.

 **Vérifiez l'état de préparation des ressources** :

```
# View instance status to see which resources are ready
kubectl get custom-kind
         my-instance -o jsonpath='{.status}'

# Check specific resource status
kubectl get deployment my-deployment -o jsonpath='{.status.conditions}'
```

 **Vérifiez les conditions ReadyWhen (si elles sont utilisées)** :

Le champ `readyWhen` est facultatif. Si elles ne sont pas spécifiées, les ressources sont considérées comme prêtes immédiatement après leur création. Si vous avez défini `readyWhen` des conditions, vérifiez qu'elles vérifient correctement l'état de préparation des ressources :

```
resources:
  - id: deployment
    readyWhen:
      - ${deployment.status.availableReplicas == deployment.spec.replicas}
```

 **Vérifiez les événements liés aux ressources** :

```
# View events for the underlying resources
kubectl get events -n namespace --sort-by='.lastTimestamp'
```

## Défaillances de validation du schéma
<a name="_schema_validation_failures"></a>

Si les instances ne sont pas créées en raison d'erreurs de validation du schéma, vérifiez que l'instance répond aux exigences du schéma RGD.

 **Vérifiez les erreurs de validation** :

```
# Attempt to create instance and view error
kubectl apply -f instance.yaml

# View existing instance validation status
kubectl describe custom-kind
         my-instance | grep -A 5 "Validation"
```

 **Problèmes de validation courants** :
+  **Champs obligatoires manquants** : l'instance ne fournit pas tous les champs de schéma obligatoires
+  **Incompatibilité de type** : fourniture d'une chaîne où un entier est attendu
+  **Valeur d'énumération non valide** : utilisation d'une valeur ne figurant pas dans la liste autorisée
+  **Incompatibilité du modèle** : la chaîne ne correspond pas au modèle regex

 Passez en **revue le schéma RGD** :

```
# View the schema definition
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.spec.schema}'
```

Assurez-vous que votre instance fournit tous les champs obligatoires avec les types corrects.

## Étapes suivantes
<a name="_next_steps"></a>
+  [considérations relatives à Kro pour EKS](kro-considerations.md)- considérations clés et meilleures pratiques
+  [Configurer les autorisations Kro](kro-permissions.md)- Configurer le RBAC pour les équipes chargées des plateformes et des applications
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et le cycle de vie des ressources
+  [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 entre la capacité EKS pour kro et celle pour kro autogérée
<a name="kro-comparison"></a>

L'EKS Capability for kro fournit les mêmes fonctionnalités que le kro autogéré, mais avec des avantages opérationnels significatifs. 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).

La capacité EKS pour kro utilise les mêmes contrôleurs kro en amont et est entièrement compatible avec le kro en amont. ResourceGraphDefinitions, les expressions CEL et la composition des ressources fonctionnent de manière identique. Pour une documentation complète et des exemples de kro, consultez la documentation de [kro](https://kro.run/docs/overview).

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

Vous pouvez passer d'une solution kro autogérée à une fonctionnalité gérée sans aucune interruption de service.

**Important**  
Avant de migrer, assurez-vous que votre contrôleur kro autogéré exécute la même version que la capacité EKS pour kro. Vérifiez la version des fonctionnalités dans la console EKS ou à l'aide de `aws eks describe-capability` celle-ci, puis mettez à niveau votre installation autogérée en conséquence. Cela permet d'éviter les problèmes de compatibilité lors de la migration.

1. Mettez à jour votre contrôleur Kro autogéré pour l'utiliser `kube-system` pour les baux électoraux des dirigeants :

   ```
   helm upgrade --install kro \
     oci://ghcr.io/awslabs/kro/kro-chart \
     --namespace kro \
     --set leaderElection.namespace=kube-system
   ```

   Cela déplace le bail du contrôleur vers`kube-system`, ce qui permet à la capacité gérée de se coordonner avec celui-ci.

1. Créez la fonctionnalité Kro sur votre cluster (voir[Création d'une fonctionnalité Kro](create-kro-capability.md))

1. La fonctionnalité gérée reconnaît les instances existantes ResourceGraphDefinitions et prend en charge la réconciliation

1. Diminuez ou supprimez progressivement les déploiements KRO autogérés :

   ```
   helm uninstall kro --namespace kro
   ```

Cette approche permet aux deux contrôleurs de coexister en toute sécurité pendant la migration. La fonctionnalité gérée adopte automatiquement ResourceGraphDefinitions les instances précédemment gérées par Kro autogéré, garantissant ainsi un rapprochement continu sans conflits.

## Étapes suivantes
<a name="_next_steps"></a>
+  [Création d'une fonctionnalité Kro](create-kro-capability.md)- Création d'une ressource de capacité Kro
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et la composition des ressources

# Dépannage des fonctionnalités EKS
<a name="capabilities-troubleshooting"></a>

Cette rubrique fournit des conseils de dépannage généraux pour les fonctionnalités EKS, notamment des vérifications de l'état des fonctionnalités, des problèmes courants et des liens vers des solutions de dépannage spécifiques aux fonctionnalités.

**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 ni aux espaces de noms des contrôleurs. Le dépannage se concentre sur l'état des fonctionnalités, l'état des ressources et la configuration.

## Approche générale du dépannage
<a name="_general_troubleshooting_approach"></a>

Pour résoudre les problèmes liés aux fonctionnalités EKS, suivez cette approche générale :

1.  **Vérifier l'état des capacités** : `aws eks describe-capability` à utiliser pour consulter l'état des capacités et les problèmes de santé

1.  **Vérifier le statut des ressources** : vérifiez les ressources Kubernetes (CRDs) que vous avez créées pour connaître les conditions de statut et les événements

1.  **Vérifiez les autorisations IAM** : assurez-vous que le rôle de capacité dispose des autorisations nécessaires

1.  **Vérifier la configuration** : vérifier que la configuration spécifique à la capacité est correcte

## Vérifier l'état des capacités
<a name="_check_capability_health"></a>

Toutes les fonctionnalités EKS fournissent des informations sur l'état de santé via la console EKS et l'`describe-capability`API.

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

L'onglet Fonctionnalités indique :
+ Nom et type de capacité
+ État actuel
+ Problèmes de santé, avec description

 ** AWS CLI** :

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

La réponse inclut :
+  **statut** : État actuel des capacités (`CREATING``ACTIVE`,`UPDATING`,`DELETING`,`CREATE_FAILED`,`UPDATE_FAILED`)
+  **santé** : informations relatives à l'état de santé, y compris les éventuels problèmes détectés par la fonctionnalité

## Statuts de capacité communs
<a name="_common_capability_statuses"></a>

 **CRÉATION** : La capacité est en cours de configuration.

 **ACTIF** : La fonctionnalité fonctionne et est prête à être utilisée. Si les ressources ne fonctionnent pas comme prévu, vérifiez l'état des ressources et les autorisations IAM.

 **MISE À JOUR** : Les modifications de configuration sont en cours d'application. Attendez que le statut revienne à`ACTIVE`.

 **CREATE\$1FAILED** ou **UPDATE\$1FAILED : le programme d'installation ou de mise à jour a** rencontré une erreur. Consultez la section santé pour plus de détails. Causes courantes :
+ Politique de confiance des rôles IAM incorrecte ou manquante
+ Le rôle IAM n'existe pas ou n'est pas accessible
+ Problèmes d'accès au cluster
+ Paramètres de configuration non valides

## Vérifier l'état des ressources Kubernetes
<a name="_verify_kubernetes_resource_status"></a>

Les fonctionnalités EKS créent et gèrent des définitions de ressources personnalisées Kubernetes (CRDs) dans votre cluster. Lors du dépannage, vérifiez l'état des ressources que vous avez créées :

```
# List resources of a specific type
kubectl get resource-kind -A

# Describe a specific resource to see conditions and events
kubectl describe resource-kind
         resource-name -n namespace

# View resource status conditions
kubectl get resource-kind
         resource-name -n namespace -o jsonpath='{.status.conditions}'

# View events related to the resource
kubectl get events --field-selector involvedObject.name=resource-name -n namespace
```

Les conditions d'état des ressources fournissent des informations sur :
+ Si la ressource est prête
+ Toute erreur rencontrée
+ État actuel du rapprochement

## Vérifiez les autorisations IAM et l'accès au cluster
<a name="_review_iam_permissions_and_cluster_access"></a>

De nombreux problèmes de capacité sont dus à des problèmes d'autorisation IAM ou à une configuration d'accès au cluster manquante. Vérifiez à la fois les autorisations du rôle de capacité et les entrées d'accès au cluster.

### Vérifier les autorisations des rôles IAM
<a name="_check_iam_role_permissions"></a>

Vérifiez que le rôle de capacité dispose des autorisations nécessaires :

```
# List attached managed policies
aws iam list-attached-role-policies --role-name my-capability-role

# List inline policies
aws iam list-role-policies --role-name my-capability-role

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

# View the role's trust policy
aws iam get-role --role-name my-capability-role --query 'Role.AssumeRolePolicyDocument'
```

La politique de confiance doit permettre au principal du `capabilities.eks.amazonaws.com` service :

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

### Vérifiez les entrées d'accès et les politiques d'accès d'EKS
<a name="_check_eks_access_entries_and_access_policies"></a>

Toutes les fonctionnalités nécessitent des entrées d'accès et des politiques d'accès EKS appropriées sur le cluster sur lequel elles fonctionnent.

 **Vérifiez que l'entrée d'accès existe** :

```
aws eks list-access-entries \
  --cluster-name my-cluster \
  --region region-code
```

Recherchez l'ARN du rôle de capacité dans la liste. Si elle est absente, la fonctionnalité ne peut pas accéder au cluster.

 **Vérifiez les politiques d'accès jointes à l'entrée** :

```
aws eks list-associated-access-policies \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:role/my-capability-role \
  --region region-code
```

Toutes les fonctionnalités nécessitent des politiques d'accès appropriées :
+  **ACK** : nécessite des autorisations pour créer et gérer des ressources Kubernetes
+  **kro** : nécessite des autorisations pour créer et gérer des ressources Kubernetes
+  **Argo CD** : nécessite des autorisations pour créer et gérer des applications, et nécessite des entrées d'accès sur les clusters cibles distants pour les déploiements multi-clusters

 **Pour les déploiements multi-clusters Argo CD** :

En cas de déploiement sur des clusters distants, vérifiez que le rôle de capacité possède une entrée d'accès sur chaque cluster cible :

```
# Check Access Entry on target cluster
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::111122223333:role/argocd-capability-role \
  --region region-code
```

Si l'entrée d'accès est absente sur un cluster cible, Argo CD ne peut pas y déployer d'applications. Voir [Enregistrer les clusters cibles](argocd-register-clusters.md) pour les détails de configuration.

## Résolution des problèmes spécifiques aux capacités
<a name="_capability_specific_troubleshooting"></a>

Pour obtenir des conseils de dépannage détaillés spécifiques à chaque type de fonctionnalité :
+  [Résoudre les problèmes liés aux fonctionnalités ACK](ack-troubleshooting.md)- Résoudre les problèmes liés à la création de ressources ACK, aux autorisations IAM et à l'accès entre comptes
+  [Résoudre les problèmes liés aux fonctionnalités d'Argo CD](argocd-troubleshooting.md)- Résoudre les problèmes de synchronisation des applications, d'authentification des référentiels et de déploiements multiclusters
+  [Résoudre les problèmes liés aux fonctionnalités Kro](kro-troubleshooting.md)- Résolution des problèmes ResourceGraphDefinitions, expressions CEL et autorisations RBAC

## Problèmes courants liés à toutes les fonctionnalités
<a name="_common_issues_across_all_capabilities"></a>

### Capacité bloquée dans l'état CREATING
<a name="_capability_stuck_in_creating_state"></a>

Si une capacité reste `CREATING` active plus longtemps que prévu :

1. Vérifiez l'état des fonctionnalités pour détecter des problèmes spécifiques dans la console (**Observabilité** > **Surveiller le cluster** > onglet **Fonctionnalités**) ou à l'aide de la AWS CLI :

   ```
   aws eks describe-capability \
     --region region-code \
     --cluster-name my-cluster \
     --capability-name my-capability-name \
     --query 'capability.health'
   ```

1. Vérifiez que le rôle IAM existe et que la politique de confiance est correcte

1. Assurez-vous que votre cluster est accessible et sain

1. Vérifiez s'il existe des problèmes au niveau du cluster susceptibles d'empêcher la configuration des fonctionnalités

### Ressources non créées ou mises à jour
<a name="_resources_not_being_created_or_updated"></a>

Si la fonctionnalité existe `ACTIVE` mais que les ressources ne sont pas créées ou mises à jour :

1. Vérifiez l'état de la ressource pour détecter les conditions d'erreur

1. Vérifiez les autorisations IAM pour les AWS services (ACK) ou les référentiels spécifiques (Argo CD)

1. Vérifiez les autorisations RBAC pour créer des ressources sous-jacentes (kro)

1. Vérifiez les spécifications des ressources pour détecter les erreurs de validation

### L'état des capacités montre des problèmes
<a name="_capability_health_shows_issues"></a>

Il `describe-capability` présente des problèmes de santé :

1. Lisez attentivement les descriptions du problème : elles indiquent souvent le problème spécifique

1. Corriger la cause première (autorisations IAM, erreurs de configuration, etc.)

1. La fonctionnalité sera automatiquement rétablie une fois le problème résolu

## Étapes suivantes
<a name="_next_steps"></a>
+  [Utilisation des ressources en matière de capacités](working-with-capabilities.md)- Gérer les ressources en matière de capacités
+  [Résoudre les problèmes liés aux fonctionnalités ACK](ack-troubleshooting.md)- Dépannage spécifique à ACK
+  [Résoudre les problèmes liés aux fonctionnalités d'Argo CD](argocd-troubleshooting.md)- Résolution des problèmes spécifiques à Argo CD
+  [Résoudre les problèmes liés aux fonctionnalités Kro](kro-troubleshooting.md)- résolution des problèmes spécifiques à Kro
+  [Considérations relatives à la sécurité relatives aux fonctionnalités EKS](capabilities-security.md)- Meilleures pratiques en matière de sécurité en matière de fonctionnalités