PodsConfigurare l'utilizzo di un account Kubernetes di servizio - Amazon EKS

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 versione 1.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 aws --version | cut -d / -f2 | cut -d ' ' -f1. I programmi di gestione dei pacchetti, come 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 usare kubectl versione 1.28, 1.29 o 1.30. Per installare o aggiornare kubectl, consulta Configurazione kubectl e eksctl:

  • Un file kubectl config esistente che contiene la configurazione del cluster. Per creare un file kubectl config, consulta Connect kubectl a un cluster EKS creando un kubeconfig file.

Configurazione di un Pod per l'utilizzo di un account di servizio
  1. Utilizza il seguente comando per creare un manifesto di implementazione da implementare in un Pod con cui 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
  2. Implementa il file manifesto al cluster.

    kubectl apply -f my-deployment.yaml
  3. Verifica che le variabili di ambiente richieste esistano per Pod.

    1. 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
    2. 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.

    3. 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, la kubelet 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 servizio nella 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.

  4. 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.

    1. 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.

    2. 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
    3. 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.