Archivia Kubernetes volumi con Amazon EBS - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

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 Kubernetes volumi 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 Kubernetesvolumi che crei. Il EBS CSI driver Amazon crea EBS volumi Amazon per questi tipi di Kubernetes volumi: volumi generici effimeri e volumi persistenti.

Considerazioni

  • Non puoi montare EBS volumi Amazon su Pods Fargate.

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

Importante

Per utilizzare la funzionalità snapshot del EBS CSI driver Amazon, devi installare lo snapshotter esterno prima o dopo l'installazione del componente aggiuntivo. I componenti dei dispositivi esterni di acquisizione snapshot devono essere installati secondo l'ordine seguente:

Per ulteriori informazioni, consulta CSISnapshotter on. GitHub

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 provider AWS Identity and Access Management (IAM) OpenID Connect (OIDC) esistente 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 PodSecurityPolicy con restrizioni a livello di cluster, assicurati che al componente aggiuntivo siano concesse autorizzazioni sufficienti per essere implementato. Per le autorizzazioni richieste da ciascun componente aggiuntivoPod, consultate la definizione del relativo manifesto del componente aggiuntivo 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 Configurazione dell'autorizzazione driver su GitHub.

Nota

Podsavrà accesso alle autorizzazioni assegnate al IAM ruolo a meno che tu non blocchi l'accesso a. IMDS 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. Puoi utilizzare eksctl, la AWS Management Console o la AWS CLI.

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 Configurazione delle autorizzazioni del driver su GitHub.

eksctl
Per creare il tuo IAM ruolo nel EBS CSI plug-in Amazon con eksctl
  1. Crea un IAM ruolo e allega una policy. 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 tuo cluster si trova negli AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali) Regioni AWS, 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. Sostituiscilo 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. È possibile modificare 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. Sostituisci 111122223333 con l'ID del tuo account. Se il tuo cluster si trova negli AWS GovCloud Stati Uniti orientali o AWS GovCloud negli Stati Uniti occidentali Regioni AWS, 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
Per creare il tuo IAM ruolo nel EBS CSI plugin Amazon con 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 il provider di identità, scegli il OpenID Connectprovider 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 Role name (Nome ruolo), inserisci un nome univoco per il 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 Tagging IAM resources 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. region-codeSostituiscilo con Regione AWS quello in cui si trova il cluster. Sostituiscilo 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 codice seguente 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 immettere un nome univoco per la policy (ad esempio KMS_Key_For_Encryption_On_EBS_Policy).

    8. Scegli Crea policy.

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

    10. Seleziona AmazonEKS_EBS_CSI_DriverRolenella console per aprirlo e modificarlo.

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

    12. Nella casella Filtra policy, inserisci KMS_Key_For_Encryption_On_EBS_Policy.

    13. Seleziona la casella di controllo a sinistra della KMS_Key_For_Encryption_On_EBS_Policy restituita dalla ricerca.

    14. Scegli Collega policy.

AWS CLI
Per creare il tuo IAM ruolo nel EBS CSI plugin Amazon con AWS CLI
  1. Visualizza il OIDC provider del tuo clusterURL. 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
  2. Crea il IAM ruolo, concedendo l'AssumeRoleWithWebIdentityazione.

    1. Copia i contenuti seguenti in un file denominato aws-ebs-csi-driver-trust-policy.json. Sostituisci 111122223333 con l'ID del tuo account. Sostituisci EXAMPLED539D4633E53DE1B71EXAMPLE e region-code con i valori restituiti nella fase precedente. Se il tuo cluster si trova negli AWS GovCloud Stati Uniti orientali o AWS GovCloud negli Stati Uniti occidentali Regioni AWS, sostituiscilo con. arn:aws: 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. È possibile modificare 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 policy. 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 negli AWS GovCloud Stati Uniti orientali o AWS GovCloud negli Stati Uniti occidentali Regioni AWS, 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. Sostituiscilo 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. È possibile modificare 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. Sostituisci 111122223333 con l'ID del tuo account. Se il tuo cluster si trova negli AWS GovCloud Stati Uniti orientali o AWS GovCloud negli Stati Uniti occidentali Regioni AWS, 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 un clusterrole Kubernetes a cui vengono assegnate le autorizzazioni Kubernetes necessarie.

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, consultaCreazione di 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 EBS CSI driver Amazon autogestito su. GitHub

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

Fase 3: Implementa un'applicazione di esempio

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