Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA
Das Amazon VPC CNI-Plug-in für Kubernetes
Anmerkung
Das Amazon-VPC-CNI-Plugin unterstützt auch Amazon EKS Pod Identities. Weitere Informationen finden Sie unter Zuordnung einer IAM-Rolle einem Kubernetes-Servicekonto.
Das Plugin:
-
Erfordert AWS Identity and Access Management (IAM)-Berechtigungen. Wenn Ihr Cluster die
IPv4-Familie verwendet, werden die Berechtigungen in der vonAmazonEKS_CNI_PolicyAWS verwalteten Richtlinie angegeben. Wenn Ihr Cluster dieIPv6-Familie verwendet, müssen die Berechtigungen 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 verwendet. Sie können diese Richtlinie der Amazon-EKS-Knoten-IAM-Rolle oder einer separaten IAM-Rolle anfügen. Anweisungen zum Anfügen der Richtlinie an die IAM-Rolle des Amazon-EKS-Knotens finden Sie unter Amazon-EKS-Knoten-IAM-Rolle. Wir empfehlen Ihnen, sie einer separaten Rolle zuzuweisen, wie in diesem Thema beschrieben. -
Erstellt und konfiguriert ein Kubernetes-Servicekonto mit dem Namen
aws-node, wenn es bereitgestellt wird. Das Servicekonto ist an ein Kubernetesclusterrolenamensaws-nodegebunden, dem die erforderlichen Kubernetes-Berechtigungen zugewiesen sind.
Anmerkung
Die Pods für das Amazon-VPC-CNI-Plugin für Kubernetes haben Zugriff auf die der IAM-Rolle des Amazon-EKS-Knotens zugewiesenen Berechtigungen, sofern Sie den Zugriff auf IMDS nicht blockieren Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist
-
Erfordert einen vorhandenen Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS.
-
Erfordert einen vorhandenen AWS Identity and Access Management (IAM) OpenID Connect (OIDC)-Anbieter für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits über einen verfügen oder einen erstellen müssen, finden Sie unter Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster.
Schritt 1: Amazon-VPC-CNI-Plugin für die Kubernetes-IAM-Rolle erstellen
-
Ermitteln Sie die IP-Familie Ihres Clusters.
aws eks describe-cluster --name my-cluster | grep ipFamilyEine Beispielausgabe sieht wie folgt aus.
"ipFamily": "ipv4"Die Ausgabe kann stattdessen
ipv6zurückgeben. -
Erstellen Sie die IAM-Rolle. Sie können
eksctloderkubectlund die AWS CLI für die Erstellung Ihrer IAM-Rolle verwenden.- eksctl
-
-
Erstellen Sie eine IAM-Rolle und fügen Sie der Rolle die IAM-Richtlinie mit dem Befehl zu, der der IP-Familie Ihres Clusters entspricht. Der Befehl erstellt einen AWS-CloudFormation-Stack und stellt ihn bereit, der eine IAM-Rolle erstellt, die von Ihnen angegebene Richtlinie daran anfügt und das vorhandene
aws-node-Kubernetes-Servicekonto mit dem ARN der erstellten IAM-Rolle annotiert.-
IPv4Ersetzen Sie
my-clusterdurch Ihren 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 -
IPv6Ersetzen Sie
my-clusterdurch Ihren eigenen Wert. Ersetzen Sie111122223333durch Ihre Konto-ID und ersetzen SieAmazonEKS_CNI_IPv6_Policymit dem Namen IhrerIPv6-Richtlinie. Wenn Sie noch keineIPv6-Richtlinie haben, lesen Sie Erstellen Sie eine IAM-Richtlinie für Cluster, die die IPv6-Familie verwendet, um eine zu erstellen. UmIPv6mit Ihrem Cluster zu verwenden, muss dieser mehrere Anforderungen erfüllen. Weitere Informationen finden Sie unter Informationen zu IPv6-Adressen für Cluster, Pods und Services.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 die AWS CLI
-
-
Zeigen Sie die OIDC-Anbieter-URL Ihres Clusters an.
aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output textEine Beispielausgabe sieht wie folgt aus.
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLEWenn keine Ausgabe erfolgt, müssen Sie einen IAM-OIDC-Anbieter für Ihr Cluster erstellen.
-
Kopieren Sie den folgenden Inhalt in eine Datei mit dem Namen
vpc-cni-trust-policy.json. Ersetzen Sie111122223333durch Ihre Konto-ID undEXAMPLED539D4633E53DE1B71EXAMPLEvon der im vorherigen Schritt zurückgegebenen Ausgabe. Ersetzen Sie denregion-codedurch die 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" } } } ] } -
Erstellen Sie die -Rolle. Sie können
AmazonEKSVPCCNIRolemit einem beliebigen von Ihnen gewählten Namen ersetzen.aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json" -
Fügen Sie der Rolle die erforderliche IAM-Richtlinie an. Führen Sie den Befehl aus, der der IP-Familie Ihres Clusters entspricht.
-
IPv4aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSVPCCNIRole -
IPv6Ersetzen Sie
111122223333durch Ihre Konto-ID und ersetzen SieAmazonEKS_CNI_IPv6_Policydurch den Namen IhrerIPv6-Richtlinie. Wenn Sie noch keineIPv6-Richtlinie haben, lesen Sie Erstellen Sie eine IAM-Richtlinie für Cluster, die die IPv6-Familie verwendet, um eine zu erstellen. UmIPv6mit Ihrem Cluster zu verwenden, muss dieser mehrere Anforderungen erfüllen. Weitere Informationen finden Sie unter Informationen zu IPv6-Adressen für Cluster, Pods und Services.aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
-
-
Führen Sie den folgenden Befehl aus und fügen Sie dem
aws-node-Servicekonto den ARN der IAM-Rolle hinzu, die Sie zuvor erstellt haben. Ersetzen Sie dieBeispielwertedurch eigene Werte.kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole
-
-
(Optional) Konfigurieren Sie den von Ihrem Kubernetes-Servicekonto verwendeten Endpunkttyp des AWS-Sicherheitstoken-Service. Weitere Informationen finden Sie unter Konfiguration des Endpunkts des AWS-Sicherheitstoken-Service für ein Servicekonto.
Schritt 2: Amazon-VPC-CNI-Plugin für Kubernetes-Pods erneut bereitstellen
-
Löschen Sie alle vorhandenen Pods, die dem Servicekonto zugeordnet sind, und erstellen Sie sie neu, um die Umgebungsvariablen für Anmeldeinformationen anzuwenden. Die Annotation wird nicht auf Pods angewendet, die derzeit ohne die Annotation ausgeführt werden. Mit dem folgenden Befehl werden die vorhandenen
aws-node-DaemonSet-Pods gelöscht und mit der Servicekonto-Annotation bereitgestellt.kubectl delete Pods -n kube-system -l k8s-app=aws-node -
Bestätigen Sie, dass alle Pods neu gestartet wurden.
kubectl get pods -n kube-system -l k8s-app=aws-node -
Beschreiben Sie einen der Pods und überprüfen Sie, ob die Umgebungsvariablen
AWS_WEB_IDENTITY_TOKEN_FILEundAWS_ROLE_ARNvorhanden sind. Ersetzen Siecpjw7mit dem Namen eines Ihrer Pods, der in der Ausgabe des vorherigen Schritts zurückgegeben wurde.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/tokenZwei Sätze doppelter Ergebnisse werden zurückgegeben, da der Pod zwei Container enthält. Beide Container haben die gleichen Werte.
Wenn Ihr Pod den regionalen AWS-Endpunkt verwendet, dann wird in der vorherigen Ausgabe auch die folgende Zeile zurückgegeben.
AWS_STS_REGIONAL_ENDPOINTS=regional
Schritt 3: Entfernen Sie die CNI-Richtlinie aus der Knoten-IAM-Rolle
Wenn Ihrer Amazon-EKS-Knoten-IAM-Rolle derzeit die AmazonEKS_CNI_Policy IAM (IPv4)-Richtlinie oder eine IPv6-Richtlinie zugeordnet ist und Sie eine separate IAM-Rolle erstellt, dieser stattdessen die Richtlinie zugeordnet und sie dem aws-node-Kubernetes-Servicekonto zugewiesen haben, empfehlen wir Ihnen, die Richtlinie mit dem AWS-CLI-Befehl, welcher der IP-Familie Ihres Clusters entspricht, aus Ihrer Knotenrolle zu entfernen. Ersetzen Sie AmazonEKSNodeRole durch den Namen Ihrer Knotenrolle.
-
IPv4aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy -
IPv6Ersetzen Sie
111122223333durch Ihre Konto-ID und ersetzen SieAmazonEKS_CNI_IPv6_Policydurch den Namen IhrerIPv6-Richtlinie.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 verwendet
Wenn Sie einen Cluster erstellt haben, der die IPv6-Familie verwendet, und für den Cluster die Version 1.10.1 oder höher des Amazon-VPC-CNI-Plugins für das Kubernetes-Add-On konfiguriert ist, müssen Sie eine IAM-Richtlinie erstellen, die Sie einer IAM-Rolle zuweisen können. Wenn Sie einen vorhandenen Cluster haben, den Sie bei der Erstellung nicht mit der IPv6-Familie konfiguriert haben, müssen Sie zur Verwendung von IPv6 einen neuen Cluster erstellen. Weitere Informationen zur Verwendung von IPv6 mit Ihrem Cluster finden Sie unter Informationen zu IPv6-Adressen für Cluster, Pods und Services.
-
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/*" ] } ] } -
Erstellen Sie die IAM-Richtlinie.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json