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.
Configurazione di pod per utilizzare un account di servizio Kubernetes
Se un pod deve accedere ai servizi AWS, è necessario configurarlo per utilizzare un account di servizio Kubernetes. L’account del servizio deve essere associato a un ruolo di gestione di identità AWS e degli accessi (IAM) che dispone delle autorizzazioni per accedere ai servizi AWS.
-
Un cluster esistente. Se non se ne possiede già uno, crearlo utilizzando una delle guide in Nozioni di base su Amazon EKS.
-
Creare un provider di identità OpenID Connect (OIDC) IAM per il cluster. Per sapere se disponi di un account o, per crearne uno, consulta Per creare un provider di identità IAM OIDC per il cluster.
-
Un account di servizio Kubernetes esistente associato a un ruolo IAM. L'account del servizio deve essere annotato con il nome della risorsa Amazon (ARN) del ruolo IAM. Il ruolo deve avere una policy IAM associata che contenga le autorizzazioni che desideri che i tuoi pod abbiano per utilizzare i servizi AWS. Per ulteriori informazioni su come creare e configurare l'account e il ruolo del servizio, consulta Assegnare ruoli IAM agli account di servizio Kubernetes.
-
La versione
2.12.3o successiva oppure la versione1.27.160o successiva dell’interfaccia a riga di comando AWS (AWS CLI) installata e configurata sul dispositivo o AWS CloudShell. Per verificare la versione attuale, usaaws --version | cut -d / -f2 | cut -d ' ' -f1. I programmi di gestione dei pacchetti, comeyum,apt-geto Homebrew per macOS, spesso sono aggiornati a versioni precedenti dell’AWS CLI. Per installare la versione più recente, consulta Installazione e Configurazione rapida con aws configure nella Guida per l’utente dell’interfaccia a riga di comando AWS. La versione della AWS CLI installata in AWS CloudShell potrebbe anche essere precedente di diverse versioni rispetto alla più recente. Per aggiornarla, consulta Installing AWS CLI to your home directory nella Guida per l’utente di AWS CloudShell. -
Lo strumento a riga di comando
kubectlè installato sul dispositivo o su AWS CloudShell. La versione può essere la stessa o immediatamente precedente o successiva alla versione 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: -
Un file
kubectlconfigesistente che contiene la configurazione del cluster. Per creare un filekubectlconfig, consulta Connettere kubectl a un cluster EKS creando un file kubeconfig.-
Utilizza il seguente comando per creare un manifesto di implementazione per implementare un pod con cui confermare la configurazione. Sostituire i
valori di esempiocon i propri valori.cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF -
Implementa il file manifesto al cluster.
kubectl apply -f my-deployment.yaml -
Verifica che le variabili di ambiente richieste esistano per i pod.
-
Visualizza i pod distribuiti con l’implementazione nella fase precedente.
kubectl get pods | grep my-appDi seguito viene riportato un output di esempio:
my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s -
Visualizza l’ARN del ruolo IAM che il pod sta utilizzando.
kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_ROLE_ARN:Di seguito viene riportato un output di esempio:
AWS_ROLE_ARN: arn:aws:iam::111122223333:role/my-roleIl ruolo ARN deve corrispondere al ruolo ARN con cui hai annotato l'account del servizio esistente. Per ulteriori informazioni sull'annotazione dell'account del servizio, consulta Assegnare ruoli IAM agli account di servizio Kubernetes.
-
Conferma che il pod abbia un file di token di identità web montato.
kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_WEB_IDENTITY_TOKEN_FILE:Di seguito viene riportato un output di esempio:
AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/tokenkubeletrichiede e memorizza il token per conto del pod. Per impostazione predefinita, lakubeletaggiorna il token se è più vecchio dell'80% del suo tempo totale di vita o se il token è più vecchio di 24 ore. È possibile modificare la durata di scadenza per qualsiasi account, ad eccezione dell’account di servizio predefinito, con le impostazioni nelle specifiche del pod. Per ulteriori informazioni, consultare Proiezione Volume Token Acount di Servizionella documentazione di Kubernetes. Il Webhook di Pod Identity di Amazon EKS
sugli orologi del cluster per pod che utilizzano un account di servizio con la seguente annotazione: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-roleIl webhook applica le variabili di ambiente precedenti a questi pod. Il cluster non deve utilizzare il webhook per configurare le variabili di ambiente e i montaggi del file di token. È possibile configurare manualmente i pod per ottenere queste variabili di ambiente. Le versioni supportate dell'SDK AWS cercano queste variabili di ambiente prima nel provider della catena di credenziali. Le credenziali del ruolo sono utilizzate per i pod che soddisfano questi criteri.
-
-
Conferma che i tuoi pod possano interagire con i servizi AWS utilizzando le autorizzazioni assegnate nella policy IAM allegata al tuo ruolo.
Nota
Quando un pod utilizza le credenziali AWS da un ruolo IAM associato a un account di servizio, AWS CLI o altri SDK nei container per tale pod utilizzano le credenziali fornite da tale ruolo. Se non si limita l’accesso alle credenziali fornite al ruolo IAM del nodo di Amazon EKS, il pod ha comunque accesso a tali credenziali. Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker
. Se il tuo pod non riesce a interagire con i servizi come previsto, completa i seguenti passaggi per confermare che tutto sia configurato correttamente.
-
Conferma che i pod utilizzano una versione di SDK AWS che supporta l’assunzione di un ruolo IAM tramite un file di token di identità Web OpenID Connect. Per ulteriori informazioni, consulta Usa IRSA con AWS SDK.
-
Conferma che l'implementazione stia utilizzando l'account del servizio.
kubectl describe deployment my-app | grep "Service Account"Di seguito viene riportato un output di esempio:
Service Account: my-service-account -
Se i tuoi pod non riescono ancora ad accedere ai servizi, controlla i passaggi descritti in Assign IAM roles to Kubernetes service accounts per confermare che il ruolo e l’account del servizio siano configurati correttamente.
-
-