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)
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
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
eksctl
-
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
-
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: -
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"] } ] }
-
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
-
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
-
Apri la IAM console all'indirizzo. https://console.aws.amazon.com/iam/
-
Nel pannello di navigazione a sinistra, seleziona Ruoli.
-
Nella pagina Ruoli, seleziona Crea ruolo.
-
Nella pagina Select trusted entity (Seleziona entità attendibile), esegui le operazioni seguenti:
-
Nella sezione Tipo di identità attendibile, scegli Identità Web.
-
Per provider di identità, scegli OpenID Connect provider URL per il tuo cluster (come mostrato nella sezione Panoramica in AmazonEKS).
-
Per Pubblico, scegli
sts.amazonaws.com
. -
Scegli Next (Successivo).
-
-
Nella pagina Add permissions (Aggiungi autorizzazioni), esegui le operazioni seguenti:
-
Nella casella Filtra policy, inserisci
AmazonEBSCSIDriverPolicy
. -
Seleziona la casella di controllo a sinistra della
AmazonEBSCSIDriverPolicy
restituita dalla ricerca. -
Scegli Next (Successivo).
-
-
Nella pagina Name, review, and create (Assegna un nome, rivedi e crea), esegui le operazioni seguenti:
-
Per il nome del ruolo, inserisci un nome univoco per il tuo ruolo, ad esempio
AmazonEKS_EBS_CSI_DriverRole
. -
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.
-
Scegliere Crea ruolo.
-
-
Dopo aver creato il ruolo, sceglilo nella console in modo da 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"
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"
-
Scegli Aggiorna policy per concludere.
-
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: -
Nel pannello di navigazione a sinistra, seleziona Policy.
-
Nella pagina Policy, scegli Crea policy.
-
Nella pagina Crea policy, scegli la JSONscheda.
-
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"] } ] }
-
Scegli Successivo: Tag.
-
Nella pagina Add tags (optional) (Aggiungi tag, facoltativo), seleziona Next: Review (Successivo: esamina).
-
Per Nome, inserisci un nome univoco per la tua politica (ad esempio,
KMS_Key_For_Encryption_On_EBS_Policy
). -
Scegli Create Policy (Crea policy).
-
Nel pannello di navigazione a sinistra, seleziona Ruoli.
-
Seleziona
AmazonEKS_EBS_CSI_DriverRole
nella console per aprirla e modificarla. -
Dall'elenco a discesa Aggiungi autorizzazioni, scegli Collega policy.
-
Nella casella Politiche di filtro, inserisci
KMS_Key_For_Encryption_On_EBS_Policy
. -
Seleziona la casella di controllo a sinistra del
KMS_Key_For_Encryption_On_EBS_Policy
che è stato restituito nella ricerca. -
Scegli Collega policy.
-
AWS CLI
-
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
-
Crea il IAM ruolo, concedendo l'
AssumeRoleWithWebIdentity
azione.-
Copia il seguente contenuto in un file denominato
aws-ebs-csi-driver-trust-policy.json
. Replace (Sostituisci)111122223333
con l'ID del tuo account. Replace (Sostituisci)EXAMPLED539D4633E53DE1B71EXAMPLE
eregion-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" } } } ] }
-
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"
-
-
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
-
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: -
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"] } ] }
-
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
-
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 clusterrole
a 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
In alternativa, se desideri un'installazione autogestita del EBS CSI driver Amazon, consulta Installazione
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