Archivia volumi Kubernetes con Amazon EBS - Amazon EKS

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

Archivia volumi Kubernetes con Amazon EBS

Il driver Amazon Elastic Block Store (AmazonEBS) Container Storage Interface (CSI) gestisce il ciclo di vita EBS dei volumi Amazon come storage per i volumi Kubernetes che crei. Il EBS CSI driver Amazon crea EBS volumi Amazon per questi tipi di Kubernetes volumi: volumi effimeri generici e volumi persistenti.

Considerazioni

  • Non puoi montare EBS volumi Amazon su Fargate Pods.

  • Puoi eseguire il EBS CSI controller Amazon sui nodi Fargate, ma sul nodo Amazon EBS CSI DaemonSet può essere eseguito solo su EC2 istanze Amazon.

  • Verrà fornito supporto per l'ultima versione del componente aggiuntivo e una versione precedente. I bug o le vulnerabilità rilevati nell'ultima versione verranno riportati alla versione precedente in una nuova versione secondaria.

Importante

Per utilizzare la funzionalità snapshot del EBS CSI driver Amazon, devi prima installare il controller CSI snapshot. Per ulteriori informazioni, consulta Abilita la funzionalità snapshot per i volumi CSI.

Prerequisiti

  • 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
  • Un AWS Identity and Access Management esistente (IAM) OpenID Connect (OIDC) provider per il tuo cluster. Per determinare se disponi già di un provider IAM o per crearne uno, consulta Crea un IAM OIDC provider per il tuo cluster.

  • Se utilizzi un cluster con restrizioni a livello di cluster PodSecurityPolicy, assicurati che al componente aggiuntivo siano concesse le autorizzazioni sufficienti per essere distribuito. Per le autorizzazioni richieste da ciascun componente aggiuntivo Pod, vedi la definizione del manifesto del componente aggiuntivo pertinente su. GitHub

Fase 1: Creare un ruolo IAM

Il EBS CSI plug-in Amazon richiede IAM le autorizzazioni per effettuare chiamate per tuo AWS APIs conto. Se non esegui questi passaggi, il tentativo di installazione del componente aggiuntivo e l'esecuzione kubectl describe pvc verranno visualizzati failed to provision volume with StorageClass insieme a un errore. could not create volume in EC2: UnauthorizedOperation Per ulteriori informazioni, consulta Configurare l'autorizzazione del conducente su GitHub.

Nota

Pods avrà accesso alle autorizzazioni assegnate al IAM ruolo a meno che tu non blocchi l'accesso aIMDS. Per ulteriori informazioni, consulta Proteggi EKS i cluster Amazon con le migliori pratiche.

La procedura seguente mostra come creare un IAM ruolo e allegare ad esso la politica AWS gestita. Per implementare questa procedura, puoi utilizzare uno di questi strumenti:

Nota

I passaggi specifici di questa procedura sono stati scritti per l'utilizzo del driver come EKS componente aggiuntivo Amazon. Per utilizzare il driver come componente aggiuntivo autogestito occorre una procedura differente. Per ulteriori informazioni, consulta Configurare le autorizzazioni dei conducenti su GitHub.

eksctl

  1. Crea un IAM ruolo e allega una politica. AWS mantiene una politica AWS gestita oppure è possibile creare una politica personalizzata. È possibile creare un IAM ruolo e allegare la politica AWS gestita con il seguente comando. Replace (Sostituisci) my-cluster con il nome del tuo cluster. Il comando distribuisce uno AWS CloudFormation stack che crea un IAM ruolo e gli allega la IAM policy. Se il cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali), sostituiscilo con. arn:aws: arn:aws-us-gov:

    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/AmazonEBSCSIDriverPolicy \ --approve
  2. Se utilizzi una KMSchiave personalizzata per la crittografia sui tuoi EBS volumi Amazon, personalizza il IAM ruolo in base alle esigenze. Ad esempio, completa le seguenti operazioni:

    1. Copia e incolla il codice seguente in un nuovo file kms-key-for-encryption-on-ebs.json. Replace (Sostituisci) custom-key-arn con la KMSchiave personalizzataARN.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    2. Crea la policy. Puoi cambiare KMS_Key_For_Encryption_On_EBS_Policy 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
    3. Allega la IAM policy al ruolo con il seguente comando. Replace (Sostituisci) 111122223333 con l'ID del tuo account. Se il tuo cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali), arn:aws: sostituiscilo con. arn:aws-us-gov:

      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

AWS Management Console

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

  2. Nel pannello di navigazione a sinistra, seleziona Ruoli.

  3. Nella pagina Ruoli, seleziona Crea ruolo.

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

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

    2. Per provider di identità, scegli OpenID Connect provider URL per il tuo cluster (come mostrato nella sezione Panoramica in AmazonEKS).

    3. Per Pubblico, scegli sts.amazonaws.com.

    4. Scegli Next (Successivo).

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

    1. Nella casella Filtra policy, inserisci AmazonEBSCSIDriverPolicy.

    2. Seleziona la casella di controllo a sinistra della AmazonEBSCSIDriverPolicy restituita dalla ricerca.

    3. Scegli Next (Successivo).

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

    1. Per il nome del ruolo, inserisci un nome univoco per il tuo ruolo, ad esempio AmazonEKS_EBS_CSI_DriverRole.

    2. In Aggiungi tag (facoltativo), aggiungi metadati al ruolo collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag inIAM, consulta Etichettare IAM le risorse nella Guida per l'IAMutente.

    3. Scegliere Crea ruolo.

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

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

  9. 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. Replace (Sostituisci) region-code con la AWS regione in cui si trova il cluster. Replace (Sostituisci) EXAMPLED539D4633E53DE1B71EXAMPLE con l'ID del OIDC provider del cluster.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
  10. Scegli Aggiorna policy per concludere.

  11. Se utilizzi una KMSchiave personalizzata per la crittografia sui tuoi EBS volumi Amazon, personalizza il IAM ruolo in base alle esigenze. Ad esempio, completa le seguenti operazioni:

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

    2. Nella pagina Policy, scegli Crea policy.

    3. Nella pagina Crea policy, scegli la JSONscheda.

    4. Copia e incolla il seguente codice nell'editor, sostituendolo custom-key-arn con la KMSchiave personalizzataARN.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    5. Scegli Successivo: Tag.

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

    7. Per Nome, inserisci un nome univoco per la tua politica (ad esempio, KMS_Key_For_Encryption_On_EBS_Policy).

    8. Scegli Create Policy (Crea policy).

    9. Nel pannello di navigazione a sinistra, seleziona Ruoli.

    10. Seleziona AmazonEKS_EBS_CSI_DriverRole nella console per aprirla e modificarla.

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

    12. Nella casella Politiche di filtro, inserisci KMS_Key_For_Encryption_On_EBS_Policy.

    13. Seleziona la casella di controllo a sinistra del KMS_Key_For_Encryption_On_EBS_Policy che è stato restituito nella ricerca.

    14. Scegli Collega policy.

AWS CLI

  1. Visualizza il OIDC provider del tuo clusterURL. Replace (Sostituisci) my-cluster con il nome del tuo 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
  2. Crea il IAM ruolo, concedendo l'AssumeRoleWithWebIdentityazione.

    1. Copia il seguente contenuto in un file denominatoaws-ebs-csi-driver-trust-policy.json. Replace (Sostituisci) 111122223333 con l'ID del tuo account. Replace (Sostituisci) EXAMPLED539D4633E53DE1B71EXAMPLE e region-code con i valori restituiti nel passaggio precedente. Se il cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali), arn:aws: sostituiscilo con. arn:aws-us-gov:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] }
    2. Crea il ruolo. Puoi cambiare AmazonEKS_EBS_CSI_DriverRole 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"
  3. 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. Se il cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali), arn:aws: sostituiscilo con. arn:aws-us-gov:

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole
  4. Se utilizzi una KMSchiave personalizzata per la crittografia sui tuoi EBS volumi Amazon, personalizza il IAM ruolo in base alle esigenze. Ad esempio, completa le seguenti operazioni:

    1. Copia e incolla il codice seguente in un nuovo file kms-key-for-encryption-on-ebs.json. Replace (Sostituisci) custom-key-arn con la KMSchiave personalizzataARN.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    2. Crea la policy. Puoi cambiare KMS_Key_For_Encryption_On_EBS_Policy 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
    3. Allega la IAM policy al ruolo con il seguente comando. Replace (Sostituisci) 111122223333 con l'ID del tuo account. Se il tuo cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali), arn:aws: sostituiscilo con. arn:aws-us-gov:

      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 hai creato il IAM ruolo di EBS CSI driver Amazon, puoi passare alla sezione successiva. Quando distribuisci il componente aggiuntivo con questo IAM ruolo, questo crea e viene configurato per utilizzare un account di servizio denominato. ebs-csi-controller-sa L'account di servizio è associato a Kubernetes clusterrolea cui viene assegnato il valore richiesto Kubernetes autorizzazioni.

Passaggio 2: scarica il EBS CSI driver Amazon

Ti consigliamo di installare il EBS CSI driver Amazon tramite il EKS componente aggiuntivo Amazon per migliorare la sicurezza e ridurre la quantità di lavoro. Per aggiungere un EKS componente aggiuntivo Amazon al tuo cluster, consultaCrea un EKS componente aggiuntivo Amazon. Per ulteriori informazioni sui componenti aggiuntivi, consulta EKSComponenti aggiuntivi Amazon.

Importante

Prima di aggiungere il EBS driver Amazon come EKS componente aggiuntivo Amazon, verifica di non avere una versione autogestita del driver installata nel cluster. In tal caso, consulta Disinstallazione di un driver Amazon EBS CSI autogestito su GitHub.

In alternativa, se desideri un'installazione autogestita del EBS CSI driver Amazon, consulta Installazione su GitHub.

Fase 3: Implementa un'applicazione di esempio

Puoi implementare diverse app di esempio e modificarle in base alle tue esigenze. Per ulteriori informazioni, consulta Kubernetes Examples su GitHub.