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à.
Usa lo storage del file system Amazon S3 con il driver CSI Amazon EFS
S3 Files è un file system condiviso che collega qualsiasi AWS elaborazione direttamente ai tuoi dati in Amazon S3. Fornisce un accesso rapido e diretto a tutti i dati S3 sotto forma di file con semantica completa del file system e prestazioni a bassa latenza, senza che i dati escano mai da S3. Ciò significa che le applicazioni, gli agenti e i team basati su file possono accedere e lavorare con i dati S3 come file system utilizzando gli strumenti da cui già dipendono. Il driver Amazon EFS Container Storage Interface (CSI)
Considerazioni
-
Il driver CSI per Amazon EFS non è compatibile con le immagini di container basate su Windows.
-
EKS Fargate non supporta i file S3.
-
Il driver CSI per Amazon EFS non è compatibile con Amazon EKS Hybrid Nodes.
-
Il supporto di Amazon S3 Files nel driver CSI di Amazon EFS inizia dalla versione 3.0.0.
Prerequisiti
-
Il driver CSI Amazon EFS necessita delle autorizzazioni AWS Identity and Access Management (IAM).
-
AWS suggerisce di utilizzare EKS Pod Identities. Per ulteriori informazioni, consulta Panoramica sulla configurazione delle associazioni EKS Pod Identity.
-
Per informazioni sui ruoli IAM per gli account di servizio e su come configurare un gestore OpenID Connect (OIDC) IAM per il cluster, consultare Per creare un provider di identità IAM OIDC per il cluster.
-
-
Versione
2.12.3o successiva o versione1.27.160o successiva dell'interfaccia a riga di AWS comando (AWS CLI) installata e configurata sul dispositivo o. AWS CloudShell Per verificare la versione attuale, usaaws --version | cut -d / -f2 | cut -d ' ' -f1. I gestori di pacchetti comeyumapt-get, o Homebrew per macOS sono spesso diverse versioni dell'ultima versione della CLI AWS . Per installare la versione più recente, consulta Installazione e configurazione rapida con aws configure nella Guida per l'utente dell'interfaccia a riga di AWS comando. La versione AWS CLI installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarlo, consulta Installazione della AWS CLI nella tua home directory nella Guida 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 di Kubernetes del cluster. Ad esempio, se la versione del cluster è1.29, puoi usarekubectlversione1.28,1.29o1.30. Per installare o aggiornarekubectl, consulta Impostazione di kubectl e eksctl:
Fase 1: Creare ruoli IAM
Il driver CSI per Amazon EFS richiede le autorizzazioni IAM per interagire con il file system. Il driver EFS CSI utilizza due account di servizio con ruoli IAM separati:
-
efs-csi-controller-sa— utilizzato dal controller, richiedeAmazonS3FilesCSIDriverPolicy. -
efs-csi-node-sa— usato dal nodo daemonset, richiede:-
AmazonS3ReadOnlyAccess— consente lo streaming di letture direttamente dal bucket S3 per un throughput più elevato. -
AmazonElasticFileSystemsUtils— consente la pubblicazione dei log di efs-utils su CloudWatch Amazon per la visibilità delle operazioni di montaggio e una risoluzione più semplice dei problemi.
-
Nota
Se desideri utilizzare sia il file system Amazon S3 che lo storage Amazon EFS, devi collegare sia le policy gestite che le policy AmazonEFSCSIDriverPolicy gestite al ruolo di controller. AmazonS3FilesCSIDriverPolicy Per ulteriori informazioni sullo storage Amazon EFS, consultaUtilizzo dell’archiviazione di file system elastici con Amazon EFS.
Per implementare questa procedura, è possibile utilizzare uno dei seguenti strumenti:
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
eksctl
Se si utilizza Pod Identity
Esegui i seguenti comandi per creare ruoli IAM e associazioni di identità Pod coneksctl. Sostituisci my-cluster con il tuo valore.
export cluster_name=my-cluster # Create the controller role eksctl create podidentityassociation \ --service-account-name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name AmazonEKS_EFS_CSI_ControllerRole \ --permission-policy-arns arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy # Create the node role eksctl create podidentityassociation \ --service-account-name efs-csi-node-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name AmazonEKS_EFS_CSI_NodeRole \ --permission-policy-arns arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess,arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils
Se si utilizzano ruoli IAM per gli account di servizio
Esegui i seguenti comandi per creare ruoli IAM coneksctl. Sostituiscilo my-cluster con il nome del cluster e region-code con il codice AWS regionale.
export cluster_name=my-cluster export region_code=region-code # Create the controller role export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $controller_role_name \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --approve \ --region $region_code # Create the node role export node_role_name=AmazonEKS_EFS_CSI_NodeRole eksctl create iamserviceaccount \ --name efs-csi-node-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $node_role_name \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --approve \ --region $region_code
Console di gestione AWS
Esegui quanto segue per creare un ruolo IAM con Console di gestione AWS.
-
Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.
-
Nel pannello di navigazione a sinistra, seleziona Ruoli.
-
Nella pagina Ruoli, seleziona Crea ruolo.
-
Nella pagina Seleziona un’entità attendibile, esegui le operazioni seguenti:
-
Se si utilizza EKS Pod Identity:
-
Nella sezione Tipo di entità affidabile, scegli AWS servizio.
-
Nel menu a discesa Servizio o caso d’uso, scegliere EKS.
-
Nella sezione Caso d’uso, scegliere EKS - Pod Identity.
-
Scegli Next (Successivo).
-
-
Se si utilizzano ruoli IAM per gli account di servizio:
-
Nella sezione Tipo di identità attendibile, scegli Identità Web.
-
Per Identity provider (Provider di identità), scegli URL del provider OpenID Connect per il cluster (come mostrato nella scheda Overview (Panoramica) in Amazon EKS).
-
Per Pubblico, scegli
sts.amazonaws.com. -
Scegli Next (Successivo).
-
-
-
Nella pagina Add permissions (Aggiungi autorizzazioni), esegui le operazioni seguenti:
-
Nella casella Filtra policy, inserisci
AmazonS3FilesCSIDriverPolicy. -
Seleziona la casella di controllo a sinistra della politica restituita nella ricerca.
-
Scegli Next (Successivo).
-
-
Nella pagina Name, review, and create (Assegna un nome, rivedi e crea), esegui le operazioni seguenti:
-
Per Nome ruolo, inserisci un nome univoco per il ruolo, ad esempio
AmazonEKS_EFS_CSI_ControllerRole. -
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 nella Guida per l’utente di IAM.
-
Scegli Crea ruolo.
-
-
Dopo aver creato il ruolo:
-
Se si utilizza EKS Pod Identity:
-
Aprire la Console Amazon EKS
. -
Nel riquadro di navigazione a sinistra, selezionare Cluster, quindi selezionare il nome del cluster per cui configurare l’associazione EKS Pod Identity.
-
Scegliere la scheda Accesso.
-
In Associazioni Pod Identity, scegliere Crea.
-
Scegliere il menu a discesa Ruolo IAM e selezionare il ruolo appena creato.
-
Scegliere il campo Namespace Kubernetes e inserire
kube-system. -
Scegliere il campo Account del servizio Kubernetes e inserire
efs-csi-controller-sa. -
Scegli Create (Crea).
-
Per ulteriori informazioni sulla creazione di associazioni Pod Identity, consultare Crea un'associazione Pod Identity (AWS Console).
-
Ripeti i passaggi precedenti per creare un secondo ruolo per l'account del servizio del nodo. Nella pagina Aggiungi autorizzazioni, allega
AmazonS3ReadOnlyAccesseAmazonElasticFileSystemsUtilsinvece. Quindi crea un'associazione Pod Identity conefs-csi-node-saper il campo dell'account del servizio Kubernetes.
-
-
Se si utilizzano ruoli IAM per gli account di servizio:
-
Scegliere il ruolo per aprirlo per la modifica.
-
Scegli la scheda Relazioni di attendibilità e quindi Modifica policy di attendibilità.
-
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-code>Sostituiscilo 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:efs-csi-controller-sa", -
Scegli Aggiorna policy per concludere.
-
Ripeti i passaggi precedenti per creare un secondo ruolo per l'account del servizio del nodo. Nella pagina Aggiungi autorizzazioni, allega
AmazonS3ReadOnlyAccesseAmazonElasticFileSystemsUtilsinvece. Nella politica di attendibilità, utilizzaefs-csi-node-sail valore della:subcondizione.
-
-
AWS CLI
Esegui i seguenti comandi per creare ruoli IAM con AWS CLI.
Se si utilizza Pod Identity
-
Creare il ruolo IAM che concede le operazioni
AssumeRoleeTagSessional serviziopods.eks.amazonaws.com.-
Copiare i seguenti contenuti in un file denominato
aws-efs-csi-driver-trust-policy-pod-identity.json.{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] } -
Crea il ruolo. Sostituisci
my-clustercon il nome del cluster.export cluster_name=my-cluster export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole aws iam create-role \ --role-name $controller_role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json"
-
-
Allega la policy AWS gestita richiesta al ruolo del controller.
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --role-name $controller_role_name -
Crea il ruolo IAM del nodo utilizzando la stessa policy di fiducia.
export node_role_name=AmazonEKS_EFS_CSI_NodeRole aws iam create-role \ --role-name $node_role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json" -
Allega le politiche AWS gestite richieste al ruolo del nodo.
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name $node_role_name aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --role-name $node_role_name -
Esegui i seguenti comandi per creare le associazioni Pod Identity. Sostituisci
<111122223333>con l'ID del tuo account.aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$controller_role_name --namespace kube-system --service-account efs-csi-controller-sa aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$node_role_name --namespace kube-system --service-account efs-csi-node-sa
-
Per ulteriori informazioni sulla creazione di associazioni Pod Identity, consultare Crea un'associazione Pod Identity (AWS Console).
Se si utilizzano ruoli IAM per gli account di servizio
-
Visualizzare l’URL del gestore OIDC del cluster. Sostituisci
my-clustercon il nome del cluster.export cluster_name=my-cluster aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output textDi seguito viene riportato un output di esempio.
https://oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>Se l'output dal comando è
None, rivedi i Prerequisiti. -
Crea il ruolo IAM per l'account del servizio controller.
-
Copia i seguenti contenuti in un file denominato
controller-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.<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:efs-csi-controller-sa" } } } ] } -
Creare il ruolo.
export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole aws iam create-role \ --role-name $controller_role_name \ --assume-role-policy-document file://"controller-trust-policy.json"
-
-
Allega la policy AWS gestita richiesta al ruolo del controller.
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --role-name $controller_role_name -
Crea il ruolo IAM per l'account del servizio del nodo.
-
Copia i seguenti contenuti in un file denominato
node-trust-policy.json. Sostituisci<111122223333>con l'ID del tuo account. Sostituisci<EXAMPLED539D4633E53DE1B71EXAMPLE>e<region-code>con i valori restituiti nel passaggio 1.{ "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>:sub": "system:serviceaccount:kube-system:efs-csi-node-sa", "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com" } } } ] } -
Crea il ruolo.
export node_role_name=AmazonEKS_EFS_CSI_NodeRole aws iam create-role \ --role-name $node_role_name \ --assume-role-policy-document file://"node-trust-policy.json"
-
-
Allega le politiche AWS gestite richieste al ruolo del nodo.
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name $node_role_name aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --role-name $node_role_name
Nota
La AmazonS3ReadOnlyAccess policy garantisce l'accesso in lettura a tutti i bucket S3. Per limitare l'accesso a bucket specifici, puoi scollegarlo e sostituirlo con una policy in linea basata su tag. Per ulteriori dettagli, consulta la documentazione della policy IAM del driver CSI GitHub di Amazon EFS
Fase 2: ottenere il driver CSI per Amazon EFS
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 Creare un componente aggiuntivo Amazon EKS. Per ulteriori informazioni sui componenti aggiuntivi, consulta Componenti aggiuntivi Amazon EKS. Se non riesci a utilizzare il componente aggiuntivo Amazon EKS, ti consigliamo di segnalare un problema sul motivo per cui non puoi farlo all'archivio della roadmap GitHub di Containers
Importante
Prima di aggiungere il driver Amazon EFS come componente aggiuntivo di Amazon EKS, verificare che nel cluster non sia installata una versione autogestita del driver. In tal caso, consulta Disinstallazione del driver Amazon EFS CSI
In alternativa, se desideri un'installazione autogestita del driver Amazon EFS CSI, consulta Installazione
Fase 3: creare un file system Amazon S3
Per creare un file system Amazon S3, consulta Creare un file system Amazon S3 per Amazon
Fase 4: implementazione di un’applicazione di esempio
Puoi implementare diverse app di esempio e modificarle in base alle tue esigenze. Per ulteriori informazioni, consulta Esempi