Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
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à.
PodsConfigurare l'utilizzo di un account Kubernetes di servizio
Se è Pod necessario accedere AWS services, è necessario configurarlo per utilizzare un account Kubernetes di servizio. L'account di servizio deve essere associato a un ruolo AWS Identity and Access Management (IAM) che dispone delle autorizzazioni per accedere a. AWS services
Prerequisiti
-
Un cluster esistente. Se non se ne possiede già uno, crearlo utilizzando una delle guide Nozioni di base su Amazon EKS.
-
Provider IAM OpenID Connect (OIDC) esistente per il cluster. Per sapere se disponi di un account o, per crearne uno, consulta Crea un OIDC provider IAM per il tuo 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 Pods posseggano per utilizzare AWS services. Per ulteriori informazioni su come creare e configurare l'account e il ruolo del servizio, consulta Assegnazione di IAM ruoli agli account di Kubernetes servizio.
-
Versione
2.12.3
o successiva o versione1.27.160
o successiva di AWS Command Line Interface (AWS CLI) installato e configurato sul dispositivo o AWS CloudShell. Per verificare la versione attuale, usa
. I programmi di gestione dei pacchetti, comeaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
,apt-get
o Homebrew per macOS, spesso sono aggiornati a versioni precedenti della AWS CLI. Per installare la versione più recente, consulta le sezioni Installazione, aggiornamento e disinstallazione della AWS CLI e Configurazione rapida con aws configure nella Guida per l'utente dell'AWS Command Line Interface . La AWS CLI versione installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarla, consulta Installazione nella home directory nella Guida AWS CLI 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 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 kubeconfig file.
Configurazione di un Pod per l'utilizzo di un account di servizio
-
Utilizza il seguente comando per creare un manifesto di implementazione da implementare in un Pod con cui confermare la configurazione. Sostituisci i
con i valori in tuo possesso.example values
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 Pod.
-
Visualizzare i Pods distribuiti con l'implementazione nella fase precedente.
kubectl get pods | grep
my-app
Di seguito viene riportato un output di esempio:
my-app
-6f4dfff6cb-76cv9
1/1 Running 0 3m28s -
Visualizzare l'ARN del ruolo IAM che 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-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 Assegnazione di IAM ruoli agli account di Kubernetes servizio.
-
Conferma che 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/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, ad eccezione dell'account di servizio predefinito, con le impostazioni nelle specifiche del Pod. Per ulteriori informazioni, consulta Proiezione dei volumi di token dell'account di servizionella documentazione di Kubernetes. Il Webhook Amazon EKS Pod Identity
sugli orologi del cluster per Pods 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 questi Pods. Il cluster non deve utilizzare il webhook per configurare le variabili di ambiente e i montaggi del file di token. Puoi configurare manualmente Pods per ottenere queste variabili di ambiente. Le versioni supportate dell' AWS SDK cercano queste variabili di ambiente innanzitutto nel provider della catena di credenziali. Le credenziali del ruolo vengono utilizzate per i Pods che soddisfano questi criteri.
-
-
Conferma di Pods poter interagire con l' AWS services utilizzo delle autorizzazioni assegnate nella policy IAM associata al tuo ruolo.
Nota
Quando un Pod utilizza AWS le credenziali di un ruolo IAM associato a un account di servizio, gli SDK AWS CLI o altri SDK nei relativi contenitori Pod utilizzano le credenziali fornite da quel ruolo. Se non si limita l'accesso alle credenziali fornite al ruolo IAM del nodo 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 Pods non riesce a interagire con i servizi come previsto, completa i seguenti passaggi per confermare che tutto sia configurato correttamente.
-
Conferma di Pods utilizzare una versione AWS SDK che supporti l'assunzione di un ruolo IAM tramite un OpenID Connect file di token di identità Web. Per ulteriori informazioni, consulta Utilizzo di un SDK AWS supportato.
-
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 il tuo Pods non riesce ancora ad accedere ai servizi, controlla i passaggi descritti in Assegnazione di IAM ruoli agli account di Kubernetes servizio per confermare che il ruolo e l'account del servizio siano configurati correttamente.
-