

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

# Componenti aggiuntivi
<a name="addons"></a>

Questo argomento descrive come gestire i componenti aggiuntivi Amazon EKS per i cluster Amazon EKS utilizzando eksctl. EKS Add-Ons è una funzionalità che consente di abilitare e gestire il software operativo Kubernetes tramite l'API EKS, semplificando il processo di installazione, configurazione e aggiornamento dei componenti aggiuntivi del cluster.

**avvertimento**  
eksctl ora installa componenti aggiuntivi predefiniti (vpc-cni, coredns, kube-proxy) come componenti aggiuntivi EKS anziché componenti aggiuntivi autogestiti. Ciò significa che è necessario utilizzare al posto dei comandi per i `eksctl update addon` cluster creati con eksctl `eksctl utils update-*` v0.184.0 e versioni successive.

È possibile creare cluster senza componenti aggiuntivi di rete predefiniti quando si desidera utilizzare plugin CNI alternativi come Cilium e Calico.

I componenti aggiuntivi EKS ora supportano la ricezione di autorizzazioni IAM tramite EKS Pod Identity Associations, permettendo loro di connettersi ai servizi AWS esterni al cluster

## Creazione di componenti aggiuntivi
<a name="addons-create"></a>

Eksctl offre maggiore flessibilità per la gestione dei componenti aggiuntivi del cluster:

Nel tuo file di configurazione, puoi specificare i componenti aggiuntivi che desideri e (se necessario) il ruolo o le politiche da allegare ad essi:

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: example-cluster
  region: us-west-2

iam:
  withOIDC: true

addons:
- name: vpc-cni
  # all below properties are optional
  version: 1.7.5
  tags:
    team: eks
  # you can specify at most one of:
  attachPolicyARNs:
  - arn:aws:iam::account:policy/AmazonEKS_CNI_Policy
  # or
  serviceAccountRoleARN: arn:aws:iam::account:role/AmazonEKSCNIAccess
  # or
  attachPolicy:
    Statement:
    - Effect: Allow
      Action:
      - ec2:AssignPrivateIpAddresses
      - ec2:AttachNetworkInterface
      - ec2:CreateNetworkInterface
      - ec2:DeleteNetworkInterface
      - ec2:DescribeInstances
      - ec2:DescribeTags
      - ec2:DescribeNetworkInterfaces
      - ec2:DescribeInstanceTypes
      - ec2:DetachNetworkInterface
      - ec2:ModifyNetworkInterfaceAttribute
      - ec2:UnassignPrivateIpAddresses
      Resource: '*'
```

Puoi specificare al massimo uno di`attachPolicy`, e. `attachPolicyARNs` `serviceAccountRoleARN`

Se non viene specificato nessuno di questi, l'addon verrà creato con un ruolo a cui sono allegate tutte le politiche consigliate.

**Nota**  
Per allegare le politiche ai componenti aggiuntivi, il cluster deve essere abilitato. `OIDC` Se non è abilitato, ignoriamo tutte le politiche allegate.

Puoi quindi creare questi componenti aggiuntivi durante il processo di creazione del cluster:

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

Oppure crea i componenti aggiuntivi in modo esplicito dopo la creazione del cluster utilizzando il file di configurazione o i flag CLI:

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

```
eksctl create addon --name vpc-cni --version 1.7.5 --service-account-role-arn <role-arn>
```

```
eksctl create addon --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
```

**Suggerimento**  
Usa il `--namespace-config` flag per distribuire i componenti aggiuntivi in uno spazio dei nomi personalizzato anziché nello spazio dei nomi predefinito.

Durante la creazione del componente aggiuntivo, se nel cluster esiste già una versione autogestita dell'addon, è possibile scegliere come risolvere i potenziali `configMap` conflitti impostando l'opzione tramite il file di configurazione, ad es. `resolveConflicts`

```
addons:
- name: vpc-cni
  attachPolicyARNs:
    - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
  resolveConflicts: overwrite
```

Per la creazione di addon, il `resolveConflicts` campo supporta tre valori distinti:
+  `none`- EKS non modifica il valore. La creazione potrebbe fallire.
+  `overwrite`- EKS sovrascrive qualsiasi modifica alla configurazione riportandola ai valori predefiniti di EKS.
+  `preserve`- EKS non modifica il valore. La creazione potrebbe fallire. (Analogamente`none`, ma diverso dall'[`preserve`aggiornamento dei componenti aggiuntivi).](#update-addons)

## Elencare componenti aggiuntivi abilitati
<a name="_listing_enabled_addons"></a>

Puoi vedere quali componenti aggiuntivi sono abilitati nel tuo cluster eseguendo:

```
eksctl get addons --cluster <cluster-name>
```

or

```
eksctl get addons -f config.yaml
```

## Impostazione della versione dell'addon
<a name="_setting_the_addons_version"></a>

L'impostazione della versione del componente aggiuntivo è facoltativa. Se il `version` campo viene lasciato vuoto, `eksctl` verrà risolta la versione predefinita dell'addon. Ulteriori informazioni su quale versione è la versione predefinita per componenti aggiuntivi specifici sono disponibili nella documentazione AWS su EKS. Tieni presente che la versione predefinita potrebbe non essere necessariamente l'ultima versione disponibile.

La versione del componente aggiuntivo può essere impostata su. `latest` In alternativa, la versione può essere impostata con il tag di build EKS specificato, ad esempio `v1.7.5-eksbuild.1` o`v1.7.5-eksbuild.2`. Può anche essere impostato sulla versione di rilascio dell'addon, ad esempio `v1.7.5` o`1.7.5`, e il tag del `eksbuild` suffisso verrà scoperto e impostato automaticamente.

Consulta la sezione seguente su come scoprire i componenti aggiuntivi disponibili e le relative versioni.

## Alla scoperta degli addon
<a name="_discovering_addons"></a>

Puoi scoprire quali componenti aggiuntivi sono disponibili per l'installazione sul tuo cluster eseguendo:

```
eksctl utils describe-addon-versions --cluster <cluster-name>
```

Questo scoprirà la versione Kubernetes del tuo cluster e filtrerà in base a quella. In alternativa, se vuoi vedere quali componenti aggiuntivi sono disponibili per una particolare versione di Kubernetes, puoi eseguire:

```
eksctl utils describe-addon-versions --kubernetes-version <version>
```

Puoi anche scoprire i componenti aggiuntivi filtrando in base ai loro,. `type` `owner` and/or `publisher` Ad esempio, per visualizzare i componenti aggiuntivi di un determinato proprietario e tipo, puoi eseguire:

```
eksctl utils describe-addon-versions --kubernetes-version 1.22 --types "infra-management, policy-management" --owners "aws-marketplace"
```

I `publishers` flag`types`, `owners` e sono opzionali e possono essere specificati insieme o singolarmente per filtrare i risultati.

## Alla scoperta dello schema di configurazione per i componenti aggiuntivi
<a name="_discovering_the_configuration_schema_for_addons"></a>

Dopo aver scoperto l'addon e la versione, puoi visualizzare le opzioni di personalizzazione recuperando lo schema di configurazione JSON corrispondente.

```
eksctl utils describe-addon-configuration --name vpc-cni --version v1.12.0-eksbuild.1
```

Ciò restituisce uno schema JSON delle varie opzioni disponibili per questo componente aggiuntivo.

## Lavorare con i valori di configurazione
<a name="_working_with_configuration_values"></a>

 `ConfigurationValues`può essere fornito nel file di configurazione durante la creazione o l'aggiornamento dei componenti aggiuntivi. Sono supportati solo i formati JSON e YAML.

Ad es. ,

```
addons:
- name: coredns
  configurationValues: |-
    replicaCount: 2
```

```
addons:
- name: coredns
  version: latest
  configurationValues: "{\"replicaCount\":3}"
  resolveConflicts: overwrite
```

**Nota**  
Tenete presente che quando i valori di configurazione degli addon vengono modificati, si verificano conflitti di configurazione.

```
Thus, we need to specify how to deal with those by setting the `resolveConflicts` field accordingly.
As in this scenario we want to modify these values, we'd set `resolveConflicts: overwrite`.
```

Inoltre, il comando get ora recupererà anche l'addon. `ConfigurationValues` Ad es.

```
eksctl get addon --cluster my-cluster --output yaml
```

```
- ConfigurationValues: '{"replicaCount":3}'
  IAMRole: ""
  Issues: null
  Name: coredns
  NewerVersion: ""
  Status: ACTIVE
  Version: v1.8.7-eksbuild.3
```

## Utilizzo di uno spazio dei nomi personalizzato
<a name="_using_custom_namespace"></a>

È possibile fornire uno spazio dei nomi personalizzato nel file di configurazione durante la creazione di componenti aggiuntivi. Un namespace non può essere aggiornato una volta creato un componente aggiuntivo.

### Utilizzo del file di configurazione
<a name="_using_config_file"></a>

```
addons:
  - name: aws-ebs-csi-driver
    version: latest
    namespaceConfig:
      namespace: custom-namespace
```

### Utilizzo del flag CLI
<a name="_using_cli_flag"></a>

In alternativa, puoi specificare uno spazio dei nomi personalizzato usando il flag: `--namespace-config`

```
eksctl create addon --cluster my-cluster --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
```

Il comando get recupererà anche il valore dello spazio dei nomi per l'addon

```
- ConfigurationValues: ""
  IAMRole: ""
  Issues: null
  Name: aws-ebs-csi-driver
  NamespaceConfig:
    namespace: custom-namespace
  NewerVersion: ""
  PodIdentityAssociations: null
  Status: ACTIVE
  Version: v1.47.0-eksbuild.1
```

## Aggiornamento dei componenti aggiuntivi
<a name="update-addons"></a>

Puoi aggiornare i componenti aggiuntivi alle versioni più recenti e modificare le politiche allegate eseguendo:

```
eksctl update addon -f config.yaml
```

```
eksctl update addon --name vpc-cni --version 1.8.0 --service-account-role-arn <new-role>
```

**Nota**  
La configurazione dello spazio dei nomi non può essere aggiornata una volta creato un componente aggiuntivo. Il `--namespace-config` flag è disponibile solo durante la creazione dell'addon.

Analogamente alla creazione di un componente aggiuntivo, quando aggiorni un componente aggiuntivo, hai il pieno controllo sulle modifiche alla configurazione che potresti aver applicato in precedenza a quel componente aggiuntivo. `configMap` In particolare, puoi conservarli o sovrascriverli. Questa funzionalità opzionale è disponibile tramite lo stesso campo `resolveConflicts` del file di configurazione. ad esempio,

```
addons:
- name: vpc-cni
  attachPolicyARNs:
    - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
  resolveConflicts: preserve
```

Per l'aggiornamento dei componenti aggiuntivi, il `resolveConflicts` campo accetta tre valori distinti:
+  `none`- EKS non modifica il valore. L'aggiornamento potrebbe fallire.
+  `overwrite`- EKS sovrascrive qualsiasi modifica alla configurazione riportandola ai valori predefiniti di EKS.
+  `preserve`- EKS conserva il valore. Se scegli questa opzione, ti consigliamo di testare qualsiasi modifica di campo e valore su un cluster non di produzione prima di aggiornare il componente aggiuntivo nel tuo cluster di produzione.

## Eliminazione di componenti aggiuntivi
<a name="_deleting_addons"></a>

Puoi eliminare un componente aggiuntivo eseguendo:

```
eksctl delete addon --cluster <cluster-name> --name <addon-name>
```

Questo eliminerà l'addon e tutti i ruoli IAM ad esso associati.

Quando elimini il cluster, vengono eliminati anche tutti i ruoli IAM associati ai componenti aggiuntivi.

## Flessibilità di creazione di cluster per componenti aggiuntivi di rete predefiniti
<a name="barecluster"></a>

Quando viene creato un cluster, EKS installa automaticamente VPC CNI, CoredNS e kube-proxy come componenti aggiuntivi autogestiti. Per disabilitare questo comportamento al fine di utilizzare altri plugin CNI come Cilium e Calico, eksctl ora supporta la creazione di un cluster senza componenti aggiuntivi di rete predefiniti. Per creare un cluster di questo tipo, imposta, come in: `addonsConfig.disableDefaultAddons`

```
addonsConfig:
  disableDefaultAddons: true
```

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

Per creare un cluster con solo CoredNS e kube-proxy e non VPC CNI, specifica gli addon in modo esplicito e imposta, come in: `addons` `addonsConfig.disableDefaultAddons`

```
addonsConfig:
  disableDefaultAddons: true
addons:
  - name: kube-proxy
  - name: coredns
```

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

Come parte di questa modifica, eksctl ora installa i componenti aggiuntivi predefiniti come componenti aggiuntivi EKS anziché componenti aggiuntivi autogestiti durante la creazione del cluster se non è impostato esplicitamente su true. `addonsConfig.disableDefaultAddons` Pertanto, `eksctl utils update-*` i comandi non possono più essere utilizzati per aggiornare i componenti aggiuntivi per i cluster creati con eksctl v0.184.0 e versioni successive:
+  `eksctl utils update-aws-node` 
+  `eksctl utils update-coredns` 
+  `eksctl utils update-kube-proxy` 

Invece`eksctl update addon`, dovrebbe essere usato ora.

Per ulteriori informazioni, consulta [Amazon EKS introduce la flessibilità di creazione di cluster per componenti aggiuntivi di rete](https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-eks-cluster-creation-flexibility-networking-add-ons/).