Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
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à.
Grant IAM accesso degli utenti a Kubernetes con un ConfigMap
Importante
Il aws-auth
ConfigMap è obsoleto. Il metodo consigliato per gestire l'accesso a Kubernetes APIsè Access Entries.
L'accesso al cluster tramite IAMprincipals è abilitato dall'AWS IAMAuthenticator per Kubernetesaws-auth
ConfigMap
. Per tutte le aws-auth
ConfigMap
impostazioni, consulta Full Configuration Format
Aggiungi IAM i principali al tuo cluster Amazon EKS
Quando crei un EKS cluster Amazon, al IAMprincipale che crea il cluster vengono automaticamente concesse system:masters
le autorizzazioni nella configurazione di controllo degli accessi (RBAC) basata sui ruoli del cluster nel piano di controllo AmazonEKS. Questo principale IAM non viene visualizzato in una configurazione visibile qualsiasi, quindi assicurati di tenere traccia di quale principale IAM ha originariamente creato il cluster. Per concedere ad altri IAM principali la possibilità di interagire con il tuo cluster, modifica l'interno aws-auth ConfigMap
Kubernetes e crea un Kubernetes rolebinding
o clusterrolebinding
con il nome group
di a specificato inaws-auth ConfigMap
.
Nota
Per ulteriori informazioni sull' Kubernetes configurazione del controllo degli accessi (RBAC) basato sul ruolo, vedere Utilizzo RBAC dell'autorizzazione
Per aggiungere un IAM principale a un EKS cluster Amazon
-
Determina quali credenziali
kubectl
vengono utilizzate per accedere al cluster. Sul computer, è possibile vedere quali credenzialikubectl
utilizza con il seguente comando. Sostituisci
con il percorso del file~/.kube/config
kubeconfig
se non si utilizza il percorso predefinito.cat
~/.kube/config
Di seguito viene riportato un output di esempio.
[...] contexts: - context: cluster:
my-cluster.
user:region-code
.eksctl.ioadmin@my-cluster.
name:region-code
.eksctl.ioadmin@my-cluster.
current-context:region-code
.eksctl.ioadmin@my-cluster.
[...]region-code
.eksctl.ioNell'output dell'esempio precedente, le credenziali per un utente denominato
sono configurate per un cluster denominatoadmin
. Se si tratta dell'utente che ha creato il cluster, ha già accesso al cluster. Se non è l'utente che ha creato il cluster, devi completare i passaggi rimanenti per abilitare l'accesso al cluster per altri IAM principali. IAMle migliori pratiche consigliano di concedere le autorizzazioni ai ruoli anziché agli utenti. Per visualizzare gli altri principali che hanno attualmente accesso al cluster, esegui il comando seguente:my-cluster
kubectl describe -n kube-system configmap/aws-auth
Di seguito viene riportato un output di esempio.
Name: aws-auth Namespace: kube-system Labels: <none> Annotations: <none> Data ==== mapRoles: ---- - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::
111122223333
:role/my-node-role
username: system:node:{{EC2PrivateDNSName}} BinaryData ==== Events: <none>L'esempio precedente è una
aws-auth
ConfigMap
predefinita. Solo il ruolo dell'istanza del nodo ha accesso al cluster. -
Assicurati di averne uno esistente Kubernetes
roles
erolebindings
oclusterroles
e suclusterrolebindings
cui puoi mappare IAM i principi. Per ulteriori informazioni su queste risorse, vedere Utilizzo RBAC dell'autorizzazionein Kubernetes documentazione. -
Visualizza le tue esistenti Kubernetes
roles
oppureclusterroles
.Roles
sono limitati anamespace
, maclusterroles
sono limitati al cluster.kubectl get roles -A
kubectl get clusterroles
-
Visualizza i dettagli di uno
role
o quelliclusterrole
restituiti nell'output precedente e conferma che disponga delle autorizzazioni (rules
) che desideri che IAM i tuoi principali abbiano nel cluster.Sostituisci
con un nome delrole-name
role
restituito nell'output del comando precedente. Sostituisci
con lo spazio dei nomi delkube-system
role
.kubectl describe role
role-name
-nkube-system
Sostituisci
con un nome delcluster-role-name
clusterrole
restituito nell'output del comando precedente.kubectl describe clusterrole
cluster-role-name
-
Visualizza il tuo esistente Kubernetes
rolebindings
oppureclusterrolebindings
.Rolebindings
sono limitati anamespace
, maclusterrolebindings
sono limitati al cluster.kubectl get rolebindings -A
kubectl get clusterrolebindings
-
Visualizza i dettagli di
rolebinding
oclusterrolebinding
e verifica che dispongano di unrole
orclusterrole
della fase precedente elencato come unroleRef
e un nome di gruppo elencato persubjects
.Sostituisci
con un nome delrole-binding-name
rolebinding
restituito nell'output del comando precedente. Sostituisci
con lokube-system
namespace
delrolebinding
.kubectl describe rolebinding
role-binding-name
-nkube-system
Di seguito viene riportato un output di esempio.
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name:
eks-console-dashboard-restricted-access-role-binding
namespace:default
subjects: - kind: Group name:eks-console-dashboard-restricted-access-group
apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name:eks-console-dashboard-restricted-access-role
apiGroup: rbac.authorization.k8s.ioSostituisci
con un nome delcluster-role-binding-name
clusterrolebinding
restituito nell'output del comando precedente.kubectl describe clusterrolebinding
cluster-role-binding-name
Di seguito viene riportato un output di esempio.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name:
eks-console-dashboard-full-access-binding
subjects: - kind: Group name:eks-console-dashboard-full-access-group
apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name:eks-console-dashboard-full-access-clusterrole
apiGroup: rbac.authorization.k8s.io
-
-
Modificare
aws-auth
ConfigMap
. Per aggiornareConfigMap
puoi usare uno strumento adeguato, ad esempioeksctl
, oppure puoi eseguire l'aggiornamento in modo manuale tramite modifica.Importante
Ti consigliamo di utilizzare
eksctl
, o uno strumento simile, per modificareConfigMap
. Per informazioni su altri strumenti che puoi utilizzare, consulta Utilizzare gli strumenti per apportare modificheaws-auth
ConfigMap
alleguide alle EKS best practice di Amazon. Una formattazione impropria di aws-auth
ConfigMap
può causare la perdita dell'accesso al cluster.
Applica la aws-auth
ConfigMap
al cluster
La aws-auth
ConfigMap
viene creata e applicata automaticamente al cluster quando si crea un gruppo di nodi gestito o quando si crea un gruppo di nodi utilizzando eksctl
. Inizialmente è stato creato per consentire ai nodi di unirsi al cluster, ma lo si usa anche ConfigMap
per aggiungere un accesso basato sul ruolo con controllo degli accessi (RBAC) ai IAM principali. Se non sono stati avviati nodi autogestiti e non è stata applicata la aws-auth
ConfigMap
al cluster, è possibile farlo utilizzando la procedura seguente.
Applicazione di aws-auth
ConfigMap
al cluster
-
Controlla per vedere se hai già applicato la
aws-auth
ConfigMap
.kubectl describe configmap -n kube-system aws-auth
Se si verifica un errore di tipo "
Error from server (NotFound): configmaps "aws-auth" not found
", procedi con le fasi seguenti per applicare lo stockConfigMap
. -
Scarica, modifica e applica la mappa di configurazione dell' AWS autenticatore.
-
Scarica la mappa di configurazione.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
Nel
file, imposta Amazon Resource Name (ARN) del IAM ruolo associato ai tuoi nodi.aws-auth-cm.yaml
rolearn
Per eseguire questa operazione, utilizza un editor di testo o sostituisci
eseguendo il comando seguente:my-node-instance-role
sed -i.bak -e 's|<ARN of instance role (not instance profile)>|
my-node-instance-role
|' aws-auth-cm.yamlNon modificare altre righe in questo file.
Importante
Il ruolo non ARN può includere un percorso come
role/my-team/developers/my-role
. Il formato del ARN deve esserearn:aws:iam::
. In questo esempio,111122223333
:role/my-role
my-team/developers/
deve essere rimosso.Puoi ispezionare gli output dello AWS CloudFormation stack per i tuoi gruppi di nodi e cercare i seguenti valori:
-
InstanceRoleARN— Per i gruppi di nodi che sono stati creati con
eksctl
-
NodeInstanceRole— Per i gruppi di nodi creati con AWS CloudFormation modelli EKS venduti da Amazon nel AWS Management Console
-
-
Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.
kubectl apply -f aws-auth-cm.yaml
Nota
Se ricevi qualsiasi altro errore di tipo di risorsa o autorizzazione, consulta la sezione Accesso negato o non autorizzato (kubectl) nell'argomento relativo alla risoluzione dei problemi.
-
-
Guarda lo stato dei nodi e attendi che raggiungano lo stato
Ready
.kubectl get nodes --watch
Inserisci
Ctrl
+C
per tornare a un prompt della shell.