Configurazione dei pod per accedere ai servizi AWS con un account di servizio - Amazon EKS

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 dei pod per accedere ai servizi AWS con un account di servizio

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.

  • Un account di servizio Kubernetes esistente e un’associazione EKS Pod Identity che associa l’account di servizio a un 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 Assegnazione di un ruolo IAM a un account di servizio Kubernetes.

  • La versione più recente di AWS CLI installata e configurata sul dispositivo o in AWS CloudShell. È possibile verificare la versione corrente con 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 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 AWS comando. La versione di AWS CLI installata in AWS CloudShell potrebbe anche essere di diverse versioni precedenti 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 usare kubectl versione 1.28, 1.29 o 1.30. Per installare o aggiornare kubectl, consulta Impostazione di kubectl e eksctl:

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

    1. Utilizza il seguente comando per creare un manifesto di implementazione per implementare un pod con cui confermare la configurazione. Sostituire i valori di esempio con 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
    2. Implementa il file manifesto al cluster.

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

      1. Visualizza i pod 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. Verifica che il pod abbia il file di token dell’account di servizio montato.

        kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:

        Di seguito viene riportato un output di esempio:

        AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
    4. 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.

      1. Verifica che i pod utilizzino una versione di AWS SDK che supporta l’assunzione di un ruolo IAM tramite un’associazione EKS Pod Identity. Per ulteriori informazioni, consulta Utilizzo di Pod Identity con SDK AWS.

      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