

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

# Utilizzare il volume di archiviazione Kubernetes con Amazon EBS
<a name="ebs-csi"></a>

**Nota**  
 **Novità:** la modalità automatica di Amazon EKS automatizza le attività di routine per l’archiviazione a blocchi. Informazioni su come [Implementazione di un carico di lavoro stateful esemplificativo in modalità automatica EKS](sample-storage-workload.md).

Il [driver Container Storage Interface (CSI) di Amazon Elastic Block Store (Amazon EBS)](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/) gestisce il ciclo di vita dei volumi Amazon EBS come archiviazione per i volumi Kubernetes creati. Il driver CSI di Amazon EBS crea volumi Amazon EBS per questi tipi di volumi Kubernetes: [volumi generici effimeri](https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/) e [volumi persistenti](https://kubernetes.io/docs/concepts/storage/persistent-volumes/).

## Considerazioni
<a name="ebs-csi-considerations"></a>
+ Non è necessario installare il controller CSI di Amazon EBS sui cluster della modalità automatica EKS.
+ Non è possibile montare volumi Amazon EBS sui pod Fargate.
+ Puoi eseguire il controller Amazon EBS CSI sui nodi Fargate, ma sul nodo Amazon EBS CSI `DaemonSet` può essere eseguito solo su istanze Amazon EC2.
+ I volumi Amazon EBS e il driver CSI di Amazon EBS non sono compatibili con Amazon EKS Hybrid Nodes.
+ Verrà fornito supporto per la versione più recente del componente aggiuntivo e per una versione precedente. Le correzioni per bug o vulnerabilità rilevate nell'ultima versione verranno riportate alla versione precedente come nuova versione secondaria.
+ La modalità automatica EKS richiede classi di archiviazione per utilizzare `ebs.csi.eks.amazonaws.com` come provisioner. Il driver CSI di Amazon EBS standard (`ebs.csi.aws.com`) gestisce i propri volumi separatamente. Per utilizzare i volumi esistenti con la modalità automatica EKS, eseguirne la migrazione tramite snapshot del volume verso una classe di archiviazione che utilizza il provisioner della modalità automatica.

**Importante**  
Per utilizzare la funzionalità snapshot del driver CSI di Amazon EBS, è prima necessario installare il controller di snapshot CSI. Per ulteriori informazioni, consulta [Abilitare la funzionalità snapshot per i volumi CSI](csi-snapshot-controller.md).

## Prerequisiti
<a name="ebs-csi-prereqs"></a>
+ Un cluster esistente. Per visualizzare la versione della piattaforma richiesta, esegui il comando seguente.

  ```
  aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
  ```
+ Il driver CSI EBS richiede le autorizzazioni IAM. AWS 
  +  AWS suggerisce di utilizzare EKS Pod Identities. Per ulteriori informazioni, consulta [Panoramica sulla configurazione delle associazioni EKS Pod Identity](pod-identities.md#pod-id-setup-overview).
  + Per ulteriori informazioni sui ruoli IAM per gli account di servizio, consultare [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
<a name="csi-iam-role"></a>

Il plug-in Amazon EBS CSI richiede le autorizzazioni IAM per effettuare chiamate per tuo AWS APIs conto. Se non viene soddisfatto questo prerequisito, il tentativo di installare il componente aggiuntivo e l’esecuzione di `kubectl describe pvc` riporteranno `failed to provision volume with StorageClass` insieme a un errore `could not create volume in EC2: UnauthorizedOperation`. Per ulteriori informazioni, consulta [Configurazione dell'autorizzazione driver](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#set-up-driver-permissions) su GitHub.

**Nota**  
I pod avranno accesso alle autorizzazioni assegnate al ruolo IAM, a meno che non si blocchi l’accesso a IMDS. Per ulteriori informazioni, consulta [Protezione dei cluster Amazon EKS con le best practice](security-best-practices.md).

La procedura seguente mostra come creare un ruolo IAM e allegare ad esso la policy AWS gestita. Per implementare questa procedura, è possibile utilizzare uno dei seguenti strumenti:
+  [`eksctl`](#eksctl_store_app_data) 
+  [Console di gestione AWS](#console_store_app_data) 
+  [AWS CLI](#awscli_store_app_data) 

**Nota**  
È possibile creare una policy autogestita con ulteriori autorizzazioni ridotte. Rivedere [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicyV2.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicyV2.html) e creare una policy IAM personalizzata con autorizzazioni ridotte. [In caso di migrazione da`AmazonEBSCSIDriverPolicy`, consulta la sezione Migrazione della policy di EBS CSI Driver.](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/2918)

**Nota**  
I passaggi specifici di questa procedura sono stati scritti per l'utilizzo del driver come componente aggiuntivo di Amazon EKS. Per utilizzare il driver come componente aggiuntivo autogestito occorre una procedura differente. Per ulteriori informazioni, consulta [Configurare le autorizzazioni dei conducenti](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#set-up-driver-permissions) su. GitHub

### `eksctl`
<a name="eksctl_store_app_data"></a>

1. Crea un ruolo IAM e allega una policy. AWS mantiene una politica AWS gestita oppure puoi creare la tua politica personalizzata. È possibile creare un ruolo IAM e allegare la policy AWS gestita con il seguente comando. Sostituisci *my-cluster* con il nome del cluster. Il comando distribuisce uno AWS CloudFormation stack che crea un ruolo IAM e vi allega la policy IAM.

   ```
   eksctl create iamserviceaccount \
           --name ebs-csi-controller-sa \
           --namespace kube-system \
           --cluster my-cluster \
           --role-name AmazonEKS_EBS_CSI_DriverRole \
           --role-only \
           --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicyV2 \
           --approve
   ```

1. È possibile saltare questo passaggio se non si utilizza una [chiave KMS](https://aws.amazon.com/kms/) personalizzata. Nel caso se ne utilizzi una per la crittografia dei volumi Amazon EBS, personalizzare il ruolo IAM secondo necessità. Ad esempio, completa le seguenti operazioni:

   1. Copia e incolla il codice seguente in un nuovo file `kms-key-for-encryption-on-ebs.json`. Sostituisci *custom-key-arn* con l'[ARN della chiave KMS personalizzata](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-key).

      ```
      {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "kms:CreateGrant",
                  "kms:ListGrants",
                  "kms:RevokeGrant"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"],
                "Condition": {
                  "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                  }
                }
              },
              {
                "Effect": "Allow",
                "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncrypt*",
                  "kms:GenerateDataKey*",
                  "kms:DescribeKey"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
              }
            ]
          }
      ```

   1. Crea la policy. È possibile modificare *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy* con un nome diverso. Se esegui questa operazione, tuttavia, assicurati di modificare il nome anche nelle fasi successive.

      ```
      aws iam create-policy \
            --policy-name KMS_Key_For_Encryption_On_EBS_Policy \
            --policy-document file://kms-key-for-encryption-on-ebs.json
      ```

   1. Collega la policy IAM al ruolo con il comando seguente. Sostituisci *111122223333* con l'ID del tuo account.

      ```
      aws iam attach-role-policy \
            --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \
            --role-name AmazonEKS_EBS_CSI_DriverRole
      ```

### Console di gestione AWS
<a name="console_store_app_data"></a>

1. Apri la console IAM all'indirizzo. https://console.aws.amazon.com/iam/

1. Nel pannello di navigazione a sinistra, seleziona **Ruoli**.

1. Nella pagina **Ruoli**, seleziona **Crea ruolo**.

1. Nella pagina **Select trusted entity** (Seleziona entità attendibile), esegui le operazioni seguenti:

   1. Nella sezione **Tipo di identità attendibile**, scegli **Identità Web**.

   1. Per **Identity provider** (Provider di identità), scegli **URL del provider OpenID Connect** per il cluster (come mostrato nella scheda **Overview** (Panoramica) in Amazon EKS).

   1. Per **Pubblico**, scegli `sts.amazonaws.com`.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Add permissions** (Aggiungi autorizzazioni), esegui le operazioni seguenti:

   1. Nella casella **Filtra policy**, inserisci `AmazonEBSCSIDriverPolicyV2`.

   1. Seleziona la casella di controllo a sinistra della `AmazonEBSCSIDriverPolicyV2` restituita dalla ricerca.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Name, review, and create** (Assegna un nome, rivedi e crea), esegui le operazioni seguenti:

   1. Per **Nome ruolo**, inserisci un nome univoco per il ruolo, ad esempio *AmazonEKS\$1EBS\$1CSI\$1DriverRole*.

   1. In **Aggiungi tag (facoltativo)**, aggiungi metadati al ruolo collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull’utilizzo di tag in IAM, consulta la sezione [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) nella *Guida per l’utente di IAM*.

   1. Scegli **Crea ruolo**.

1. Dopo aver creato il ruolo, sceglilo nella console in modo da aprirlo per la modifica.

1. Scegli la scheda **Relazioni di attendibilità** e quindi **Modifica policy di attendibilità**.

1. Trova la riga simile alla seguente:

   ```
   "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
   ```

   Inserisci una virgola alla fine della riga precedente, quindi aggiungine una seguente dopo quella precedente. Sostituisci *region-code* con la AWS regione in cui si trova il cluster. Sostituire *EXAMPLED539D4633E53DE1B71EXAMPLE* con l’ID del gestore OIDC del cluster.

   ```
   "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
   ```

1. Scegli **Aggiorna policy** per concludere.

1. Se utilizzi una [chiave KMS](https://aws.amazon.com/kms/) personalizzata per la crittografia dei volumi Amazon EBS, personalizza il ruolo IAM secondo necessità. Ad esempio, completa le seguenti operazioni:

   1. Nel pannello di navigazione a sinistra, seleziona **Policy**.

   1. Nella pagina **Policy**, scegli **Crea policy**.

   1. Nella pagina **Crea policy**, scegli la scheda **JSON**.

   1. Copia e incolla il codice seguente nell'editor, sostituendo *custom-key-arn* con l'[ARN della chiave KMS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-key) personalizzata.

      ```
      {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "kms:CreateGrant",
                  "kms:ListGrants",
                  "kms:RevokeGrant"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"],
                "Condition": {
                  "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                  }
                }
              },
              {
                "Effect": "Allow",
                "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncrypt*",
                  "kms:GenerateDataKey*",
                  "kms:DescribeKey"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
              }
            ]
          }
      ```

   1. Scegli **Successivo: Tag**.

   1. Nella pagina **Add tags (optional)** (Aggiungi tag, facoltativo), seleziona **Next: Review** (Successivo: esamina).

   1. Per **Nome** immettere un nome univoco per la policy (ad esempio *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy*).

   1. Scegli **Crea policy**.

   1. Nel pannello di navigazione a sinistra, seleziona **Ruoli**.

   1. Sceglila ***AmazonEKS\$1EBS\$1CSI\$1DriverRole***nella console per aprirla e modificarla.

   1. Dall'elenco a discesa **Aggiungi autorizzazioni**, scegli **Collega policy**.

   1. Nella casella **Filtra policy**, inserisci *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy*.

   1. Seleziona la casella di controllo a sinistra della *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy* restituita dalla ricerca.

   1. Scegli **Collega policy**.

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

1. Visualizzare l’URL del gestore OIDC del cluster. Sostituire *my-cluster* con il nome del cluster. Se l'output dal comando è `None`, rivedi i **Prerequisiti**.

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

1. Crea il ruolo IAM concedendo l'autorizzazione per l'operazione `AssumeRoleWithWebIdentity`.

   1. Copiare i contenuti seguenti in un file denominato `aws-ebs-csi-driver-trust-policy.json`. Sostituisci *111122223333* con l'ID del tuo account. Sostituire *EXAMPLED539D4633E53DE1B71EXAMPLE* e *region-code* con i valori restituiti nella fase precedente.

      ```
      {
            "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:ebs-csi-controller-sa"
                  }
                }
              }
            ]
          }
      ```

   1. Creare il ruolo. È possibile modificare *AmazonEKS\$1EBS\$1CSI\$1DriverRole* con un nome diverso. Se modifichi il valore, assicurati di modificarlo anche nelle fasi successive.

      ```
      aws iam create-role \
            --role-name AmazonEKS_EBS_CSI_DriverRole \
            --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
      ```

1. Allega una politica. AWS mantiene una politica AWS gestita oppure è possibile creare una politica personalizzata. AWS Associa la politica gestita al ruolo con il seguente comando.

   ```
   aws iam attach-role-policy \
         --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicyV2 \
         --role-name AmazonEKS_EBS_CSI_DriverRole
   ```

1. Se utilizzi una [chiave KMS](https://aws.amazon.com/kms/) personalizzata per la crittografia dei volumi Amazon EBS, personalizza il ruolo IAM secondo necessità. Ad esempio, completa le seguenti operazioni:

   1. Copia e incolla il codice seguente in un nuovo file `kms-key-for-encryption-on-ebs.json`. Sostituisci *custom-key-arn* con l'[ARN della chiave KMS personalizzata](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-key).

      ```
      {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "kms:CreateGrant",
                  "kms:ListGrants",
                  "kms:RevokeGrant"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"],
                "Condition": {
                  "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                  }
                }
              },
              {
                "Effect": "Allow",
                "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncrypt*",
                  "kms:GenerateDataKey*",
                  "kms:DescribeKey"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
              }
            ]
          }
      ```

   1. Crea la policy. È possibile modificare *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy* con un nome diverso. Se esegui questa operazione, tuttavia, assicurati di modificare il nome anche nelle fasi successive.

      ```
      aws iam create-policy \
            --policy-name KMS_Key_For_Encryption_On_EBS_Policy \
            --policy-document file://kms-key-for-encryption-on-ebs.json
      ```

   1. Collega la policy IAM al ruolo con il comando seguente. Sostituisci *111122223333* con l'ID del tuo account.

      ```
      aws iam attach-role-policy \
            --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \
            --role-name AmazonEKS_EBS_CSI_DriverRole
      ```

Ora che è stato creato il ruolo IAM del driver CSI di Amazon EBS, è possibile passare alla sezione successiva. Quando si implementa il componente aggiuntivo con il ruolo IAM, questo crea e viene configurato per utilizzare un account di servizio denominato `ebs-csi-controller-sa`. L’account di servizio è associato a un `clusterrole` Kubernetes a cui sono assegnate le autorizzazioni Kubernetes richieste.

## Fase 2: ottenere il driver CSI di Amazon EBS
<a name="managing-ebs-csi"></a>

Consigliamo di installare il driver CSI di Amazon EBS attraverso il componente aggiuntivo di Amazon EKS per migliorare la sicurezza e ridurre le attività. Per aggiungere un componente aggiuntivo di Amazon EKS al cluster, consulta [Creare un componente aggiuntivo Amazon EKS](creating-an-add-on.md). Per ulteriori informazioni sui componenti aggiuntivi, consulta [Componenti aggiuntivi Amazon EKS](eks-add-ons.md).

**Importante**  
Prima di aggiungere il driver Amazon EBS come componente aggiuntivo di Amazon EKS, verificare che nel cluster non sia installata una versione autogestita del driver. In tal caso, vedi[Disinstallazione di un driver Amazon EBS CSI autogestito](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#uninstalling-the-ebs-csi-driver)sul GitHub.

**Nota**  
Per impostazione predefinita, il ruolo RBAC utilizzato dal CSI di EBS dispone delle autorizzazioni per modificare i nodi per supportare la funzionalità di rimozione delle macchie. A causa delle limitazioni di Kubernetes RBAC, ciò consente anche di modificare qualsiasi altro nodo del cluster. Il grafico Helm ha un parametro (`node.serviceAccount.disableMutation`) che disabilita la modifica delle autorizzazioni RBAC del nodo per l'account del servizio. ebs-csi-node Se abilitate, le funzioni del driver come la rimozione delle macchie non funzioneranno.

[In alternativa, se desideri un'installazione autogestita del driver CSI di Amazon EBS, consulta Installazione su.](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md) GitHub

## Fase 3: implementazione di un’applicazione di esempio
<a name="ebs-sample-app"></a>

Puoi implementare diverse app di esempio e modificarle in base alle tue esigenze. Per ulteriori informazioni, consulta [Kubernetes](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/tree/master/examples/kubernetes) Examples su. GitHub