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. Ciò è 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-clusterSe hai un cluster con un nome diverso, ricordati di aggiornare il nome in tutti i comandi futuri.eksctl utils associate-iam-oidc-provider --clustermy-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 --regionus-east-1L'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.us-east-1.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 namespacemy-eks-namespacePer utilizzare uno spazio dei nomi personalizzato, è necessario associarlo a un profilo Fargate. Il codice seguente ne è un esempio.
eksctl create fargateprofile \ --clustermy-eks-cluster\ --namemy-fargate-profile\ --namespacemy-eks-namespace\ --labels*=*Crea un account di servizio con il nome
my-eks-serviceaccountnello spazio dei nomimy-eks-namespaceper 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.yamlEsegui 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-providerscomando. L'ARN contiene il numero di conto e la regione.Nella
conditiondichiarazione, sostituisci l'id Regione AWS e l'ID OIDC.Verificate 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.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount", "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] } EOFFacoltativo: puoi anche aggiungere più voci nelle
StringLikecondizioniStringEqualsor 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-roleper 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-namemy-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-namemy-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-namemy-iam-roleL'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 -nmy-eks-namespacemy-eks-serviceaccounteks.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-namemy-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.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.us-east-1/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.us-east-1.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 serviceaccountmy-eks-serviceaccount-nmy-eks-namespaceL'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.