Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA

Das VPCCNIAmazon-Plugin für Kubernetes ist das Netzwerk-Plugin für Pod Vernetzung in EKS Amazon-Clustern. Das Plugin ist verantwortlich für die Zuweisung von VPC IP-Adressen an Kubernetes Knoten und Konfiguration der erforderlichen Netzwerke für Pods auf jedem Knoten. Das Plugin:

  • Erfordert AWS Identity and Access Management Zugriffsverwaltungsberechtigungen (IAM). Wenn Ihr Cluster die IPv4 Familie verwendet, sind die Berechtigungen in der AWS verwalteten Richtlinie `Amazon EKS _ CNI _Policy` spezifiziert.Wenn Ihr Cluster die IPv6 Familie verwendet, müssen die Berechtigungen zu einer von Ihnen erstellten IAM Richtlinie hinzugefügt werden. Anweisungen finden Sie unter. Erstellen Sie eine IAM Richtlinie für Cluster, die die IPv6 Familie verwenden Sie können die Richtlinie an die EKS IAM Amazon-Knotenrolle oder an eine separate IAM Rolle anhängen. Anweisungen zum Anhängen der Richtlinie an die EKS IAM Amazon-Knotenrolle finden Sie unterIAMRolle des EKS Amazon-Knotens. Wir empfehlen Ihnen, sie einer separaten Rolle zuzuweisen, wie in diesem Thema beschrieben.

  • Erzeugt und ist für die Verwendung von konfiguriert Kubernetes Dienstkontoaws-node, das bei der Bereitstellung benannt wurde. Das Dienstkonto ist gebunden an ein Kubernetes clusterrolebenanntaws-node, welchem das Erforderliche zugewiesen ist Kubernetes Berechtigungen.

Anmerkung

Das Tool Pods für die Amazon VPC CNI plugin for Kubernetes Zugriff auf die der EKSIAMAmazon-Knotenrolle zugewiesenen Berechtigungen haben, es sei denn, Sie blockieren den Zugriff aufIMDS. Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

Schritt 1: Erstellen Sie das Amazon VPC CNI plugin for Kubernetes IAMRolle

  1. Ermitteln Sie die IP-Familie Ihres Clusters.

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

    Eine Beispielausgabe sieht wie folgt aus.

    "ipFamily": "ipv4"

    Die Ausgabe kann stattdessen ipv6 zurückgeben.

  2. Erstellen Sie die IAM Rolle. Sie können eksctl oder kubectl und die verwenden AWS CLI, um Ihre IAM Rolle zu erstellen.

    eksctl
    • Erstellen Sie eine IAM Rolle und fügen Sie der Rolle die IAM Richtlinie mit dem Befehl hinzu, der der IP-Familie Ihres Clusters entspricht. Mit dem Befehl wird ein AWS CloudFormation Stack erstellt und bereitgestellt, der eine IAM Rolle erstellt, ihr die von Ihnen angegebene Richtlinie anfügt und die vorhandenen mit Anmerkungen versehen aws-node Kubernetes Dienstkonto mit ARN der IAM Rolle, die erstellt wird.

      • IPv4

        Ersetzen my-cluster mit deinem eigenen Wert.

        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

        Ersetzen my-cluster mit deinem eigenen Wert. Ersetzen 111122223333 mit deiner Konto-ID und ersetze AmazonEKS_CNI_IPv6_Policy mit dem Namen Ihrer IPv6 Police. Wenn Sie noch keine IPv6 Richtlinie haben, finden Sie weitere Informationen unter Erstellen Sie eine IAM Richtlinie für Cluster, die die IPv6 Familie verwenden So erstellen Sie eine. Um IPv6 mit Ihrem Cluster zu verwenden, muss dieser mehrere Anforderungen erfüllen. Weitere Informationen finden Sie unter Erfahren Sie mehr über IPv6 Adressen für Cluster, pods, und Dienste.

        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 und der AWS CLI
    1. Sehen Sie sich den Anbieter Ihres Clusters an. OIDC URL

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

      Eine Beispielausgabe sieht wie folgt aus.

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

      Wenn keine Ausgabe zurückgegeben wird, müssen Sie einen IAM OIDC Anbieter für Ihren Cluster erstellen.

    2. Kopieren Sie den folgenden Inhalt in eine Datei mit dem Namen vpc-cni-trust-policy.json. Ersetzen 111122223333 mit deiner Konto-ID und EXAMPLED539D4633E53DE1B71EXAMPLE mit der im vorherigen Schritt zurückgegebenen Ausgabe. Ersetzen region-code mit der AWS Region, in der sich Ihr Cluster befindet.

      { "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. Erstellen Sie die -Rolle. Sie können ersetzen AmazonEKSVPCCNIRole mit einem beliebigen Namen, den Sie wählen.

      aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json"
    4. Hängen Sie die erforderliche IAM Richtlinie an die Rolle an. Führen Sie den Befehl aus, der der IP-Familie Ihres Clusters entspricht.

      • IPv4

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

        Ersetzen 111122223333 mit Ihrer Konto-ID und AmazonEKS_CNI_IPv6_Policy mit dem Namen Ihrer IPv6 Police. Wenn Sie noch keine IPv6 Richtlinie haben, finden Sie weitere Informationen unter Erstellen Sie eine IAM Richtlinie für Cluster, die die IPv6 Familie verwenden So erstellen Sie eine. Um IPv6 mit Ihrem Cluster zu verwenden, muss dieser mehrere Anforderungen erfüllen. Weitere Informationen finden Sie unter Erfahren Sie mehr über IPv6 Adressen für Cluster, pods, und Dienste.

        aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
    5. Führen Sie den folgenden Befehl aus, um das aws-node Dienstkonto mit ARN der IAM Rolle zu versehen, die Sie zuvor erstellt haben. Ersetzen Sie den example values durch deine eigenen Werte.

      kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
  3. (Optional) Konfigurieren Sie den AWS Security Token Service-Endpunkttyp, der von Ihrem verwendet wird Kubernetes Dienstkonto. Weitere Informationen finden Sie unter Den AWS Security Token Service-Endpunkt für ein Dienstkonto konfigurieren.

Schritt 2: Erneute Bereitstellung Amazon VPC CNI plugin for KubernetesPods

  1. Löschen Sie alle vorhandenen und erstellen Sie sie neu Pods die dem Dienstkonto zugeordnet sind, um die Umgebungsvariablen für die Anmeldeinformationen anzuwenden. Die Anmerkung wird nicht angewendet auf Pods die derzeit ohne die Anmerkung ausgeführt werden. Der folgende Befehl löscht die vorhandenen aws-node DaemonSet Pods und stellt sie mit der Anmerkung zum Dienstkonto bereit.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  2. Bestätigen Sie, dass Pods alles neu gestartet.

    kubectl get pods -n kube-system -l k8s-app=aws-node
  3. Beschreiben Sie einen der Pods und stellen Sie sicher, dass die AWS_ROLE_ARN Umgebungsvariablen AWS_WEB_IDENTITY_TOKEN_FILE und vorhanden sind. Ersetzen cpjw7 mit dem Namen eines Ihrer Pods wurde in der Ausgabe des vorherigen Schritts zurückgegeben.

    kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'

    Eine Beispielausgabe sieht wie folgt aus.

    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

    Zwei Sätze doppelter Ergebnisse werden zurückgegeben, weil Pod enthält zwei Container. Beide Container haben die gleichen Werte.

    Wenn Ihre Pod verwendet den AWS regionalen Endpunkt, dann wird die folgende Zeile auch in der vorherigen Ausgabe zurückgegeben.

    AWS_STS_REGIONAL_ENDPOINTS=regional

Schritt 3: Entfernen Sie die CNI Richtlinie aus der IAM Knotenrolle

Wenn an Ihre EKSIAMAmazon-Knotenrolle derzeit die Richtlinie AmazonEKS_CNI_Policy IAM (IPv4) oder eine IPv6Richtlinie angehängt ist und Sie eine separate IAM Rolle erstellt haben, haben Sie stattdessen die Richtlinie angehängt und sie der aws-node Kubernetes Service-Konto, dann empfehlen wir Ihnen, die Richtlinie mit dem AWS CLI Befehl, der der IP-Familie Ihres Clusters entspricht, aus Ihrer Knotenrolle zu entfernen. Ersetzen AmazonEKSNodeRole mit dem Namen Ihrer Knotenrolle.

  • IPv4

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

    Ersetzen 111122223333 mit deiner Konto-ID und AmazonEKS_CNI_IPv6_Policy mit dem Namen Ihrer IPv6 Police.

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

Erstellen Sie eine IAM Richtlinie für Cluster, die die IPv6 Familie verwenden

Wenn Sie einen Cluster erstellt haben, der die IPv6 Familie verwendet, und der Cluster hat die Version 1.10.1 oder eine neuere Version von Amazon VPC CNI plugin for Kubernetes Wenn das Add-on konfiguriert ist, müssen Sie eine IAM Richtlinie erstellen, die Sie einer IAM Rolle zuweisen können. Wenn Sie über einen vorhandenen Cluster verfügen, den Sie bei der Erstellung nicht mit der IPv6 Familie konfiguriert haben, müssen Sie zur Verwendung IPv6 einen neuen Cluster erstellen. Weitere Informationen zur Verwendung von IPv6 mit Ihrem Cluster finden Sie unter Erfahren Sie mehr über IPv6 Adressen für Cluster, pods, und Dienste.

  1. Kopieren Sie den folgenden Text und speichern Sie ihn in einer Datei mit dem Namen 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. Erstellen Sie die IAM Richtlinie.

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