Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Warum erhalte ich den Fehler „WebIdentityErr“, wenn ich den AWS Load Balancer Controller in Amazon EKS verwende?
Wenn ich versuche, den AWS Load Balancer Controller in Amazon Elastic Kubernetes Service (Amazon EKS) zu verwenden, erhalte ich die Fehlermeldung „WebIdentityErr“.
Kurzbeschreibung
Wenn Sie den AWS Load Balancer Controller in Amazon EKS verwenden, wird möglicherweise der folgende Fehler angezeigt:
„konnte den vorhandenen LoadBalancer aufgrund von WebIdentityErr nicht finden: Anmeldeinformationen konnten nicht abgerufen werden\nverursacht durch: AccessDenied: Nicht zur Ausführung von sts:AssumeRoleWithWebIdentity autorisiert\n\tstatus code: 403“
Dieser Fehler tritt aus den folgenden Gründen auf:
- Falsche Dienstkontokonfigurationen
- Falsches Vertrauensverhältnis der AWS Identity and Access Management (IAM) -Rolle, die Sie im Dienstkonto verwenden
Wenn Sie den AWS Load Balancer Controller verwenden, führen Worker-Knoten die Aufgaben aus. Sie müssen IAM-Berechtigungen verwenden, um diesen Worker-Knoten Zugriff auf die Application Load Balancer- oder Network Load Balancer-Ressourcen zu gewähren. Verwenden Sie IAM-Rollen für das Dienstkonto, um die IAM-Berechtigungen einzurichten. Oder hängen Sie die IAM-Berechtigungen direkt an die IAM-Rollen des Worker-Knotens an. Weitere Informationen finden Sie unter Installation des AWS Load Balancer-Controller auf der Kubernetes-Website.
Lösung
Falsche Dienstkontokonfigurationen
Gehen Sie wie folgt vor, um zu überprüfen, ob Sie Ihr Dienstkonto richtig konfiguriert haben:
-
Überprüfen Sie den Namen des Dienstkontos, der in Ihrer Bereitstellung definiert ist:
kubectl describe deploy aws-load-balancer-controller -n kube-system | grep -i "Service Account" -
Beschreiben Sie das Dienstkonto:
kubectl describe sa aws-load-balancer-controller -n kube-system -
Überprüfen Sie die Anmerkung zum Dienstkonto für die IAM-Rolle:
Annotations: eks.amazonaws.com/role-arn:arn:aws:iam::xxxxxxxxxx:role/ AMAZON_EKS_LOAD_BALANCER_CONTROLLER_ROLE -
Wenn die Anmerkung fehlt oder falsch ist, aktualisieren Sie die Anmerkung. Stellen Sie sicher, dass Sie die IAM-Rolle korrekt einem Dienstkonto zugeordnet haben:
kubectl annotate serviceaccount -n SERVICE_ACCOUNT_NAMESPACE SERVICE_ACCOUNT_NAME \ eks.amazonaws.com/role-arn=arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE_NAME -
Starten Sie die AWS Load Balancer Controller-Bereitstellung neu, um die Pod-Anmeldeinformationen zu aktualisieren.
kubectl rollout restart deployment/aws-load-balancer-controller -n kube-system
Falsche Vertrauensbeziehung zwischen der verwendeten IAM-Rolle und dem Dienstkonto
Wenn Sie die Vertrauensstellung zwischen Ihrer IAM-Rolle und Ihrem Dienstkonto herstellen, können Probleme auftreten. Sehen Sie sich die folgenden Beispiele für häufige Fehler an, die beim Aufbau der Vertrauensbeziehung auftreten.
Die IAM-Rolle oder Vertrauensbeziehung ist für die Aktion „sts:AssumeRoleWithWebIdentity“ nicht korrekt definiert
Stellen Sie sicher, dass die Vertrauensbeziehung für die Aktion sts:AssumeRoleWithWebIdentity und nicht für die Aktion sts:AssumeRole korrekt definiert ist.
Das folgende Beispiel ist eine Vertrauensbeziehung, die nicht korrekt definiert ist:
{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "xxxxx.amazonaws.com" }, "Action": "sts:AssumeRole" }
Um dieses Problem zu beheben, definieren Sie die Vertrauensstellung für die Aktion sts:AssumeRoleWithWebIdentity:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT:oidc-provider/oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_OIDC-PROVIDER_ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_OIDC_PROVIDER_ID:sub": "system:serviceaccount:kube-system:LOAD_BALANCER_CONTROLLER_SERVICE_ACCOUNT", "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_OIDC_PROVIDER_ID:aud": "sts.amazonaws.com" } } } ] }
Hinweis: Ersetzen Sie alle Variablen durch Ihre eigenen Werte.
Um dieselbe IAM-Rolle für mehrere Cluster in einem Konto zu verwenden, definieren Sie die Vertrauensbeziehung:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS-ACCOUNT:oidc-provider/oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_1_OIDC-PROVIDER_ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_1_OIDC_PROVIDER_ID:sub": "system:serviceaccount: kube-system:LOAD_BALANCER_CONTROLLER_SERVICE_ACCOUNT", "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_1_OIDC_PROVIDER_ID:aud": "sts.amazonaws.com" } } }, { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT:oidc-provider/oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_2_OIDC_PROVIDER_ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_2_OIDC_PROVIDER_ID:sub": "system:serviceaccount: kube-system:LOAD_BALANCER_CONTROLLER_SERVICE_ACCOUNT", "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_2_OIDC_PROVIDER_ID:aud": "sts.amazonaws.com" } } } ] }
Falsche OIDC-Anbieter-ID, wenn Sie einen Amazon EKS-Cluster erstellen
Erstellen und verifizieren Sie einen OpenID Connect (OIDC) -Anbieter für Ihren Amazon EKS-Cluster. Stellen Sie sicher, dass die OIDC-Anbieter-ID und die zugehörige AWS-Region korrekt aufgeführt sind. Andernfalls erhalten Sie einen WebIdentityErr-Fehler.
Der Name des Dienstkontos oder sein Namespace wurden nicht korrekt eingegeben
Überprüfen Sie Ihre AWS Load Balancer Controller-Bereitstellung. Wenn Sie Ihre Bereitstellung aktualisieren, stellen Sie sicher, dass Sie den richtigen Dienstkontonamen und den zugehörigen Namespace eingeben.
Fehlende „sts.amazonaws.com“ -Schritte in der Vertrauensbeziehung
Wenn die mit Ihrem EKS-Pod verknüpfte Servicerolle den STS-Vorgang für die AssumeRoleWithWebIdentity-Aktion nicht ausführen kann, aktualisieren Sie die Vertrauensstellung. Um einen STS-Vorgang ausführen zu können, muss die Vertrauensbeziehung sts.amazonaws.com umfassen:
"Condition": { "StringEquals": { "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_1_OIDC_PROVIDER_ID:sub": "system:serviceaccount:kube-system:LOAD_BALANCER_CONTROLLER_ACCOUNT", "oidc.eks.REGION.amazonaws.com/id/EKS_CLUSTER_1_OIDC_PROVIDER_ID:aud": "sts.amazonaws.com" } }
Weitere Informationen zu IAM-Bedingungen mit mehreren Schlüsseln oder Werten finden Sie unter Bedingungen mit mehreren Kontextschlüsseln oder -werten.
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 10 Monaten
AWS OFFICIALAktualisiert vor einem Jahr