

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.

# Qu'est-ce que Eksctl ?
<a name="what-is-eksctl"></a>

eksctl est un utilitaire en ligne de commande qui automatise et simplifie le processus de création, de gestion et d'exploitation des clusters Amazon Elastic Kubernetes Service (Amazon EKS). Écrit en Go, eksctl fournit une syntaxe déclarative via des configurations YAML et des commandes CLI pour gérer les opérations complexes du cluster EKS qui nécessiteraient autrement plusieurs étapes manuelles dans les différents services AWS.

eksctl est particulièrement utile pour les DevOps ingénieurs, les équipes de plateforme et les administrateurs Kubernetes qui doivent déployer et gérer de manière cohérente des clusters EKS à grande échelle. Il est particulièrement utile pour les entreprises qui passent de Kubernetes autogéré à EKS, ou pour celles qui mettent en œuvre des pratiques d'infrastructure en tant que code (IaC), car il peut être intégré aux pipelines et aux flux de travail d'automatisation existants CI/CD . L'outil élimine de nombreuses interactions complexes entre les services AWS nécessaires à la configuration du cluster EKS, telles que la configuration VPC, la création de rôles IAM et la gestion des groupes de sécurité.

Les principales fonctionnalités d'eksctl incluent la possibilité de créer des clusters EKS entièrement fonctionnels à l'aide d'une seule commande, la prise en charge de configurations réseau personnalisées, la gestion automatisée des groupes de nœuds et l'intégration des GitOps flux de travail. L'outil gère les mises à niveau des clusters, adapte les groupes de nœuds et gère la gestion des modules complémentaires selon une approche déclarative. eksctl fournit également des fonctionnalités avancées telles que la configuration du profil Fargate, la personnalisation des groupes de nœuds gérés et l'intégration d'instances ponctuelles, tout en maintenant la compatibilité avec les autres outils et services AWS grâce à l'intégration native du SDK AWS.

## Caractéristiques
<a name="_features"></a>

Les fonctionnalités actuellement mises en œuvre sont les suivantes :
+ Créer, obtenir, répertorier et supprimer des clusters
+ Création, vidange et suppression de groupes de nœuds
+ Redimensionner un groupe de nœuds
+ Mettre à jour un cluster 
+ Utiliser personnalisé AMIs
+ Configuration de la mise en réseau VPC
+ Configuration de l'accès aux points de terminaison de l'API
+ Support pour les groupes de nœuds GPU
+ Instances ponctuelles et instances mixtes
+ Gestion IAM et politiques complémentaires
+ Répertorier les piles Cloudformation du cluster
+ Installer coredns
+ Écrire un fichier kubeconfig pour un cluster

# FAQ Eksctl
<a name="faq"></a>

## Général
<a name="_general"></a>

 **Puis-je utiliser `eksctl` pour gérer des clusters qui n'ont pas été créés par `eksctl` ?** 

Oui \$1 À partir de la version, `0.40.0` vous `eksctl` pouvez exécuter sur n'importe quel cluster, qu'il ait été créé par `eksctl` ou non. Pour de plus amples informations, veuillez consulter [Clusters non créés par eksctl](unowned-clusters.md).

## Groupes de nœuds
<a name="nodegroup-faq"></a>

 **Comment puis-je modifier le type d'instance de mon groupe de nœuds ?** 

Du point de vue de`eksctl`, les groupes de nœuds sont immuables. Cela signifie qu'une fois créé, la seule chose que `eksctl` vous pouvez faire est de redimensionner le groupe de nœuds vers le haut ou vers le bas.

Pour modifier le type d'instance, créez un nouveau groupe de nœuds avec le type d'instance souhaité, puis videz-le afin que les charges de travail soient déplacées vers le nouveau. Une fois cette étape terminée, vous pouvez supprimer l'ancien groupe de nœuds.

 **Comment puis-je voir les données utilisateur générées pour un groupe de nœuds ?** 

Vous aurez d'abord besoin du nom de la pile Cloudformation qui gère le groupe de nœuds :

```
eksctl utils describe-stacks --region=us-west-2 --cluster NAME
```

Vous verrez un nom similaire à`eksctl-CLUSTER_NAME-nodegroup-NODEGROUP_NAME`.

Vous pouvez exécuter ce qui suit pour obtenir les données utilisateur. Notez la dernière ligne qui décode à partir de base64 et décompresse les données compressées.

```
NG_STACK=eksctl-scrumptious-monster-1595247364-nodegroup-ng-29b8862f # your stack here
LAUNCH_TEMPLATE_ID=$(aws cloudformation describe-stack-resources --stack-name $NG_STACK \
| jq -r '.StackResources | map(select(.LogicalResourceId == "NodeGroupLaunchTemplate") \
| .PhysicalResourceId)[0]')
aws ec2 describe-launch-template-versions --launch-template-id $LAUNCH_TEMPLATE_ID \
| jq -r '.LaunchTemplateVersions[0].LaunchTemplateData.UserData' \
| base64 -d | gunzip
```

## Ingress
<a name="_ingress"></a>

 **Comment configurer l'entrée avec `eksctl` ?** 

Nous vous recommandons d'utiliser le [contrôleur AWS Load Balancer](https://github.com/kubernetes-sigs/aws-load-balancer-controller). [La documentation sur le déploiement du contrôleur sur votre cluster, ainsi que sur la migration depuis l'ancien contrôleur d'entrée ALB, est disponible ici.](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)

Pour le Nginx Ingress Controller, la configuration serait la même que celle des [autres clusters Kubernetes](https://kubernetes.github.io/ingress-nginx/deploy/#aws).

## Kubectl
<a name="_kubectl"></a>

 **J'utilise un proxy HTTPS et la validation du certificat de cluster échoue. Comment puis-je utiliser le système CAs ?** 

Définissez la variable `KUBECONFIG_USE_SYSTEM_CA` d'environnement pour `kubeconfig` respecter les autorités de certification du système.

# Run à sec
<a name="dry-run"></a>

La fonction d'exécution à sec vous permet d'inspecter et de modifier les instances correspondant au sélecteur d'instance avant de procéder à la création d'un groupe de nœuds.

Lorsqu'il `eksctl create cluster` est appelé avec les options et options du sélecteur d'instance`--dry-run`, eksctl produit un ClusterConfig fichier contenant un groupe de nœuds représentant les options de la CLI et les types d'instances définis sur les instances correspondant aux critères de ressources du sélecteur d'instance.

```
eksctl create cluster --name development --dry-run


apiVersion: eksctl.io/v1alpha5
cloudWatch:
  clusterLogging: {}
iam:
  vpcResourceControllerPolicy: true
  withOIDC: false
kind: ClusterConfig
managedNodeGroups:
- amiFamily: AmazonLinux2
  desiredCapacity: 2
  disableIMDSv1: true
  disablePodIMDS: false
  iam:
    withAddonPolicies:
      albIngress: false
      appMesh: false
      appMeshPreview: false
      autoScaler: false
      certManager: false
      cloudWatch: false
      ebs: false
      efs: false
      externalDNS: false
      fsx: false
      imageBuilder: false
      xRay: false
  instanceSelector: {}
  instanceType: m5.large
  labels:
    alpha.eksctl.io/cluster-name: development
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
  maxSize: 2
  minSize: 2
  name: ng-4aba8a47
  privateNetworking: false
  securityGroups:
    withLocal: null
    withShared: null
  ssh:
    allow: false
    enableSsm: false
    publicKeyPath: ""
  tags:
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
    alpha.eksctl.io/nodegroup-type: managed
  volumeIOPS: 3000
  volumeSize: 80
  volumeThroughput: 125
  volumeType: gp3
metadata:
  name: development
  region: us-west-2
  version: "1.24"
privateCluster:
  enabled: false
vpc:
  autoAllocateIPv6: false
  cidr: 192.168.0.0/16
  clusterEndpoints:
    privateAccess: false
    publicAccess: true
  manageSharedNodeSecurityGroupRules: true
  nat:
    gateway: Single
```

Le résultat généré ClusterConfig peut ensuite être transmis à `eksctl create cluster` :

```
eksctl create cluster -f generated-cluster.yaml
```

Lorsqu'un ClusterConfig fichier est transmis`--dry-run`, eksctl produit un ClusterConfig fichier contenant les valeurs définies dans le fichier.

## Options uniques dans eksctl
<a name="_one_off_options_in_eksctl"></a>

Certaines options ponctuelles ne peuvent pas être représentées dans le `ClusterConfig` fichier, `--install-vpc-controllers` par exemple.

On s'attend à ce que :

```
eksctl create cluster --<options...> --dry-run > config.yaml
```

suivi par :

```
eksctl create cluster -f config.yaml
```

serait équivalent à exécuter la première commande sans`--dry-run`.

eksctl interdit donc de transmettre des options qui ne peuvent pas être représentées dans le fichier de configuration lorsqu'il est `--dry-run` transmis.

**Important**  
Si vous devez transmettre un profil AWS, définissez la variable d'`AWS_PROFILE`environnement au lieu de transmettre l'option `--profile` CLI.