Driver CSI per Amazon EFS - 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à.

Driver CSI per Amazon EFS

Amazon Elastic File System (Amazon EFS) fornisce un'archiviazione di file serverless e completamente elastica in modo da poter condividere i dati dei file senza dover fornire o gestire la capacità e le prestazioni di archiviazione. Il driver Amazon EFS Container Storage Interface (CSI) fornisce un'interfaccia CSI che consente Kubernetes ai cluster in esecuzione di AWS gestire il ciclo di vita dei file system Amazon EFS. Questo argomento illustra come implementare il driver CSI per Amazon EBS nel cluster Amazon EKS.

Considerazioni
  • Il driver CSI per Amazon EFS non è compatibile con le immagini container basate su Windows.

  • Non è possibile utilizzare il provisioning dinamico per volumi persistenti con i nodi Fargate, ma è possibile utilizzare il provisioning statico.

  • Il provisioning dinamico richiede 1.2 o una versione successiva del driver. Puoi utilizzare il provisioning statico per volumi persistenti utilizzando la versione 1.1 del driver su qualsiasi versione del cluster Amazon EKS supportata.

  • La versione 1.3.2 o successiva di questo driver supporta l'architettura Arm64, incluse le istanze basate su Graviton di Amazon EC2.

  • La versione 1.4.2 o successiva di questo driver supporta l'uso di FIPS per il montaggio di file system.

  • Osserva le quote delle risorse per Amazon EFS. Ad esempio, è possibile creare una quota di 1.000 punti di accesso per ogni file system Amazon EFS. Per ulteriori informazioni, consulta le Quote di risorse di Amazon EFS che non puoi modificare.

Prerequisiti
  • 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 Creazione di un fornitore OIDC IAM per il cluster.

  • Versione 2.12.3 o successiva o versione 1.27.160 o successiva di AWS Command Line Interface (AWS CLI) installato e configurato sul dispositivo o AWS CloudShell. Per verificare la versione attuale, usa aws --version | cut -d / -f2 | cut -d ' ' -f1. I programmi di gestione dei pacchetti, come yum, apt-get o Homebrew per macOS, spesso sono aggiornati a versioni precedenti della AWS CLI. Per installare la versione più recente, consulta le sezioni Installazione, aggiornamento e disinstallazione della AWS CLI e Configurazione rapida con aws configure nella Guida per l'utente dell'AWS Command Line Interface . La AWS CLI versione installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarla, consulta Installazione nella home directory nella Guida AWS CLI per l'AWS CloudShell utente.

  • Lo strumento a riga di comando kubectl è installato sul dispositivo o AWS CloudShell. La versione può essere uguale oppure immediatamente precedente o successiva alla versione Kubernetes del cluster. Ad esempio, se la versione del cluster è 1.28, puoi usare kubectl versione 1.27, 1.28 o 1.29. Per installare o aggiornare kubectl, consulta Installazione o aggiornamento di kubectl:

Nota

Un file system Amazon EFS Pod in esecuzione monta AWS Fargate automaticamente un file system Amazon EFS.

Creazione di un ruolo IAM

Il driver CSI per Amazon EFS richiede le autorizzazioni IAM per interagire con il file system. Crea un ruolo IAM e associa ad esso la policy AWS gestita richiesta. 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 componente aggiuntivo di Amazon EKS. Per informazioni dettagliate sulle installazioni autogestite, consulta Set up driver permission su GitHub.

eksctl

Creazione del ruolo IAM del plugin CSI per Amazon EFS con eksctl

Per creare il ruolo IAM, eseguire i comandi seguenti. Sostituisci my-cluster con il nome del cluster e AmazonEKS_EFS_CSI_DriverRole con il nome del ruolo.

export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --approve TRUST_POLICY=$(aws iam get-role --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \ sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/') aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"
AWS Management Console
Per creare il ruolo IAM del driver CSI di Amazon EFS con AWS Management Console
  1. Apri la console IAM 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 Identity provider (Provider di identità), scegli l'URL del provider OpenID Connect per il cluster (come riportato in Overview [Panoramica] in Amazon EKS).

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

    4. Seleziona Avanti.

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

    1. Nella casella Filtra policy, inserisci AmazonEFSCSIDriverPolicy.

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

    3. Seleziona Avanti.

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

    2. 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 Applicazione di tag alle risorse IAM nella Guida per l'utente di IAM.

    3. Scegli 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"

    Aggiungi la riga seguente sopra la riga precedente. region-codeSostituiscilo con Regione AWS quello in cui si trova il cluster. Sostituisci EXAMPLED539D4633E53DE1B71EXAMPLE con il gestore di ID OIDC del tuo cluster.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
  10. Modifica l'operatore Condition da "StringEquals" a "StringLike".

  11. Scegli Aggiorna policy per concludere.

AWS CLI
Per creare il ruolo IAM del driver CSI di Amazon EFS con AWS CLI
  1. Visualizza l'URL del provider 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
  2. Crea il ruolo IAM che concede l'autorizzazione per l'operazione AssumeRoleWithWebIdentity.

    1. Copia i contenuti seguenti in un file denominato aws-efs-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 (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": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
    2. Crea il ruolo. È possibile modificare AmazonEKS_EFS_CSI_DriverRole con un nome diverso. In tal caso, assicurati di modificarlo anche nelle fasi successive.

      aws iam create-role \ --role-name AmazonEKS_EFS_CSI_DriverRole \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
  3. Allega la politica AWS gestita richiesta al ruolo con il comando seguente. 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/AmazonEFSCSIDriverPolicy \ --role-name AmazonEKS_EFS_CSI_DriverRole

Installazione del driver Amazon EFS CSI

Consigliamo di installare il driver Amazon EFS CSI attraverso il componente aggiuntivo di Amazon EKS. Per aggiungere un componente aggiuntivo di Amazon EKS al cluster, consulta Creazione di un componente aggiuntivo. Per ulteriori informazioni sui componenti aggiuntivi, consulta Componenti aggiuntivi Amazon EKS. Se non riesci a utilizzare il componente aggiuntivo di Amazon EKS, ti invitiamo a segnalare il problema in Roadmap dei container GitHub.

In alternativa, se desideri un'installazione autogestita del driver Amazon EFS CSI, consulta Installazionesu GitHub.

Creazione di un file system Amazon EFS

Per creare un file system Amazon EFS, consulta Creazione di un sistema di file  Amazon EFS per Amazon EKS su GitHub.

Implementazione di un'applicazione di esempio

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