

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Che cos'è Eksctl?
<a name="what-is-eksctl"></a>

eksctl è uno strumento di utilità a riga di comando che automatizza e semplifica il processo di creazione, gestione e funzionamento dei cluster Amazon Elastic Kubernetes Service (Amazon EKS). Scritto in Go, eksctl fornisce una sintassi dichiarativa tramite configurazioni YAML e comandi CLI per gestire operazioni complesse del cluster EKS che altrimenti richiederebbero più passaggi manuali su diversi servizi AWS.

eksctl è particolarmente utile per DevOps ingegneri, team di piattaforma e amministratori di Kubernetes che devono implementare e gestire in modo coerente i cluster EKS su larga scala. È particolarmente utile per le organizzazioni che stanno passando da Kubernetes autogestito a EKS o per quelle che implementano pratiche di infrastruttura come codice (IaC), in quanto può essere integrato nelle pipeline e nei flussi di lavoro di automazione esistenti. CI/CD Lo strumento elimina molte delle interazioni complesse tra i servizi AWS necessari per la configurazione del cluster EKS, come la configurazione VPC, la creazione di ruoli IAM e la gestione dei gruppi di sicurezza.

Le caratteristiche principali di eksctl includono la possibilità di creare cluster EKS completamente funzionali con un solo comando, il supporto per configurazioni di rete personalizzate, la gestione automatizzata dei gruppi di nodi e l'integrazione del flusso di lavoro. GitOps Lo strumento gestisce gli aggiornamenti dei cluster, ridimensiona i gruppi di nodi e gestisce la gestione dei componenti aggiuntivi tramite un approccio dichiarativo. eksctl fornisce anche funzionalità avanzate come la configurazione del profilo Fargate, la personalizzazione dei gruppi di nodi gestiti e l'integrazione di istanze spot, pur mantenendo la compatibilità con altri strumenti e servizi AWS tramite l'integrazione nativa di AWS SDK.

## Funzionalità
<a name="_features"></a>

Le funzionalità attualmente implementate sono:
+ Creare, ottenere, elencare ed eliminare i cluster
+ Crea, svuota ed elimina i gruppi di nodi
+ Ridimensiona un gruppo di nodi
+ Aggiornamento di un cluster 
+ Usa personalizzato AMIs
+ Configurazione della rete VPC
+ Configura l'accesso agli endpoint API
+ Support per gruppi di nodi GPU
+ Istanze spot e istanze miste
+ Politiche di gestione e componenti aggiuntivi di IAM
+ Elenca gli stack di formazione del cluster Cloudformation
+ Installa cordens
+ Scrivi il file kubeconfig per un cluster

# Domande frequenti su Eksctl
<a name="faq"></a>

## Ambito generale
<a name="_general"></a>

 **Posso usarlo `eksctl` per gestire cluster che non sono stati creati da? `eksctl`** 

Sì Dalla versione `0.40.0` è possibile eseguire su qualsiasi `eksctl` cluster, indipendentemente dal fatto che sia stato creato da `eksctl` o meno. Per ulteriori informazioni, consulta [Cluster non creati da eksctl](unowned-clusters.md).

## Gruppi di nodi
<a name="nodegroup-faq"></a>

 **Come posso cambiare il tipo di istanza del mio gruppo di nodi?** 

Dal punto di vista di`eksctl`, i gruppi di nodi sono immutabili. Ciò significa che una volta creato, l'unica cosa che `eksctl` può fare è scalare il gruppo di nodi verso l'alto o verso il basso.

Per cambiare il tipo di istanza, crea un nuovo gruppo di nodi con il tipo di istanza desiderato, quindi drenalo in modo che i carichi di lavoro si spostino su quello nuovo. Una volta completato questo passaggio, puoi eliminare il vecchio gruppo di nodi.

 **Come posso vedere i dati utente generati per un gruppo di nodi?** 

Per prima cosa avrai bisogno del nome dello stack Cloudformation che gestisce il nodegroup:

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

Vedrai un nome simile a. `eksctl-CLUSTER_NAME-nodegroup-NODEGROUP_NAME`

È possibile eseguire quanto segue per ottenere i dati utente. Nota l'ultima riga che decodifica da base64 e decomprime i dati compressi con gzip.

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

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

 **Come posso configurare l'ingresso con? `eksctl`** 

Ti consigliamo di utilizzare il controller [AWS Load Balancer](https://github.com/kubernetes-sigs/aws-load-balancer-controller). [La documentazione su come distribuire il controller nel cluster e su come migrare dal vecchio ALB Ingress Controller è disponibile qui.](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)

[Per il Nginx Ingress Controller, la configurazione sarebbe la stessa di qualsiasi altro cluster Kubernetes.](https://kubernetes.github.io/ingress-nginx/deploy/#aws)

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

 **Sto usando un proxy HTTPS e la convalida del certificato del cluster non riesce, come posso usare il sistema? CAs** 

Imposta la variabile di ambiente `KUBECONFIG_USE_SYSTEM_CA` per `kubeconfig` rispettare le autorità di certificazione del sistema.

# Corsa a secco
<a name="dry-run"></a>

La funzione dry-run consente di ispezionare e modificare le istanze corrispondenti al selettore di istanze prima di procedere alla creazione di un gruppo di nodi.

Quando `eksctl create cluster` viene chiamato con le opzioni del selettore di istanza e`--dry-run`, eksctl produrrà un ClusterConfig file contenente un nodegroup che rappresenta le opzioni CLI e i tipi di istanza impostati sulle istanze corrispondenti ai criteri di risorsa del selettore di istanze.

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

Il `eksctl create cluster` generato può quindi essere passato a: ClusterConfig 

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

Quando un ClusterConfig file viene passato con`--dry-run`, eksctl emetterà un ClusterConfig file contenente i valori impostati nel file.

## Opzioni una tantum in eksctl
<a name="_one_off_options_in_eksctl"></a>

Ci sono alcune opzioni una tantum che non possono essere rappresentate nel `ClusterConfig` file, ad esempio `--install-vpc-controllers`

Si prevede che:

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

seguita da:

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

sarebbe equivalente a eseguire il primo comando senza`--dry-run`.

eksctl quindi non consente il passaggio di opzioni che non possono essere rappresentate nel file di configurazione quando vengono passate. `--dry-run`

**Importante**  
Se devi passare un profilo AWS, imposta la variabile di `AWS_PROFILE` ambiente anziché passare l'opzione `--profile` CLI.