Contribuisci a migliorare questa pagina
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à.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
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 il plug-in CNI di Amazon VPC per l’utilizzo di IRSA
Il plug-in CNI di Amazon VPC per Kubernetes
Nota
Il plug-in CNI di Amazon VPC supporta anche Identità di Pod di Amazon EKS. Per ulteriori informazioni, consulta Assegnazione di un ruolo IAM a un account di servizio Kubernetes.
Il plug-in:
-
Richiede le autorizzazioni di AWS Identity and Access Management (IAM). Se il cluster utilizza la
IPv4famiglia, le autorizzazioni sono specificate nella politicaAmazonEKS_CNI_PolicyAWS gestita. Se il cluster utilizza la famigliaIPv6, le autorizzazioni devono essere aggiunte a una policy IAM creata dall’utente; per le istruzioni, consulta Creare una policy IAM per i cluster che utilizzano la famiglia IPv6. È possibile collegare questa policy al ruolo del nodo IAM Amazon EKS o a un ruolo IAM separato. Per istruzioni su come allegare la policy al ruolo IAM del nodo Amazon EKS, consulta Ruolo IAM del nodo Amazon EKS. Si consiglia di assegnarlo a un ruolo separato, come descritto in questo argomento. -
Crea ed è configurato per l’utilizzo di un account di servizio Kubernetes denominato
aws-nodequando viene implementato. L’account di servizio è associato a unclusterroleKubernetes di nomeaws-node, a cui vengono assegnate le autorizzazioni Kubernetes richieste.
Nota
I Pod per il plug-in CNI di Amazon VPC per Kubernetes hanno accesso alle autorizzazioni assegnate al ruolo IAM del nodo Amazon EKS, a meno che non si blocchi l’accesso al servizio di metadati a IMDS. Per ulteriori informazioni, consulta Limitazione dell’accesso al profilo dell’istanza assegnato al nodo worker
-
Richiede un cluster Amazon EKS esistente. Per implementarne uno, consulta Nozioni di base su Amazon EKS.
-
Richiede un provider AWS Identity and Access Management (IAM) OpenID Connect (OIDC) esistente per il cluster. Per determinare se si dispone già di un provider IAM o per crearne uno, consulta Per creare un provider di identità IAM OIDC per il cluster.
Passaggio 1: Creazione di un ruolo IAM per il plug-in CNI di Amazon VPC per Kubernetes
-
Determinare la famiglia IP del cluster.
aws eks describe-cluster --name my-cluster | grep ipFamilyDi seguito viene riportato un output di esempio.
"ipFamily": "ipv4"L’output potrebbe invece restituire
ipv6. -
Creare il ruolo IAM. Puoi usare
eksctlorkubectle la AWS CLI per creare il tuo ruolo IAM.- eksctl
-
-
Creare un ruolo IAM e collegare ad esso la policy IAM con il comando corrispondente alla famiglia IP del cluster. Il comando crea e distribuisce uno AWS CloudFormation stack che crea un ruolo IAM, allega la policy specificata e annota l'account del servizio
aws-nodeKubernetes esistente con l'ARN del ruolo IAM creato.-
IPv4Sostituire
my-clustercon il proprio valore.eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --override-existing-serviceaccounts \ --approve -
IPv6Sostituire
my-clustercon il proprio valore. Sostituisci111122223333con il tuo ID account eAmazonEKS_CNI_IPv6_Policycon il nome della policyIPv6. Se non disponi di una policyIPv6, consulta Creare una policy IAM per i cluster che utilizzano la famiglia IPv6 per crearne una. Per utilizzareIPv6con il cluster, questo deve soddisfare diversi requisiti. Per ulteriori informazioni, consulta Scopri IPv6 gli indirizzi di cluster, pod e servizi.eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --override-existing-serviceaccounts \ --approve
-
-
- kubectl e la CLI AWS
-
-
Visualizzare l’URL del provider OIDC del cluster.
aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output textDi seguito viene riportato un output di esempio.
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLESe non viene restituito alcun output, devi creare un provider OIDC IAM per il cluster.
-
Copia i seguenti contenuti in un file denominato
vpc-cni-trust-policy.json. Sostituisci111122223333con il tuo ID account eEXAMPLED539D4633E53DE1B71EXAMPLEcon l'output restituito nel passaggio precedente. Sostituisciregion-codecon la AWS regione in cui si trova il cluster.{ "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:aud": "sts.amazonaws.com", "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-node" } } } ] } -
Crea il ruolo. Puoi sostituire
AmazonEKSVPCCNIRolecon un nome a tua scelta.aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json" -
Allega la policy IAM richiesta al ruolo. Esegui il comando corrispondente alla famiglia IP del cluster.
-
IPv4aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSVPCCNIRole -
IPv6Sostituisci
111122223333con il tuo ID account eAmazonEKS_CNI_IPv6_Policycon il nome della policyIPv6. Se non disponi di una policyIPv6, consulta Creare una policy IAM per i cluster che utilizzano la famiglia IPv6 per crearne una. Per utilizzareIPv6con il cluster, questo deve soddisfare diversi requisiti. Per ulteriori informazioni, consulta Scopri IPv6 gli indirizzi di cluster, pod e servizi.aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
-
-
Esegui il comando seguente per annotare l’account di servizio
aws-nodecon l’ARN del ruolo IAM creato in precedenza. Sostituire i valori di esempio con i propri valori.kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
-
-
(Facoltativo) Configura il tipo di endpoint del servizio AWS Security Token utilizzato dal tuo account del servizio Kubernetes. Per ulteriori informazioni, consulta Configurare l’endpoint del Servizio di token di sicurezza AWS per un account di servizio.
Passaggio 2: Nuova implementazione dei Pod del plug-in CNI di Amazon VPC per Kubernetes
-
Eliminare e ricreare i Pod esistenti associati all’account di servizio per applicare le variabili di ambiente delle credenziali. L’annotazione non viene applicata ai Pod attualmente in esecuzione senza l’annotazione. Il comando seguente elimina i
aws-nodeDaemonSet Pod esistenti e li distribuisce con l'annotazione dell'account di servizio.kubectl delete Pods -n kube-system -l k8s-app=aws-node -
Confermare che tutti i Pod sono stati riavviati.
kubectl get pods -n kube-system -l k8s-app=aws-node -
Descrivere uno dei Pod e verificare che le variabili di ambiente
AWS_WEB_IDENTITY_TOKEN_FILEeAWS_ROLE_ARNesistano. Sostituiscilocpjw7con il nome di uno dei tuoi Pod restituito nell'output del passaggio precedente.kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'Di seguito viene riportato un output di esempio.
AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/tokenVengono restituiti due set di risultati duplicati perché il Pod contiene due container. I due container hanno gli stessi valori.
Se il Pod utilizza l'endpoint AWS regionale, nell'output precedente viene restituita anche la riga seguente.
AWS_STS_REGIONAL_ENDPOINTS=regional
Passaggio 3: rimozione della policy CNI dal ruolo IAM del nodo
Se al tuo ruolo IAM del nodo Amazon EKS è attualmente associata la IPv6 policy AmazonEKS_CNI_Policy IAM (IPv4) o una policy e hai creato un ruolo IAM separato, invece hai collegato la policy ad esso e l'hai assegnata all'account di servizio aws-node Kubernetes, ti consigliamo di rimuovere la policy dal tuo ruolo di nodo con il comando AWS CLI che corrisponde alla famiglia IP del tuo cluster. Sostituisci AmazonEKSNodeRole con il nome del ruolo del nodo.
-
IPv4aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy -
IPv6Sostituisci
111122223333con il tuo ID account eAmazonEKS_CNI_IPv6_Policycon il nome della policyIPv6.aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy
Creare una policy IAM per i cluster che utilizzano la famiglia IPv6
Se hai creato un cluster che utilizza la famiglia IPv6 e sul cluster è configurata la versione 1.10.1 o successiva del componente aggiuntivo del plug-in CNI di Amazon VPC per Kubernetes, devi creare una policy IAM da assegnare a un ruolo IAM. Se disponi di un cluster che non è stato configurato con la famiglia IPv6 al momento della creazione, prima di utilizzare IPv6, devi creare un nuovo cluster. Per ulteriori informazioni sull’uso di IPv6 con il cluster, consulta Scopri IPv6 gli indirizzi di cluster, pod e servizi.
-
Copia il testo seguente e salvalo in un file denominato
vpc-cni-ipv6-policy.json.{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] } -
Creare la policy IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json