View a markdown version of this page

Concedi al controller di bilanciamento del carico EKS Auto Mode l'accesso a un segreto specifico - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Concedi al controller di bilanciamento del carico EKS Auto Mode l'accesso a un segreto specifico

In questo tutorial, concedi al controller di bilanciamento del carico Amazon EKS Auto Mode l'accesso in lettura a un Kubernetes specifico. Secret Questo sblocca l'autenticazione OIDC su un ALB. Ingress Si utilizza un namespace Role con ambito e destinato al gruppo. RoleBinding eks:managed

Il completamento di questo tutorial richiede circa 15 minuti. Gli oggetti Kubernetes RBAC creati non comportano costi. AWS

Il controller di bilanciamento del carico Amazon EKS Auto Mode supporta l'autenticazione OIDC sugli oggetti ALB. Ingress Utilizza l'alb.ingress.kubernetes.io/auth-type: oidcannotazione per abilitare questa autenticazione. Per risolvere la configurazione OIDC, il controller legge un Secret Kubernetes denominato nell'annotazione. alb.ingress.kubernetes.io/auth-idp-oidc La sua politica di accesso gestito attualmente non consente la concessione Secret degli oggetti, quindi get il riconciliatore fallisce con un messaggio simile a:

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

Utilizzando il meccanismo descritto inConcedere un RBAC Kubernetes aggiuntivo ai controller gestiti EKS Auto Mode, è possibile concedere al controller gestito esattamente l'getSecretOIDC di cui ha bisogno.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • Un cluster Amazon EKS Auto Mode con la voce di AWSServiceRoleForAmazonEKS accesso creata automaticamente.

  • kubectlconfigurato con accesso al cluster.

  • La AWS CLI installata e configurata con le autorizzazioni per aws sts get-caller-identity e. aws eks describe-access-entry

  • Un ALB Ingress che utilizza l'alb.ingress.kubernetes.io/auth-type: oidcannotazione e il Kubernetes a cui fa riferimento. Secret

Fase 1: Identifica il segreto da aggiungere all'elenco delle autorizzazioni

La configurazione OIDC su un ALB è la Ingress seguente. Registra il Secret nome e lo spazio dei Ingress nomi: gli oggetti RBAC devono risiedere nello stesso spazio dei nomi di. Secret

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

Il resto di questo esempio utilizza namespace e name. monitoring Secret oidc

Passaggio 2: applicare un ruolo con ambito di namespace e RoleBinding

Questo modulo concede esattamente un nome get in un unico namespace. Secret Salva quanto segue come: 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

Applicalo:

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

Per aggiungere altri Secret oggetti all'elenco degli oggetti consentiti in un secondo momento, aggiungi i loro nomi all'Role’s `resourceNameselenco e riapplica.

Fase 3: Conferma il ripristino di Ingress

Il controller del load balancer li riconcilia al passaggio successivo (Ingressin genere entro pochi minuti). Quando la concessione funziona, l'secrets "oidc" is forbiddenerrore precedente smette di apparire su Ingress e il load balancer procede. Se l'errore persiste, ricontrolla il Role’s `namespaceresourceNames, e l'oggetto. RoleBinding

Rimozione della sovvenzione

Importante

Mantieni Role la mano RoleBinding in posizione per tutto il tempo in cui l'ALB lo Ingress utilizzaalb.ingress.kubernetes.io/auth-type: oidc. La loro rimozione interrompe nuovamente la risoluzione OIDC su. Ingress

Se smetti di usare OIDC su, rimuovi la Ingress concessione:

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