Configura il VPC CNI plug-in Amazon da utilizzare IRSA - Amazon EKS

Aiutaci 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à.

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à.

Configura il VPC CNI plug-in Amazon da utilizzare IRSA

Il VPCCNIplug-in Amazon per Kubernetes è il plug-in di rete per Pod networking nei EKS cluster Amazon. Il plugin è responsabile dell'assegnazione degli VPC indirizzi IP a Kubernetes nodi e configurazione della rete necessaria per Pods su ogni nodo. Il plug-in:

  • Richiede le autorizzazioni AWS Identity and Access Management (IAM). Se il tuo cluster utilizza la IPv4 famiglia, le autorizzazioni sono specificate nella politica AWS gestita `Amazon EKS _ CNI _Policy`. Se il tuo cluster utilizza la IPv6 famiglia, le autorizzazioni devono essere aggiunte a una IAM politica che crei; per istruzioni, consulta. Crea IAM policy per i cluster che utilizzano la famiglia IPv6 Puoi collegare la policy al IAM ruolo del EKS nodo Amazon o a un IAM ruolo separato. Per istruzioni su come allegare la policy al IAM ruolo del EKS nodo Amazon, consultaIAMRuolo EKS del nodo Amazon. Si consiglia di assegnarlo a un ruolo separato, come descritto in questo argomento.

  • Crea ed è configurato per utilizzare un Kubernetes account di servizio denominato al aws-node momento della distribuzione. L'account di servizio è associato a Kubernetes clusterroledenominatoaws-node, a cui viene assegnato il valore richiesto Kubernetes autorizzazioni.

Nota

Il Pods per Amazon VPC CNI plugin for Kubernetes avere accesso alle autorizzazioni assegnate al IAMruolo del EKS nodo Amazon, a meno che tu non blocchi l'accesso aIMDS. Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

Fase 1: Creare il Amazon VPC CNI plugin for Kubernetes IAMruolo

  1. Determina la famiglia IP del cluster.

    aws eks describe-cluster --name my-cluster | grep ipFamily

    Di seguito viene riportato un output di esempio:

    "ipFamily": "ipv4"

    L'output potrebbe invece restituire ipv6.

  2. Crea il IAM ruolo. Puoi usare eksctl or kubectl and the AWS CLI per creare il tuo IAM ruolo.

    eksctl
    • Crea un IAM ruolo e associa la IAM policy al ruolo con il comando che corrisponde alla famiglia IP del tuo cluster. Il comando crea e distribuisce uno AWS CloudFormation stack che crea un IAM ruolo, allega la policy specificata e annota quella esistente aws-node Kubernetes account di servizio con il ARN IAM ruolo creato.

      • IPv4

        Replace (Sostituisci) my-cluster con il tuo 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
      • IPv6

        Replace (Sostituisci) my-cluster con il tuo valore. Replace (Sostituisci) 111122223333 con l'ID del tuo account e sostituisci AmazonEKS_CNI_IPv6_Policy con il nome della tua IPv6 polizza. Se non disponi di una IPv6 politica, consulta Crea IAM policy per i cluster che utilizzano la famiglia IPv6 per crearne una. Per utilizzare IPv6 con il cluster, questo deve soddisfare diversi requisiti. Per ulteriori informazioni, consulta Scopri IPv6 gli indirizzi verso i cluster, podse 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 il AWS CLI
    1. Visualizza il provider del tuo cluster. OIDC URL

      aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

      Di seguito viene riportato un output di esempio:

      https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE

      Se non viene restituito alcun output, è necessario creare un IAM OIDC provider per il cluster.

    2. Copia il seguente contenuto in un file denominato vpc-cni-trust-policy.json. Sostituisci 111122223333 con l'ID del tuo account e EXAMPLED539D4633E53DE1B71EXAMPLE con l'output restituito nel passaggio precedente. Replace (Sostituisci) region-code con 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.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-node" } } } ] }
    3. Crea il ruolo. Puoi sostituire AmazonEKSVPCCNIRole con qualsiasi nome tu scelga.

      aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json"
    4. Allega la IAM politica richiesta al ruolo. Esegui il comando corrispondente alla famiglia IP del cluster.

      • IPv4

        aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSVPCCNIRole
      • IPv6

        Replace (Sostituisci) 111122223333 con l'ID del tuo account e AmazonEKS_CNI_IPv6_Policy con il nome della tua IPv6 polizza. Se non disponi di una IPv6 politica, consulta Crea IAM policy per i cluster che utilizzano la famiglia IPv6 per crearne una. Per utilizzare IPv6 con il cluster, questo deve soddisfare diversi requisiti. Per ulteriori informazioni, consulta Scopri IPv6 gli indirizzi verso i cluster, podse servizi.

        aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
    5. Esegui il comando seguente per annotare l'account ARN di aws-node servizio con il IAM ruolo che hai creato in precedenza. Sostituisci il example values con i tuoi valori.

      kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
  3. (Facoltativo) Configura il tipo di endpoint del servizio AWS Security Token utilizzato dal Kubernetes account di servizio. Per ulteriori informazioni, consulta Configurare l'endpoint del servizio AWS Security Token per un account di servizio.

Fase 2: Ridistribuzione Amazon VPC CNI plugin for KubernetesPods

  1. Eliminare e ricreare qualsiasi elemento esistente Pods che sono associati all'account di servizio per applicare le variabili di ambiente delle credenziali. L'annotazione non viene applicata a Pods che sono attualmente in esecuzione senza l'annotazione. Il comando seguente elimina l'esistente aws-node DaemonSet Pods e li distribuisce con l'annotazione dell'account di servizio.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  2. Conferma che Pods tutto riavviato.

    kubectl get pods -n kube-system -l k8s-app=aws-node
  3. Descrivi uno dei Pods e verifica che le variabili AWS_WEB_IDENTITY_TOKEN_FILE e di AWS_ROLE_ARN ambiente esistano. Replace (Sostituisci) cpjw7 con il nome di uno dei tuoi Pods 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/token

    Vengono restituiti due set di risultati duplicati perché Pod contiene due contenitori. I due container hanno gli stessi valori.

    Se le ricette di Pod utilizza l'endpoint AWS regionale, quindi nell'output precedente viene restituita anche la riga seguente.

    AWS_STS_REGIONAL_ENDPOINTS=regional

Fase 3: Rimuovere la CNI policy dal ruolo del nodo IAM

Se al tuo IAMruolo Amazon EKS node è attualmente associata la IPv6policy AmazonEKS_CNI_Policy IAM (IPv4) o una policy e hai creato un IAM ruolo separato, hai invece allegato la policy ad esso e l'hai assegnata a aws-node Kubernetes account di servizio, quindi ti consigliamo di rimuovere la policy dal tuo ruolo di nodo con il AWS CLI comando che corrisponde alla famiglia IP del tuo cluster. Replace (Sostituisci) AmazonEKSNodeRole con il nome del ruolo del nodo.

  • IPv4

    aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
  • IPv6

    Replace (Sostituisci) 111122223333 con l'ID del tuo account e AmazonEKS_CNI_IPv6_Policy con il nome della tua IPv6 polizza.

    aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy

Crea IAM policy per i cluster che utilizzano la famiglia IPv6

Se hai creato un cluster che utilizza la IPv6 famiglia e il cluster ha una versione 1.10.1 o successiva della Amazon VPC CNI plugin for Kubernetes componente aggiuntivo configurato, è necessario creare una IAM politica da assegnare a un IAM ruolo. Se disponi di un cluster esistente che non hai configurato con la IPv6 famiglia al momento della creazione, per IPv6 utilizzarlo devi creare un nuovo cluster. Per ulteriori informazioni sull'uso di IPv6 con il cluster, consulta Scopri IPv6 gli indirizzi verso i cluster, podse servizi.

  1. 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/*" ] } ] }
  2. Crea la IAM policy.

    aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json