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à.
Concedi ai carichi di lavoro Kubernetes l'accesso all'utilizzo degli account di servizio AWSKubernetes
Un account del servizio Kubernetes fornisce un'identità per i processi eseguiti in un Pod. Per ulteriori informazioni, consulta Gestione degli account di servizio
Token dell'account di servizio
Per impostazione predefinita, la funzionalità BoundServiceAccountTokenVolume
Go versione
0.15.7
e successivePython versione
12.0.0
e successiveJava versione
9.0.0
e successiveJavaScript versione
0.10.3
e successiveRamo
master
di RubyHaskell versione
0.3.0.0
C# versione
7.0.5
e successive
Se il carico di lavoro utilizza una versione precedente del client, è necessario aggiornarla. Per consentire una migrazione agevole dei client verso i più recenti token dell'account di servizio con limite di tempo, Kubernetes proroga il periodo di scadenza dei token, rispetto a quello predefinito di un'ora. Per i cluster Amazon EKS, il periodo di scadenza è prorogato a 90 giorni. Il server API Kubernetes del cluster Amazon EKS rifiuta le richieste con token più vecchi di 90 giorni. Consigliamo di controllare le applicazioni e le relative dipendenze per assicurarti che gli SDK del client Kubernetes corrispondano o siano successivi alle versioni elencate sopra.
Quando il server API riceve richieste con token più vecchie di un'ora, le annota nel log eventi di controllo API con annotations.authentication.k8s.io/stale-token
. Il valore dell'annotazione è simile a quello riportato di seguito:
subject: system:serviceaccount:common:fluent-bit, seconds after warning threshold: 4185802.
Se nel cluster è abilitata la registrazione del piano di controllo (control-plane), le annotazioni di trovano nei registri di controllo. Puoi utilizzare la seguente query CloudWatch Logs Insights per identificare tutti gli utenti del Pods tuo cluster Amazon EKS che utilizzano token obsoleti:
fields @timestamp | filter @logStream like /kube-apiserver-audit/ | filter @message like /seconds after warning threshold/ | parse @message "subject: *, seconds after warning threshold:*\"" as subject, elapsedtime
L'subject
si riferisce all'account di servizio utilizzato dal Pod. elapsedtime
indica in secondi il tempo trascorso dalla lettura dell'ultimo token. Le richieste al server API vengono negate quando elapsedtime
supera i 90 giorni (7.776.000 secondi). Per utilizzare una delle versioni elencate sopra e aggiornare automaticamente il token, devi aggiornare in modo proattivo l'SDK client Kubernetes delle applicazioni. Se il token dell'account di servizio utilizzato è prossimo a 90 giorni e non hai tempo sufficiente per aggiornare le versioni dell'SDK client prima della scadenza del token, puoi terminare i Pods esistenti e creare nuovi pod. Ciò comporta una ridefinizione del token dell'account di servizio, concedendo agli utenti altri 90 giorni per aggiornare gli SDK della versione client.
Se il Pod fa parte di un'implementazione, è consigliabile terminare i Pods eseguendo un rollout in modo da mantenere un'elevata disponibilità. Per eseguire questa operazione, utilizza il comando seguente. Sostituisci
con il nome della tua implementazione.my-deployment
kubectl rollout restart deployment/
my-deployment
Componenti aggiuntivi del cluster
I componenti aggiuntivi del cluster seguenti sono stati aggiornati per utilizzare gli SDK client Kubernetes che riconfigurano automaticamente i token dell'account di servizio. Assicurati che le versioni elencate, o versioni successive, siano installate sul tuo cluster.
-
Amazon VPC CNI plugin for Kubernetes e plugin dell'helper di parametri versione
1.8.0
e successive. Per verificare la versione corrente o aggiornarla, consulta e. Utilizzo del componente aggiuntivo Amazon VPC CNI plugin for Kubernetes di Amazon EKS cni-metrics-helper -
CoreDNS versione
1.8.4
e successive. Per verificare la versione attuale o aggiornarla, consulta Utilizzo del componente aggiuntivo CoreDNS di Amazon EKS. -
AWS Load Balancer Controller versione
2.0.0
e successive. Per verificare la versione attuale o aggiornarla, consulta Che cosa è la AWS Load Balancer Controller?. -
Versione
kube-proxy
attuale. Per verificare la versione attuale o aggiornarla, consulta Utilizzo del componente aggiuntivo Kubernetes kube-proxy. AWS per la versione Fluent Bit
2.25.0
o successiva. Per aggiornare la versione corrente, consulta Versionisu GitHub. Versione dell'immagine di Fluentd 1.14.6-1.2
o versione successiva e plugin di filtro Fluentd per la versione dei metadati Kubernetes 2.11.1 o successive.
Concessione AWS Identity and Access Management delle autorizzazioni ai carichi di lavoro sui cluster Amazon Elastic Kubernetes Service
Amazon EKS offre due modi per concedere AWS Identity and Access Management le autorizzazioni ai carichi di lavoro eseguiti nei cluster Amazon EKS: ruoli IAM per gli account di servizio e EKS Pod Identities.
- Ruoli IAM per gli account di servizio
-
IAM roles for service accounts (IRSA) configura le applicazioni Kubernetes in esecuzione AWS con autorizzazioni IAM granulari per accedere a varie altre risorse come i bucket Amazon AWS S3, le tabelle Amazon DynamoDB e altro ancora. Puoi eseguire più applicazioni contemporaneamente nello stesso cluster Amazon EKS e assicurarti che ogni applicazione disponga solo del set minimo di autorizzazioni di cui ha bisogno. IRSA è stato creato per supportare varie opzioni di Kubernetes distribuzione supportate da AWS Amazon EKS, Amazon EKS Anywhere e Kubernetes cluster autogestiti su istanze Amazon EC2. Servizio Red Hat OpenShift su AWS Pertanto, IRSA è stato creato utilizzando un AWS servizio fondamentale come IAM e non ha assunto alcuna dipendenza diretta dal servizio Amazon EKS e dall'API EKS. Per ulteriori informazioni, consulta Ruoli IAM per gli account di servizio.
- EKS Pod Identity
-
EKS Pod Identity offre agli amministratori dei cluster un flusso di lavoro semplificato per l'autenticazione delle applicazioni per accedere a varie altre AWS risorse come bucket Amazon S3, tabelle Amazon DynamoDB e altro ancora. EKS Pod Identity è solo per EKS e, di conseguenza, semplifica il modo in cui gli amministratori dei cluster possono configurare le applicazioni Kubernetes per ottenere le autorizzazioni IAM. Queste autorizzazioni possono ora essere facilmente configurate con meno passaggi direttamente tramite l' AWS Management Console API EKS e AWS CLI non è necessario eseguire alcuna azione all'interno del cluster su nessun oggetto. Kubernetes Gli amministratori del cluster non devono passare dai servizi EKS ai servizi IAM o utilizzare operazioni IAM privilegiate per configurare le autorizzazioni richieste dalle applicazioni. I ruoli IAM possono ora essere utilizzati su più cluster senza la necessità di aggiornare la policy di attendibilità dei ruoli durante la creazione di nuovi cluster. Le credenziali IAM fornite da EKS Pod Identity includono tag di sessione dei ruoli, con attributi come nome del cluster, namespace, nome dell'account di servizio. I tag delle sessioni di ruolo consentono agli amministratori di creare un singolo ruolo in grado di funzionare su più account di servizio, consentendo l'accesso alle AWS risorse in base ai tag corrispondenti. Per ulteriori informazioni, consulta Scopri come EKS Pod Identity concede ai pod l'accesso ai servizi AWS.
Confronto tra EKS Pod Identity e IRSA
A un livello superiore, sia EKS Pod Identity che IRSA concedono autorizzazioni IAM alle applicazioni in esecuzione su cluster Kubernetes. Ma sono fondamentalmente diversi nel modo in cui vengono configurati, nei limiti supportati e nelle funzionalità abilitate. Di seguito, confrontiamo alcuni degli aspetti chiave di entrambe le soluzioni.
EKS Pod Identity | IRSA | |
---|---|---|
Estensibilità dei ruoli |
È necessario configurare ogni ruolo una volta per instaurare un rapporto di attendibilità con il principale di servizio Amazon EKS introdotto di recente, |
È necessario aggiornare la policy di attendibilità del ruolo IAM con il nuovo endpoint del provider OIDC del cluster EKS ogni volta che si desidera utilizzare il ruolo in un nuovo cluster. |
Scalabilità del cluster |
EKS Pod Identity non richiede agli utenti di configurare il provider IAM OIDC, quindi questo limite non si applica. |
Ogni cluster EKS ha un URL emittente OpenID Connect (OIDC) associato. Per utilizzare IRSA, è necessario creare un provider OpenID Connect univoco per ogni cluster EKS in IAM. IAM ha un limite globale predefinito di 100 provider OIDC per ciascun Account AWS. Se prevedi di avere più di 100 cluster EKS per ciascuno Account AWS con IRSA, raggiungerai il limite del provider IAMOIDC. |
Scalabilità dei ruoli |
EKS Pod Identity non richiede agli utenti di definire una relazione di attendibilità tra il ruolo IAM e l'account di servizio nella policy di attendibilità, quindi questo limite non viene applicato. |
In IRSA, definisci la relazione di attendibilità tra un ruolo IAM e un account di servizio nella policy di attendibilità del ruolo. Per impostazione predefinita, la lunghezza della dimensione della policy di attendibilità è |
Riutilizzabilità dei ruoli |
AWS STS le credenziali temporanee fornite da EKS Pod Identity includono tag di sessione del ruolo, come il nome del cluster, lo spazio dei nomi, il nome dell'account del servizio. I tag di sessione dei ruoli permettono agli amministratori di creare un singolo ruolo IAM che può essere utilizzato con più account di servizio, con diverse autorizzazioni effettive, consentendo l'accesso alle risorse AWS in base ai tag ad essi collegati. Questo ruolo è chiamato anche controllo degli accessi basato su attributi (ABAC). Per ulteriori informazioni, consulta Concedi pods l'accesso alle AWS risorse in base ai tag. |
AWS STS i tag di sessione non sono supportati. È possibile riutilizzare un ruolo tra i cluster, ma ogni pod riceve tutte le autorizzazioni del ruolo. |
Ambienti supportati |
EKS Pod Identity è disponibile solo su Amazon EKS. |
È possibile utilizzare IRSA come Amazon EKS, Amazon EKS Anywhere e Kubernetes cluster autogestiti su istanze Amazon EC2. Servizio Red Hat OpenShift su AWS |
Versioni EKS supportate |
EKS Kubernetes versioni |
Tutte le versioni del cluster EKS supportate. |