Configurare l' AWS Security Token Service endpoint per un account 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à.

Configurare l' AWS Security Token Service endpoint per un account di servizio

Se utilizzi un account di Kubernetes servizio conRuoli IAM per gli account di servizio, puoi configurare il tipo di AWS Security Token Service endpoint utilizzato dall'account di servizio se la versione del cluster e della piattaforma sono uguali o successive a quelle elencate nella tabella seguente. Se le versioni di Kubernetes o della piattaforma sono precedenti a quelle riportate nella tabella, gli account del servizio possono utilizzare esclusivamente l'endpoint globale.

Versione Kubernetes Versione della piattaforma Tipo di endpoint predefinito
1.30 eks.2 Regionale
1.29 eks.1 Regionale
1.28 eks.1 Regionale
1.27 eks.1 Regionale
1.26 eks.1 Regionale
1.25 eks.1 Regionale
1.24 eks.2 Regionale
1.23 eks.1 Regionale

AWS consiglia di utilizzare gli AWS STS endpoint regionali anziché l'endpoint globale. Ciò riduce la latenza, fornisce una ridondanza integrata e aumenta la validità del token di sessione. AWS Security Token Service Deve essere attivo nel luogo in Regione AWS cui Pod è in esecuzione. Inoltre, l'applicazione deve avere una ridondanza integrata per un altro Regione AWS in caso di guasto del servizio nel. Regione AWS Per ulteriori informazioni, consulta Managing AWS STS in an Regione AWS nella IAM User Guide.

Prerequisiti
Configurazione del tipo di endpoint utilizzato da un account del servizio Kubernetes

Negli esempi seguenti è utilizzato l'account del servizio Kubernetes aws-node utilizzato dal plug-in CNI di Amazon VPC. Puoi sostituire i example values con gli account del servizio, i Pods, gli spazi dei nomi e altre risorse personalizzate.

  1. Seleziona un Pod che utilizza un account di servizio per il quale desideri modificare l'endpoint. Determina Regione AWS in quale Pod ambiente viene eseguito. Sostituisci aws-node-6mfgv con il nome del Pod e kube-system con il nome dello spazio dei nomi di Pod.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:

    Di seguito viene riportato un output di esempio:

    ip-192-168-79-166.us-west-2/192.168.79.166

    Regione AWS

  2. Determina il tipo di endpoint utilizzato dall'account di servizio del Pod's.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Di seguito viene riportato un output di esempio:

    AWS_STS_REGIONAL_ENDPOINTS: regional

    Se l'endpoint attuale è globale, l'output restituisce global. Se non viene restituito alcun output, il tipo di endpoint predefinito è in uso e non è stato sovrascritto.

  3. Se le versioni del cluster e della piattaforma corrispondono o sono successive a quelle elencate nella tabella, puoi modificare il tipo di endpoint utilizzato dall'account del servizio dal tipo predefinito con un tipo diverso tramite uno dei comandi seguenti. Sostituisci aws-node con il nome dell'account del servizio e kube-system con lo spazio dei nomi dell'account del servizio.

    • Se il tipo di endpoint predefinito o attuale è globale e vuoi modificarlo in regionale:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=true

      Se usi Ruoli IAM per gli account di servizio per generare URL S3 prefirmati nell'applicazione in esecuzione nei container dei Pods, il formato dell'URL per gli endpoint regionali è simile al seguente:

      https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...
    • Se il tipo di endpoint predefinito o attuale è regionale e vuoi modificarlo in globale:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=false

      Se la tua applicazione effettua richieste esplicite agli endpoint AWS STS globali e non sovrascrivi il comportamento predefinito di utilizzo degli endpoint regionali nei cluster Amazon EKS, le richieste falliranno con un errore. Per ulteriori informazioni, consulta I container dei pod riceveranno il seguente errore: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.

      Se usi Ruoli IAM per gli account di servizio per generare URL S3 prefirmati nell'applicazione in esecuzione nei container dei Pods, il formato dell'URL per gli endpoint globali è simile al seguente:

      https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...

    Se disponi di un'automazione che prevede l'utilizzo dell'URL prefirmato in un determinato formato o se l'applicazione o le dipendenze a valle che utilizzano URL prefirmati hanno aspettative per l' Regione AWS obiettivo, apporta le modifiche necessarie per utilizzare l'endpoint appropriato. AWS STS

  4. Elimina e ricrea i Pods esistenti associati all'account di servizio per applicare le variabili di ambiente delle credenziali. Il web hook di modifica non le applica ai Pods già in esecuzione. Puoi sostituire Pods, kube-system e -l k8s-app=aws-node con le informazioni per il Pods per cui hai impostato l'annotazione.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Conferma che tutti i Pods sono stati riavviati.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. Visualizza le variabili di ambiente per una delle Pods. Verifica che il valore AWS_STS_REGIONAL_ENDPOINTS sia quello che hai impostato in una fase precedente.

    kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Di seguito viene riportato un output di esempio:

    AWS_STS_REGIONAL_ENDPOINTS=regional