Associa un ruolo IAM a un componente aggiuntivo Amazon EKS utilizzando Pod Identity - 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à.

Associa un ruolo IAM a un componente aggiuntivo Amazon EKS utilizzando Pod Identity

Alcuni componenti aggiuntivi di Amazon EKS richiedono le autorizzazioni dei ruoli IAM per chiamare AWS le API. Ad esempio, il componente aggiuntivo Amazon VPC CNI richiama determinate AWS API per configurare le risorse di rete nel tuo account. A questi componenti aggiuntivi deve essere concessa l'autorizzazione tramite IAM. AWS Più specificamente, l'account di servizio del pod su cui è in esecuzione il componente aggiuntivo deve essere associato a un ruolo IAM con una policy IAM sufficiente.

Il modo consigliato per concedere AWS le autorizzazioni ai carichi di lavoro del cluster è utilizzare la funzionalità Pod Identities di Amazon EKS. Puoi utilizzare una Pod Identity Association per mappare l'account di servizio di un componente aggiuntivo a un ruolo IAM. Se un pod utilizza un account di servizio con un'associazione, Amazon EKS imposta le variabili di ambiente nei container del pod. Le variabili di ambiente configurano gli AWS SDK, inclusa la AWS CLI, per utilizzare le credenziali EKS Pod Identity. Scopri di più su EKS Pod Identities.

I componenti aggiuntivi Amazon EKS possono aiutare a gestire il ciclo di vita delle associazioni di identità dei pod corrispondenti al componente aggiuntivo. Ad esempio, puoi creare o aggiornare un componente aggiuntivo Amazon EKS e l'associazione di identità del pod necessaria in una singola chiamata API. Amazon EKS fornisce anche un'API per il recupero delle policy IAM suggerite.

Utilizzo consigliato:
  1. Verifica che l'agente di identità del pod Amazon EKS sia configurato sul tuo cluster.

  2. Stabilisci se il componente aggiuntivo che desideri installare richiede le autorizzazioni IAM utilizzando l'describe-addon-versions AWS CLI operazione. Se il requiresIamPermissions flag ètrue, allora dovresti usare l'describe-addon-configurationsoperazione per determinare le autorizzazioni necessarie all'addon. La risposta include un elenco di politiche IAM gestite suggerite.

  3. Recupera il nome dell'account di servizio Kubernetes e la policy IAM suggerita utilizzando l'operazione CLI. describe-addon-configuration Valuta l'ambito della policy suggerita rispetto ai tuoi requisiti di sicurezza.

  4. Crea un ruolo IAM utilizzando la politica di autorizzazioni suggerita e la politica di fiducia richiesta da Pod Identity. Per ulteriori informazioni, consulta Creazione dell'associazione EKS Pod Identity.

  5. Crea o aggiorna un componente aggiuntivo Amazon EKS utilizzando la CLI. Specificare almeno un'associazione di identità del pod. Un'associazione di identità pod è (1) il nome di un account di servizio Kubernetes e (2) l'ARN di un ruolo IAM.

Considerazioni:
  • Le associazioni di identità dei pod create utilizzando le API del componente aggiuntivo sono di proprietà del rispettivo componente aggiuntivo. Se si elimina il componente aggiuntivo, viene eliminata anche l'associazione di identità del pod. Puoi impedire questa eliminazione a cascata utilizzando l'preserveopzione durante l'eliminazione di un componente aggiuntivo utilizzando l'API or. AWS CLI Se necessario, puoi anche aggiornare o eliminare direttamente l'associazione di identità del pod. I componenti aggiuntivi non possono assumere la proprietà delle associazioni di identità dei pod esistenti. È necessario eliminare l'associazione esistente e ricrearla utilizzando un'operazione di creazione o aggiornamento del componente aggiuntivo.

  • Amazon EKS consiglia di utilizzare le associazioni di identità dei pod per gestire le autorizzazioni IAM per i componenti aggiuntivi. Il metodo precedente, IAM roles for service accounts (IRSA), è ancora supportato. È possibile specificare sia un'associazione IRSA serviceAccountRoleArn che un'associazione di identità del pod per un componente aggiuntivo. Se l'agente di identità del pod EKS è installato nel cluster, serviceAccountRoleArn verrà ignorato e EKS utilizzerà l'associazione di identità del pod fornita. Se Pod Identity non è abilitato, serviceAccountRoleArn verrà utilizzato.

  • Se aggiorni le associazioni di identità dei pod per un componente aggiuntivo esistente, Amazon EKS avvia un riavvio progressivo dei pod aggiuntivi.

Recupera informazioni IAM su un componente aggiuntivo

Puoi utilizzare il AWS CLI per determinare (1) se un componente aggiuntivo richiede le autorizzazioni IAM e (2) una politica IAM suggerita per quel componente aggiuntivo.

Recupera informazioni IAM su un componente aggiuntivo Amazon EKS ()AWS CLI
  1. Determina il nome del componente aggiuntivo che desideri installare e la versione Kubernetes del cluster. Scopri di più sui componenti aggiuntivi Amazon EKS disponibili.

  2. Utilizza il AWS CLI per determinare se il componente aggiuntivo richiede le autorizzazioni IAM.

    aws eks describe-addon-versions \ --addon-name <addon-name> \ --kubernetes-version <kubernetes-version>

    Per esempio:

    aws eks describe-addon-versions \ --addon-name aws-ebs-csi-driver \ --kubernetes-version 1.30

    Esamina il seguente output di esempio. Nota che requiresIamPermissions è true la versione del componente aggiuntivo predefinita. È necessario specificare la versione del componente aggiuntivo quando si recupera la policy IAM consigliata.

    { "addons": [ { "addonName": "aws-ebs-csi-driver", "type": "storage", "addonVersions": [ { "addonVersion": "v1.31.0-eksbuild.1", "architecture": [ "amd64", "arm64" ], "compatibilities": [ { "clusterVersion": "1.30", "platformVersions": [ "*" ], "defaultVersion": true } ], "requiresConfiguration": false, "requiresIamPermissions": true }, [...]
  3. Se il componente aggiuntivo richiede le autorizzazioni IAM, utilizza AWS CLI per recuperare una policy IAM consigliata.

    aws eks describe-addon-configuration \ --query podIdentityConfiguration \ --addon-name <addon-name> \ --addon-version <addon-version>

    Per esempio:

    aws eks describe-addon-configuration \ --query podIdentityConfiguration \ --addon-name aws-ebs-csi-driver \ --addon-version v1.31.0-eksbuild.1

    Esamina il seguente risultato. Prendi nota di recommendedManagedPolicies.

    [ { "serviceAccount": "ebs-csi-controller-sa", "recommendedManagedPolicies": [ "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" ] } ]
  4. Crea un ruolo IAM e allega la Managed Policy consigliata. In alternativa, esamina la policy gestita e definisci le autorizzazioni in modo appropriato. Consulta le istruzioni per creare un ruolo IAM da utilizzare con EKS Pod Identities.

Aggiorna il componente aggiuntivo con IAM Role

Aggiorna un componente aggiuntivo Amazon EKS per utilizzare una Pod Identity Association ()AWS CLI
  1. Determina:

    • cluster-name— Il nome del cluster EKS su cui installare il componente aggiuntivo.

    • addon-name— Il nome del componente aggiuntivo Amazon EKS da installare.

    • service-account-name— Il nome dell'account di servizio Kubernetes utilizzato dal componente aggiuntivo.

    • iam-role-arn— L'ARN di un ruolo IAM con autorizzazioni sufficienti per il componente aggiuntivo. Il ruolo IAM deve avere la politica di fiducia richiesta per EKS Pod Identity.

  2. Aggiorna il componente aggiuntivo utilizzando la AWS CLI. Puoi anche specificare le associazioni di identità dei pod durante la creazione di un componente aggiuntivo, utilizzando la stessa sintassi. --pod-identity-assocations Tieni presente che quando specifichi le associazioni di identità dei pod durante l'aggiornamento di un componente aggiuntivo, tutte le associazioni di identità dei pod precedenti vengono sovrascritte.

    aws eks update-addon --cluster-name <cluster-name> \ --addon-name <addon-name> \ --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'

    Per esempio:

    aws eks update-addon --cluster-name mycluster \ --addon-name aws-ebs-csi-driver \ --pod-identity-associations 'serviceAccount=ebs-csi-controller-sa,roleArn=arn:aws:iam::123456789012:role/StorageDriver'
  3. Convalida che l'associazione di identità del pod sia stata creata:

    aws eks list-pod-identity-associations --cluster-name <cluster-name>

    A operazione riuscita, viene visualizzato un output simile al seguente. Nota il ownerARN del componente aggiuntivo EKS.

    { "associations": [ { "clusterName": "mycluster", "namespace": "kube-system", "serviceAccount": "ebs-csi-controller-sa", "associationArn": "arn:aws:eks:us-west-2:123456789012:podidentityassociation/mycluster/a-4wvljrezsukshq1bv", "associationId": "a-4wvljrezsukshq1bv", "ownerArn": "arn:aws:eks:us-west-2:123456789012:addon/mycluster/aws-ebs-csi-driver/9cc7ce8c-2e15-b0a7-f311-426691cd8546" } ] }

Rimuovi le associazioni dal componente aggiuntivo

Rimuovi tutte le associazioni di identità dei pod da un componente aggiuntivo Amazon EKS ()AWS CLI
  1. Determina:

    • cluster-name— Il nome del cluster EKS su cui installare il componente aggiuntivo.

    • addon-name— Il nome del componente aggiuntivo Amazon EKS da installare.

  2. Aggiorna l'addon per specificare un array vuoto di associazioni di identità dei pod.

    aws eks update-addon --cluster-name <cluster-name> \ --addon-name <addon-name> \ --pod-identity-associations "[]"

Risolvi i problemi relativi a Pod Identities for EKS Add-ons

Se i componenti aggiuntivi riscontrano errori durante il tentativo di eseguire operazioni su AWS API, SDK o CLI, conferma quanto segue:

  • Il Pod Identity Agent è installato nel tuo cluster.

  • Il componente aggiuntivo ha un'associazione di identità del pod valida.

    • Utilizzate il AWS CLI per recuperare le associazioni per il nome dell'account di servizio utilizzato dal componente aggiuntivo.

      aws eks list-pod-identity-associations --cluster-name <cluster-name>
  • Il ruolo IAM previsto ha la politica di fiducia richiesta per EKS Pod Identities.

    • Utilizza il AWS CLI per recuperare la politica di attendibilità per un componente aggiuntivo.

      aws iam get-role --role-name <role-name> --query Role.AssumeRolePolicyDocument
  • Il ruolo IAM previsto dispone delle autorizzazioni necessarie per il componente aggiuntivo.

    • Utilizzalo AWS CloudTrail per rivedere i nostri AccessDenied eventiUnauthorizedOperation.

  • Il nome dell'account di servizio nell'associazione di identità del pod corrisponde al nome dell'account di servizio utilizzato dal componente aggiuntivo.