

 **Contribuisci a migliorare questa pagina** 

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

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

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

# Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA
<a name="cni-iam-role"></a>

Il [plug-in CNI di Amazon VPC per Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) è il plug-in per reti Pod nei cluster Amazon EKS. Il plug-in è responsabile dell’allocazione degli indirizzi IP VPC sui pod Kubernetes e della configurazione delle reti necessarie per i Pod in ogni nodo.

**Nota**  
Il plug-in CNI di Amazon VPC supporta anche Identità di Pod di Amazon EKS. Per ulteriori informazioni, consulta [Assegnazione di un ruolo IAM a un account di servizio Kubernetes](pod-id-association.md).

Il plug-in:
+ Richiede le autorizzazioni di AWS Identity and Access Management (IAM). Se il cluster utilizza la `IPv4` famiglia, le autorizzazioni sono specificate nella politica [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html) AWS gestita. Se il cluster utilizza la famiglia `IPv6`, le autorizzazioni devono essere aggiunte a una policy IAM creata dall’utente; per le istruzioni, consulta [Creare una policy IAM per i cluster che utilizzano la famiglia `IPv6`](#cni-iam-role-create-ipv6-policy). È possibile collegare questa policy al ruolo del nodo IAM Amazon EKS o a un ruolo IAM separato. Per istruzioni su come allegare la policy al ruolo IAM del nodo Amazon EKS, consulta [Ruolo IAM del nodo Amazon EKS](create-node-role.md). Si consiglia di assegnarlo a un ruolo separato, come descritto in questo argomento.
+ Crea ed è configurato per l’utilizzo di un account di servizio Kubernetes denominato `aws-node` quando viene implementato. L’account di servizio è associato a un `clusterrole` Kubernetes di nome `aws-node`, a cui vengono assegnate le autorizzazioni Kubernetes richieste.

**Nota**  
I Pod per il plug-in CNI di Amazon VPC per Kubernetes hanno accesso alle autorizzazioni assegnate al [ruolo IAM del nodo Amazon EKS](create-node-role.md), a meno che non si blocchi l’accesso al servizio di metadati a IMDS. Per ulteriori informazioni, consulta [Limitazione dell’accesso al profilo dell’istanza assegnato al nodo worker](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
+ Richiede un cluster Amazon EKS esistente. Per implementarne uno, consulta [Nozioni di base su Amazon EKS](getting-started.md).
+ Richiede un provider AWS Identity and Access Management (IAM) OpenID Connect (OIDC) esistente per il cluster. Per determinare se si dispone già di un provider IAM o per crearne uno, consulta [Per creare un provider di identità IAM OIDC per il cluster](enable-iam-roles-for-service-accounts.md).

## Passaggio 1: Creazione di un ruolo IAM per il plug-in CNI di Amazon VPC per Kubernetes
<a name="cni-iam-role-create-role"></a>

1. Determinare la famiglia IP del cluster.

   ```
   aws eks describe-cluster --name my-cluster | grep ipFamily
   ```

   Di seguito viene riportato un output di esempio.

   ```
   "ipFamily": "ipv4"
   ```

   L’output potrebbe invece restituire `ipv6`.

1. Creare il ruolo IAM. Puoi usare `eksctl` or `kubectl` e la AWS CLI per creare il tuo ruolo IAM.  
eksctl  
   + Creare un ruolo IAM e collegare ad esso la policy IAM con il comando corrispondente alla famiglia IP del cluster. Il comando crea e distribuisce uno AWS CloudFormation stack che crea un ruolo IAM, allega la policy specificata e annota l'account del servizio `aws-node` Kubernetes esistente con l'ARN del ruolo IAM creato.
     +  `IPv4` 

       Sostituire {{my-cluster}} con il proprio valore.

       ```
       eksctl create iamserviceaccount \
           --name aws-node \
           --namespace kube-system \
           --cluster my-cluster \
           --role-name AmazonEKSVPCCNIRole \
           --attach-policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \
           --override-existing-serviceaccounts \
           --approve
       ```
     +  `IPv6` 

       Sostituire {{my-cluster}} con il proprio valore. Sostituisci {{111122223333}} con il tuo ID account e {{AmazonEKS\_CNI\_IPv6\_Policy}} con il nome della policy `IPv6`. Se non disponi di una policy `IPv6`, consulta [Creare una policy IAM per i cluster che utilizzano la famiglia `IPv6`](#cni-iam-role-create-ipv6-policy) per crearne una. Per utilizzare `IPv6` con il cluster, questo deve soddisfare diversi requisiti. Per ulteriori informazioni, consulta [Scopri IPv6 gli indirizzi di cluster, pod e servizi](cni-ipv6.md).

       ```
       eksctl create iamserviceaccount \
           --name aws-node \
           --namespace kube-system \
           --cluster my-cluster \
           --role-name AmazonEKSVPCCNIRole \
           --attach-policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \
           --override-existing-serviceaccounts \
           --approve
       ```  
kubectl e la CLI AWS   

   1. Visualizzare l’URL del provider OIDC del cluster.

      ```
      aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
      ```

      Di seguito viene riportato un output di esempio.

      ```
      https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
      ```

      Se non viene restituito alcun output, devi [creare un provider OIDC IAM per il cluster](enable-iam-roles-for-service-accounts.md).

   1. Copia i seguenti contenuti in un file denominato {{vpc-cni-trust-policy.json}}. Sostituisci {{111122223333}} con il tuo ID account e {{EXAMPLED539D4633E53DE1B71EXAMPLE}} con l'output restituito nel passaggio precedente. Sostituisci {{region-code}} con la AWS regione in cui si trova il cluster.

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
                  },
                  "Action": "sts:AssumeRoleWithWebIdentity",
                  "Condition": {
                      "StringEquals": {
                          "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
                          "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-node"
                      }
                  }
              }
          ]
      }
      ```

   1. Crea il ruolo. Puoi sostituire {{AmazonEKSVPCCNIRole}} con un nome a tua scelta.

      ```
      aws iam create-role \
        --role-name AmazonEKSVPCCNIRole \
        --assume-role-policy-document file://"vpc-cni-trust-policy.json"
      ```

   1. Allega la policy IAM richiesta al ruolo. Esegui il comando corrispondente alla famiglia IP del cluster.
      +  `IPv4` 

        ```
        aws iam attach-role-policy \
          --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \
          --role-name AmazonEKSVPCCNIRole
        ```
      +  `IPv6` 

        Sostituisci {{111122223333}} con il tuo ID account e {{AmazonEKS\_CNI\_IPv6\_Policy}} con il nome della policy `IPv6`. Se non disponi di una policy `IPv6`, consulta [Creare una policy IAM per i cluster che utilizzano la famiglia `IPv6`](#cni-iam-role-create-ipv6-policy) per crearne una. Per utilizzare `IPv6` con il cluster, questo deve soddisfare diversi requisiti. Per ulteriori informazioni, consulta [Scopri IPv6 gli indirizzi di cluster, pod e servizi](cni-ipv6.md).

        ```
        aws iam attach-role-policy \
          --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \
          --role-name AmazonEKSVPCCNIRole
        ```

   1. Esegui il comando seguente per annotare l’account di servizio `aws-node` con l’ARN del ruolo IAM creato in precedenza. Sostituire i valori di esempio con i propri valori.

      ```
      kubectl annotate serviceaccount \
          -n kube-system aws-node \
          eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
      ```

1. (Facoltativo) Configura il tipo di endpoint del servizio AWS Security Token utilizzato dal tuo account del servizio Kubernetes. Per ulteriori informazioni, consulta [Configurare l’endpoint del Servizio di token di sicurezza AWS per un account di servizio](configure-sts-endpoint.md).

## Passaggio 2: Nuova implementazione dei Pod del plug-in CNI di Amazon VPC per Kubernetes
<a name="cni-iam-role-redeploy-pods"></a>

1. Eliminare e ricreare i Pod esistenti associati all’account di servizio per applicare le variabili di ambiente delle credenziali. L’annotazione non viene applicata ai Pod attualmente in esecuzione senza l’annotazione. Il comando seguente elimina i `aws-node` DaemonSet Pod esistenti e li distribuisce con l'annotazione dell'account di servizio.

   ```
   kubectl delete Pods -n kube-system -l k8s-app=aws-node
   ```

1. Confermare che tutti i Pod sono stati riavviati.

   ```
   kubectl get pods -n kube-system -l k8s-app=aws-node
   ```

1. Descrivere uno dei Pod e verificare che le variabili di ambiente `AWS_WEB_IDENTITY_TOKEN_FILE` e `AWS_ROLE_ARN` esistano. Sostituiscilo {{cpjw7}} con il nome di uno dei tuoi Pod restituito nell'output del passaggio precedente.

   ```
   kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'
   ```

   Di seguito viene riportato un output di esempio.

   ```
   AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
         AWS_WEB_IDENTITY_TOKEN_FILE:  /var/run/secrets/eks.amazonaws.com/serviceaccount/token
         AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
         AWS_WEB_IDENTITY_TOKEN_FILE:            /var/run/secrets/eks.amazonaws.com/serviceaccount/token
   ```

   Vengono restituiti due set di risultati duplicati perché il Pod contiene due container. I due container hanno gli stessi valori.

   Se il Pod utilizza l'endpoint AWS regionale, nell'output precedente viene restituita anche la riga seguente.

   ```
   AWS_STS_REGIONAL_ENDPOINTS=regional
   ```

## Passaggio 3: rimozione della policy CNI dal ruolo IAM del nodo
<a name="remove-cni-policy-node-iam-role"></a>

Se al tuo [ruolo IAM del nodo Amazon EKS](create-node-role.md) è attualmente associata la policy `AmazonEKS_CNI_Policy` IAM (`IPv4`) o una [IPv6 policy](#cni-iam-role-create-ipv6-policy) e hai creato un ruolo IAM separato, invece hai collegato la policy ad esso e l'hai assegnata all'account del servizio `aws-node` Kubernetes, ti consigliamo di rimuovere la policy dal tuo ruolo di nodo con il comando AWS CLI che corrisponde alla famiglia IP del tuo cluster. Sostituisci {{AmazonEKSNodeRole}} con il nome del ruolo del nodo.
+  `IPv4` 

  ```
  aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
  ```
+  `IPv6` 

  Sostituisci {{111122223333}} con il tuo ID account e {{AmazonEKS\_CNI\_IPv6\_Policy}} con il nome della policy `IPv6`.

  ```
  aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy
  ```

## Creare una policy IAM per i cluster che utilizzano la famiglia `IPv6`
<a name="cni-iam-role-create-ipv6-policy"></a>

Se hai creato un cluster che utilizza la famiglia `IPv6` e sul cluster è configurata la versione `1.10.1` o successiva del componente aggiuntivo del plug-in CNI di Amazon VPC per Kubernetes, devi creare una policy IAM da assegnare a un ruolo IAM. Se disponi di un cluster che non è stato configurato con la famiglia `IPv6` al momento della creazione, prima di utilizzare `IPv6`, devi creare un nuovo cluster. Per ulteriori informazioni sull’uso di `IPv6` con il cluster, consulta [Scopri IPv6 gli indirizzi di cluster, pod e servizi](cni-ipv6.md).

1. Copia il testo seguente e salvalo in un file denominato `vpc-cni-ipv6-policy.json`.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:AssignIpv6Addresses",
                   "ec2:DescribeInstances",
                   "ec2:DescribeTags",
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:DescribeInstanceTypes"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateTags"
               ],
               "Resource": [
                   "arn:aws:ec2:*:*:network-interface/*"
               ]
           }
       ]
   }
   ```

1. Creare la policy IAM.

   ```
   aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
   ```