Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Utilizzare il volume di archiviazione Kubernetes con Amazon EBS
Nota
Novità: la modalità automatica di Amazon EKS automatizza le attività di routine per l’archiviazione a blocchi. Scopri come effettuare il Implementazione di un carico di lavoro stateful esemplificativo in modalità automatica EKS.
Il driver Container Storage Interface (CSI) di Amazon Elastic Block Store (Amazon EBS)
Considerazioni
-
Non è necessario installare il controller CSI di Amazon EBS sui cluster della modalità automatica EKS.
-
Non è possibile montare volumi Amazon EBS sui pod Fargate.
-
Puoi eseguire il controller Amazon EBS CSI sui nodi Fargate, ma sul nodo Amazon EBS CSI
DaemonSetpuò essere eseguito solo su istanze Amazon EC2. -
I volumi Amazon EBS e il driver CSI di Amazon EBS non sono compatibili con Amazon EKS Hybrid Nodes.
-
Verrà fornito supporto per la versione più recente del componente aggiuntivo e per una versione precedente. I bug o le vulnerabilità rilevati nella versione precedente verranno sottoposti a backport alla versione precedente in una nuova versione secondaria.
-
La modalità automatica EKS richiede classi di archiviazione per utilizzare
ebs---csi---eks.amazonaws.com.rproxy.govskope.cacome provisioner. Il driver CSI di Amazon EBS standard (ebs.csi.aws.com) gestisce i propri volumi separatamente. Per utilizzare i volumi esistenti con la modalità automatica EKS, eseguirne la migrazione tramite snapshot del volume verso una classe di archiviazione che utilizza il provisioner della modalità automatica.
Importante
Per utilizzare la funzionalità snapshot del driver CSI di Amazon EBS, è prima necessario installare il controller di snapshot CSI. Per ulteriori informazioni, consulta Abilitare 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 -
Il driver CSI EBS richiede autorizzazioni AWS IAM.
-
AWS suggerisce di utilizzare EKS Pod Identity. Per ulteriori informazioni, consulta Panoramica sulla configurazione delle associazioni EKS Pod Identity.
-
Per ulteriori informazioni sui ruoli IAM per gli account di servizio, consultare Per creare un provider di identità IAM OIDC per il cluster.
-
Fase 1: Creazione di un ruolo IAM
Il plugin CSI per Amazon EBS richiede autorizzazioni IAM per effettuare chiamate alle API AWS per tuo conto. Se non viene soddisfatto questo prerequisito, il tentativo di installare il componente aggiuntivo e l’esecuzione di kubectl describe pvc riporteranno failed to provision volume with StorageClass insieme a un errore could not create volume in EC2: UnauthorizedOperation. Per ulteriori informazioni, consultare Impostazione dell'autorizzazione driver
Nota
I pod avranno accesso alle autorizzazioni assegnate al ruolo IAM, a meno che non si blocchi l’accesso a IMDS. Per ulteriori informazioni, consulta Protezione dei cluster Amazon EKS con le best practice.
La procedura seguente mostra come creare un ruolo IAM e collegarci la policy gestita da AWS. Per implementare questa procedura, è possibile utilizzare uno dei seguenti strumenti:
Nota
È possibile creare una policy autogestita con autorizzazioni limitate. Rivedere AmazonEBSCSIDriverPolicy e creare una policy IAM personalizzata con autorizzazioni ridotte.
Nota
I passaggi specifici di questa procedura sono stati scritti per l'utilizzo del driver come componente aggiuntivo di Amazon EKS. Per utilizzare il driver come componente aggiuntivo autogestito occorre una procedura differente. Per ulteriori informazioni, consultare la pagina Set up driver permissions
eksctl
-
Crea un ruolo IAM e collega una policy. AWS mantiene una policy gestita da AWS; in alternativa, puoi creare una policy personalizzata. Puoi creare un ruolo IAM e collegarvi la policy gestita da AWS con il comando seguente. Sostituisci
my-clustercon il nome del tuo cluster. Il comando implementa uno stack AWS CloudFormation che crea un ruolo IAM e vi collega la policy IAM.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 -
È possibile saltare questo passaggio se non si utilizza una chiave KMS
personalizzata. Nel caso se ne utilizzi una per la crittografia dei volumi Amazon EBS, personalizzare il ruolo IAM secondo necessità. Ad esempio, completa le seguenti operazioni: -
Copia e incolla il codice seguente in un nuovo file
kms-key-for-encryption-on-ebs.json. Sostituirecustom-key-arncon l’ARN della chiave KMS personalizzata.{ "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. È possibile modificare
KMS_Key_For_Encryption_On_EBS_Policycon 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 -
Collega la policy IAM al ruolo con il comando seguente. Sostituire
111122223333con l'ID account.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
-
Console di gestione AWS
-
Aprire 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 Select trusted entity (Seleziona entità attendibile), esegui le operazioni seguenti:
-
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
AmazonEBSCSIDriverPolicy. -
Seleziona la casella di controllo a sinistra della
AmazonEBSCSIDriverPolicyrestituita dalla ricerca. -
Scegli Next (Successivo).
-
-
Nella pagina Name, review, and create (Assegna un nome, rivedi e crea), esegui le operazioni seguenti:
-
Per Nome ruolo, inserire un nome univoco per il 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 di tag in IAM, consulta la sezione Applicazione di tag alle risorse IAM nella Guida per l'utente di IAM.
-
Scegli 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. Sostituire
region-codecon la Regione AWS in cui si trova il cluster. SostituireEXAMPLED539D4633E53DE1B71EXAMPLEcon l’ID del gestore OIDC 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 chiave KMS
personalizzata per la crittografia dei volumi Amazon EBS, personalizza il ruolo IAM secondo necessità. 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 scheda JSON.
-
Copiare e incollare il codice seguente nell’editor, sostituendo
custom-key-arncon l’ARN della chiave KMS personalizzata.{ "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, inserire un nome univoco per la policy (ad esempio,
KMS_Key_For_Encryption_On_EBS_Policy). -
Scegli Crea policy.
-
Nel pannello di navigazione a sinistra, seleziona Ruoli.
-
Selezionare
AmazonEKS_EBS_CSI_DriverRolenella console per aprire il ruolo e modificarlo. -
Dall'elenco a discesa Aggiungi autorizzazioni, scegli Collega policy.
-
Nella casella Filtra policy, inserire
KMS_Key_For_Encryption_On_EBS_Policy. -
Selezionare la casella di controllo a sinistra della policy
KMS_Key_For_Encryption_On_EBS_Policyrestituita dalla ricerca. -
Scegli Collega policy.
-
CLI AWS
-
Visualizzare l’URL del gestore OIDC del cluster. Sostituire
my-clustercon 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 textDi seguito viene riportato un output di esempio:
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE -
Crea il ruolo IAM concedendo l'autorizzazione per l'operazione
AssumeRoleWithWebIdentity.-
Copiare i contenuti seguenti in un file denominato
aws-ebs-csi-driver-trust-policy.json. Sostituire111122223333con l'ID account. SostituireEXAMPLED539D4633E53DE1B71EXAMPLEeregion-codecon i valori restituiti nel passaggio 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:ebs-csi-controller-sa" } } } ] } -
Crea il ruolo. È possibile modificare
AmazonEKS_EBS_CSI_DriverRolecon 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"
-
-
Collega una policy. AWS mantiene una policy gestita da AWS; in alternativa, puoi creare una policy personalizzata. Collega la policy gestita da AWS al ruolo utilizzando il comando seguente.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole -
Se utilizzi una chiave KMS
personalizzata per la crittografia dei volumi Amazon EBS, personalizza il ruolo IAM secondo necessità. Ad esempio, completa le seguenti operazioni: -
Copia e incolla il codice seguente in un nuovo file
kms-key-for-encryption-on-ebs.json. Sostituirecustom-key-arncon l’ARN della chiave KMS personalizzata.{ "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. È possibile modificare
KMS_Key_For_Encryption_On_EBS_Policycon 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 -
Collega la policy IAM al ruolo con il comando seguente. Sostituire
111122223333con l'ID account.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 è stato creato il ruolo IAM del driver CSI di Amazon EBS, è possibile passare alla sezione successiva. Quando si implementa il componente aggiuntivo con il ruolo IAM, 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 sono assegnate le autorizzazioni Kubernetes richieste.
Fase 2: ottenere il driver CSI di Amazon EBS
Consigliamo di installare il driver CSI di Amazon EBS attraverso il componente aggiuntivo di Amazon EKS per migliorare la sicurezza e ridurre le attività. 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.
Importante
Prima di aggiungere il driver Amazon EBS come componente aggiuntivo di Amazon EKS, verificare che nel cluster non sia installata una versione autogestita del driver. In tal caso, consultare la pagina Uninstalling a self-managed Amazon EBS CSI driver
In alternativa, se si desidera un’installazione autogestita del driver CSI di Amazon EBS, consultare la pagina Installation
Fase 3: implementazione di un’applicazione di esempio
Puoi implementare diverse app di esempio e modificarle in base alle tue esigenze. Per ulteriori informazioni, consultare la pagina Kubernetes Examples