Aiutaci 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à.
Configura Pods per utilizzare un account di servizio Kubernetes
Se un Pod deve accedere ai AWS servizi, devi configurarlo per utilizzare un account di servizio Kubernetes. L'account di servizio deve essere associato a un ruolo AWS Identity and Access Management (IAM) con le autorizzazioni per accedere ai servizi AWS .
-
Un cluster esistente. Se non ne hai uno, puoi crearne uno utilizzando una delle guide inNozioni 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. Al ruolo deve essere associata una policy IAM 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 Assegna ruoli IAM agli account di servizio Kubernetes.
-
Versione
2.12.3
o successiva o versione1.27.160
o 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 comeyum
Homebrew per macOS sono spesso diverse versioni dell'ultima versione della CLI AWS .apt-get
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 la stessa o fino a una versione secondaria precedente o successiva alla versione Kubernetes del cluster. Ad esempio, se la versione del cluster è1.29
, puoi usarekubectl
versione1.28
,1.29
o1.30
. Per installare o aggiornarekubectl
, consulta Configurazione kubectl e eksctl: -
Un file
kubectl
config
esistente che contiene la configurazione del cluster. Per creare un filekubectl
config
, consulta Connect kubectl a un cluster EKS creando un file kubeconfig.-
Usa il comando seguente per creare un manifesto di distribuzione con cui distribuire un Pod per confermare la configurazione. Sostituisci i
example values
con i valori in tuo possesso.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 esistano le variabili di ambiente richieste per il tuo Pod.
-
Visualizza i Pod che sono stati distribuiti con la distribuzione nel passaggio precedente.
kubectl get pods | grep my-app
Di seguito viene riportato un output di esempio:
my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s
-
Visualizza l'ARN del ruolo IAM utilizzato dal Pod.
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-role
Il 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 Assegna ruoli IAM agli account di servizio Kubernetes.
-
Verifica che il Pod disponga di un file con token di identità Web.
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/token
kubelet
Richiede e archivia il token per conto del Pod. Per impostazione predefinita, lakubelet
aggiorna il token se è più vecchio dell'80% del suo tempo totale di vita o se il token è più vecchio di 24 ore. Puoi modificare la durata di scadenza per qualsiasi account diverso dall'account di servizio predefinito utilizzando le impostazioni nelle specifiche del tuo Pod. Per ulteriori informazioni, consultare Proiezione Volume Token Acount di Servizionella documentazione di Kubernetes. Il webhook Amazon EKS Pod Identity
sul cluster controlla i Pod che utilizzano un account di servizio con la seguente annotazione: eks.amazonaws.com/role-arn: arn:aws: iam::111122223333:role/my-role
Il webhook applica le variabili di ambiente precedenti a quei Pod. Il cluster non ha bisogno di utilizzare il webhook per configurare le variabili di ambiente e il montaggio dei file token. Puoi configurare manualmente i Pod per avere queste variabili di ambiente. Le versioni supportate dell' AWS SDK cercano queste variabili di ambiente prima nel provider della catena di credenziali. Le credenziali del ruolo vengono utilizzate per i Pod che soddisfano questi criteri.
-
-
Verifica che i tuoi Pod possano interagire con AWS i servizi utilizzando le autorizzazioni che hai assegnato nella policy IAM allegata al tuo ruolo.
Nota
Quando un Pod utilizza AWS le credenziali di un ruolo IAM associato a un account di servizio, la AWS CLI o SDKs altro nei contenitori per quel Pod utilizza le credenziali fornite da quel ruolo. Se non limiti l'accesso alle credenziali fornite al ruolo IAM del nodo Amazon EKS, il Pod ha comunque accesso a queste credenziali. Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker
. Se i tuoi Pod non riescono a interagire con i servizi come previsto, completa i seguenti passaggi per confermare che tutto sia configurato correttamente.
-
Verifica che i tuoi Pod utilizzino una versione AWS SDK che supporti l'assunzione di un ruolo IAM tramite un file di token di identità web OpenID Connect. Per ulteriori informazioni, consulta Usa IRSA con l'SDK AWS.
-
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, consulta i passaggi descritti in Assegnare i ruoli IAM agli account di servizio Kubernetes per confermare che il ruolo e l'account di servizio siano configurati correttamente.
-
-