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à.
Fase 1: configurare il cluster Amazon EKS e configurare le autorizzazioni IAM
Configura il cluster Amazon EKS e crea le risorse IAM necessarie per consentire a un account di servizio Amazon EKS di connettersi alla tabella Amazon Keyspaces.
-
Crea un provider Open ID Connect (OIDC) per il cluster Amazon EKS. È necessario per utilizzare i ruoli IAM per gli account di servizio. Per ulteriori informazioni sui provider OIDC e su come crearli, consulta Creating an IAM OIDC provider for your cluster nella Amazon EKS User Guide.
Creare un provider di identità OIDC IAM per il cluster con il comando seguente. Questo esempio presuppone che il nome del cluster sia.
my-eks-cluster
Se hai un cluster con un nome diverso, ricordati di aggiornare il nome in tutti i comandi futuri.eksctl utils associate-iam-oidc-provider --cluster
my-eks-cluster
--approveConferma che il provider di identità OIDC sia stato registrato con IAM con il seguente comando.
aws iam list-open-id-connect-providers --region
aws-region
L'output dovrebbe essere simile a questo. Prendi nota dell'Amazon Resource Name (ARN) dell'OIDC, ne avrai bisogno nella fase successiva quando crei una policy di fiducia per l'account di servizio.
{ "OpenIDConnectProviderList": [ .. { "Arn": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" } ] }
-
Crea un account di servizio per il cluster Amazon EKS. Gli account di servizio forniscono un'identità per i processi eseguiti in un Pod. Un Pod è l'oggetto Kubernetes più piccolo e semplice che puoi utilizzare per distribuire un'applicazione containerizzata. Successivamente, crea un ruolo IAM che l'account di servizio possa assumere per ottenere le autorizzazioni per le risorse. Puoi accedere a qualsiasi AWS servizio da un Pod che è stato configurato per utilizzare un account di servizio che può assumere un ruolo IAM con autorizzazioni di accesso a quel servizio.
Crea un nuovo spazio dei nomi per l'account del servizio. Un namespace aiuta a isolare le risorse del cluster create per questo tutorial. È possibile creare un nuovo spazio dei nomi utilizzando il seguente comando.
kubectl create namespace
my-eks-namespace
Per utilizzare uno spazio dei nomi personalizzato, è necessario associarlo a un profilo Fargate. Il codice seguente ne è un esempio.
eksctl create fargateprofile \ --cluster
my-eks-cluster
\ --namemy-fargate-profile
\ --namespacemy-eks-namespace
\ --labels*
=*
Crea un account di servizio con il nome
my-eks-serviceaccount
nello spazio dei nomimy-eks-namespace
per il tuo cluster Amazon EKS utilizzando il seguente comando.cat >my-serviceaccount.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: my-eks-serviceaccount namespace: my-eks-namespace EOF kubectl apply -f my-serviceaccount.yaml
Esegui il comando seguente per creare un file di policy di fiducia che indichi al ruolo IAM di considerare attendibile il tuo account di servizio. Questa relazione di fiducia è necessaria prima che un preside possa assumere un ruolo. È necessario apportare le seguenti modifiche al file:
Per la
Principal
, inserisci l'ARN che IAM ha restituito allist-open-id-connect-providers
comando. L'ARN contiene il numero di conto e la regione.Nella
condition
dichiarazione, sostituisci l'id Regione AWS e l'ID OIDC.Verifica che il nome e lo spazio dei nomi dell'account del servizio siano corretti.
È necessario allegare il file delle policy di fiducia nel passaggio successivo quando si crea il ruolo IAM.
cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:my-eks-namespace
:my-eks-serviceaccount
", "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com" } } } ] } EOFFacoltativo: puoi anche aggiungere più voci nelle
StringLike
condizioniStringEquals
or per consentire a più account di servizio o namespace di assumere il ruolo. Per consentire al tuo account di servizio di assumere un ruolo IAM in un altro AWS account, consulta Autorizzazioni IAM per più account nella Amazon EKS User Guide.
-
Crea un ruolo IAM con il nome da assumere
my-iam-role
per l'account del servizio Amazon EKS. Allega al ruolo il file di policy di fiducia creato nell'ultimo passaggio. La policy di fiducia specifica l'account di servizio e il provider OIDC di cui il ruolo IAM può fidarsi.aws iam create-role --role-name
my-iam-role
--assume-role-policy-document file://trust-relationship.json --description "EKS service account role" -
Assegna le autorizzazioni del ruolo IAM ad Amazon Keyspaces allegando una policy di accesso.
Allega una policy di accesso per definire le azioni che il ruolo IAM può eseguire su risorse Amazon Keyspaces specifiche. Per questo tutorial utilizziamo la policy AWS gestita
AmazonKeyspacesFullAccess
, perché la nostra applicazione scriverà dati nella tua tabella Amazon Keyspaces. Come best practice, tuttavia, si consiglia di creare politiche di accesso personalizzate che implementino il principio dei privilegi minimi. Per ulteriori informazioni, consulta Come funziona Amazon Keyspaces con IAM.aws iam attach-role-policy --role-name
my-iam-role
--policy-arn=arn:aws:iam::aws:policy/AmazonKeyspacesFullAccessConferma che la policy è stata associata correttamente al ruolo IAM con la seguente dichiarazione.
aws iam list-attached-role-policies --role-name
my-iam-role
L'output dovrebbe essere simile a questo.
{ "AttachedPolicies": [ { "PolicyName": "AmazonKeyspacesFullAccess", "PolicyArn": "arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess" } ] }
Annota l'account del servizio con l'Amazon Resource Name (ARN) del ruolo IAM che può assumere. Assicurati di aggiornare l'ARN del ruolo con l'ID del tuo account.
kubectl annotate serviceaccount -n
my-eks-namespace
my-eks-serviceaccount
eks.amazonaws.com/role-arn=arn:aws:iam::111122223333
:role/my-iam-role
Verifica che il ruolo IAM e l'account di servizio siano configurati correttamente.
Verifica che la policy di fiducia del ruolo IAM sia configurata correttamente con la seguente dichiarazione.
aws iam get-role --role-name
my-iam-role
--query Role.AssumeRolePolicyDocumentL'output dovrebbe essere simile a questo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.
aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region
/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount" } } } ] }Verifica che l'account del servizio Amazon EKS sia annotato con il ruolo IAM.
kubectl describe serviceaccount
my-eks-serviceaccount
-nmy-eks-namespace
L'output dovrebbe essere simile a questo.
Name: my-eks-serviceaccount Namespace:my-eks-namespace Labels: <none> Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-iam-role Image pull secrets: <none> Mountable secrets: <none> Tokens: <none> [...]
Dopo aver creato l'account di servizio Amazon EKS, il ruolo IAM e configurato le relazioni e le autorizzazioni richieste, procedi Passaggio 2: configura l'applicazione con.