View a markdown version of this page

Gewähren Sie dem EKS Auto Mode Load Balancer-Controller Zugriff auf ein bestimmtes Secret - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

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.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten unter, der sich im rechten Bereich jeder Seite befindet.

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.

Gewähren Sie dem EKS Auto Mode Load Balancer-Controller Zugriff auf ein bestimmtes Secret

In diesem Tutorial gewähren Sie dem Amazon EKS Auto Mode Load Balancer-Controller Lesezugriff auf ein bestimmtes Kubernetes. Secret Dadurch wird die OIDC-Authentifizierung auf einem ALB entsperrt. Ingress Sie verwenden einen Role Namespace-Bereich, der auf die Gruppe ausgerichtet ist. RoleBinding eks:managed

Die Fertigstellung dieses Tutorials dauert ungefähr 15 Minuten. Für die Kubernetes-RBAC-Objekte, die Sie erstellen, fallen keine Gebühren an. AWS

Der Amazon EKS Auto Mode Load Balancer-Controller unterstützt die OIDC-Authentifizierung für ALB-Objekte. Ingress Es verwendet die alb.ingress.kubernetes.io/auth-type: oidc Anmerkung, um diese Authentifizierung zu aktivieren. Um die OIDC-Konfiguration aufzulösen, liest der Controller ein Kubernetes, das in der Anmerkung Secret benannt ist. alb.ingress.kubernetes.io/auth-idp-oidc Die Richtlinie für verwalteten Zugriff gewährt derzeit keine Secret Objekte. Daher schlägt get der Abgleich fehl und es wird eine Meldung ähnlich der folgenden angezeigt:

Failed build model due to ingress: <ns>/<name>: secrets "<secret>" is forbidden: User "arn:aws:sts::<acct>:assumed-role/AWSServiceRoleForAmazonEKS/<session>" cannot get resource "secrets" in API group "" in the namespace "<ns>"

Mithilfe des unter beschriebenen Mechanismus können Sie dem verwalteten Controller get genau den OIDC Secret gewähren, den er benötigt. Gewähren Sie verwalteten EKS Auto Mode-Controllern zusätzliche Kubernetes-RBAC

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie:

  • Ein Amazon EKS-Auto-Mode-Cluster mit dem automatisch erstellten AWSServiceRoleForAmazonEKS Zugriffseintrag.

  • kubectlkonfiguriert mit Clusterzugriff.

  • Die AWS CLI wurde installiert und mit den Berechtigungen für aws sts get-caller-identity und konfiguriertaws eks describe-access-entry.

  • Ein ALBIngress, das die alb.ingress.kubernetes.io/auth-type: oidc Annotation verwendet, und die KubernetesSecret, auf die es verweist.

Schritt 1: Identifizieren Sie den Secret, der zur Zulassungsliste hinzugefügt werden soll

Die OIDC-Konfiguration auf einem ALB Ingress sieht wie folgt aus. Notieren Sie sich den Secret Namen und den Ingress Namespace — die RBAC-Objekte müssen sich im selben Namespace wie der befinden. Secret

annotations: alb.ingress.kubernetes.io/auth-type: oidc alb.ingress.kubernetes.io/auth-idp-oidc: > { "issuer": "...", "authorizationEndpoint": "...", "tokenEndpoint": "...", "userInfoEndpoint": "...", "secretName": "oidc" }

Im Rest dieses Beispiels werden Namespace und Name verwendet. monitoring Secret oidc

Schritt 2: Wenden Sie eine Rolle mit Namespace-Gültigkeitsbereich an und RoleBinding

Dieses Formular gewährt genau den Namen in genau get einem Namespace. Secret Speichern Sie Folgendes unter: eks-managed-oidc-secret-reader.yaml

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: eks-managed-oidc-secret-reader namespace: monitoring rules: - apiGroups: [""] resources: ["secrets"] resourceNames: ["oidc"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: eks-managed-oidc-secret-reader namespace: monitoring subjects: - kind: Group name: eks:managed apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: eks-managed-oidc-secret-reader apiGroup: rbac.authorization.k8s.io

Wenden Sie es an:

kubectl apply -f eks-managed-oidc-secret-reader.yaml

Wenn Sie der Zulassungsliste später weitere Secret Objekte hinzufügen möchten, fügen Sie deren Namen an die Role’s `resourceNames Liste an und wenden Sie sie erneut an.

Schritt 3: Bestätigen Sie, dass Ingress wiederhergestellt wird

Der Load Balancer-Controller gleicht das bei seinem nächsten Durchlauf (in der Ingress Regel innerhalb weniger Minuten) erneut ab. Wenn der Grant funktioniert, wird der vorherige secrets "oidc" is forbidden Fehler nicht mehr auf dem angezeigt Ingress und der Load Balancer arbeitet weiter. Wenn der Fehler weiterhin besteht, überprüfen Sie dasRole’s `namespace, resourceNames und den Betreff erneut. RoleBinding

Den Zuschuss entfernen

Wichtig

Halten Sie das Role und so lange RoleBinding an Ort und Stelle, wie das ALB es Ingress verwendetalb.ingress.kubernetes.io/auth-type: oidc. Wenn Sie sie entfernen, wird die OIDC-Resolution auf dem erneut unterbrochen. Ingress

Wenn Sie OIDC auf dem nicht mehr verwenden, entfernen Sie den Ingress Zuschuss:

kubectl delete rolebinding eks-managed-oidc-secret-reader -n monitoring kubectl delete role eks-managed-oidc-secret-reader -n monitoring