View a markdown version of this page

Autoriser le contrôleur d'équilibrage de charge en mode automatique EKS à accéder à un secret spécifique - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Autoriser le contrôleur d'équilibrage de charge en mode automatique EKS à accéder à un secret spécifique

Dans ce didacticiel, vous accordez au contrôleur d'équilibrage de charge Amazon EKS Auto Mode l'accès en lecture à un Secret Kubernetes spécifique. Cela débloque l'authentification OIDC sur un ALB. Ingress Vous utilisez un espace de noms limité Role et RoleBinding ciblé sur le groupe. eks:managed

Ce didacticiel dure environ 15 minutes. Les objets Kubernetes RBAC que vous créez ne sont pas payants. AWS

Le contrôleur d'équilibrage de charge Amazon EKS Auto Mode prend en charge l'authentification OIDC sur les objets Ingress ALB. Il utilise l'alb.ingress.kubernetes.io/auth-type: oidcannotation pour activer cette authentification. Pour résoudre la configuration OIDC, le contrôleur lit un Kubernetes Secret nommé dans l'annotation. alb.ingress.kubernetes.io/auth-idp-oidc Sa politique d'accès géré n'autorise get actuellement aucun Secret objet. Le réconciliateur échoue donc avec un message similaire à :

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>"

À l'aide du mécanisme décrit dansAccordez un Kubernetes RBAC supplémentaire aux contrôleurs gérés EKS Auto Mode, vous pouvez attribuer au contrôleur géré exactement get l'OIDC dont Secret il a besoin.

Conditions préalables

Avant de commencer, assurez-vous d'avoir :

  • Un cluster Amazon EKS Auto Mode avec l'entrée d'AWSServiceRoleForAmazonEKSaccès créée automatiquement.

  • kubectlconfiguré avec un accès au cluster.

  • La AWS CLI est installée et configurée avec des autorisations pour aws sts get-caller-identity etaws eks describe-access-entry.

  • Un ALB Ingress qui utilise l'alb.ingress.kubernetes.io/auth-type: oidcannotation et le Secret Kubernetes auquel il fait référence.

Étape 1 : Identifiez le secret à ajouter à la liste des autorisations

La configuration OIDC sur un ALB Ingress ressemble à ce qui suit. Enregistrez le Secret nom et l'Ingressespace de noms : les objets RBAC doivent se trouver dans le même espace de noms que le. Secret

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

Le reste de cet exemple utilise l'espace de noms monitoring et Secret le nomoidc.

Étape 2 : appliquez un rôle limité à l'espace de noms et RoleBinding

Ce formulaire attribue exactement get le nom Secret dans un seul espace de noms. Enregistrez les informations suivantes sous 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

Appliquez-le :

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

Pour ajouter d'autres Secret objets à la liste d'autorisation ultérieurement, ajoutez leurs noms à la Role’s `resourceNames liste et présentez une nouvelle demande.

Étape 3 : Confirmez que l'entrée est rétablie

Le contrôleur d'équilibrage de charge les réconcilie Ingress lors de son prochain passage (généralement en quelques minutes). Lorsque la subvention fonctionne, l'secrets "oidc" is forbiddenerreur précédente cesse d'apparaître Ingress et l'équilibreur de charge progresse. Si l'erreur persiste, revérifiez le Role’s `namespaceresourceNames, et le RoleBinding sujet.

Supprimer la subvention

Important

Maintenez Role le sable RoleBinding en place aussi longtemps que l'ALB l'Ingressutilisealb.ingress.kubernetes.io/auth-type: oidc. Leur suppression interrompt à nouveau la résolution OIDC sur le. Ingress

Si vous arrêtez d'utiliser OIDC sur leIngress, supprimez la subvention :

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