Hilf mit, diese Seite zu verbessern
Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.
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ährung IAM Benutzerzugriff auf Kubernetes mit einem ConfigMap
Wichtig
Die aws-auth
ConfigMap ist veraltet. Die empfohlene Methode zur Verwaltung des Zugriffs auf Kubernetes APIsist Access Entries.
Der Zugriff auf Ihren Cluster mithilfe von IAMPrinzipalen wird durch den AWS IAM Authenticator für ermöglicht Kubernetesaws-auth
ConfigMap
. Alle aws-auth
ConfigMap
Einstellungen finden Sie unter Vollständiges Konfigurationsformat
Fügen Sie Ihrem EKS Amazon-Cluster IAM Principals hinzu
Wenn Sie einen EKS Amazon-Cluster erstellen, erhält der IAMPrincipal, der den Cluster erstellt, automatisch system:masters
Berechtigungen in der Konfiguration der rollenbasierten Zugriffskontrolle (RBAC) des Clusters in der EKS Amazon-Steuerungsebene. Dieser Prinzipal wird in keiner sichtbaren Konfiguration angezeigt. Achten Sie daher darauf, welcher Prinzipal den Cluster ursprünglich erstellt hat. Um weiteren IAM Prinzipalen die Möglichkeit zu geben, mit Ihrem Cluster zu interagieren, bearbeiten Sie die darin enthaltenen aws-auth ConfigMap
Kubernetes und erstellen Sie ein Kubernetes rolebinding
oder clusterrolebinding
mit dem Namen einesgroup
, den Sie in der angebenaws-auth ConfigMap
.
Anmerkung
Weitere Informationen zur Kubernetes Konfiguration der rollenbasierten Zugriffskontrolle (RBAC), siehe Verwenden der RBAC Autorisierung
So fügen Sie einem EKS Amazon-Cluster einen IAM Principal hinzu
-
Bestimmen Sie, welche Anmeldeinformationen
kubectl
für den Zugriff auf Ihren Cluster verwendet. Amazon Resource Name (ARN)Auf Ihrem Computer können Sie mit dem folgenden Befehl sehen, welche Anmeldeinformationenkubectl
verwendet. Ersetzen Sie
durch den Pfad zu Ihrer~/.kube/config
kubeconfig
-Datei, wenn Sie nicht den Standardpfad verwenden.cat
~/.kube/config
Eine Beispielausgabe sieht wie folgt aus.
[...] 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.ioIn der vorherigen Beispielausgabe werden die Anmeldeinformationen für einen Benutzer mit dem Namen
für einen Cluster mit dem Namenadmin
konfiguriert. Wenn dies der Benutzer ist, der den Cluster erstellt hat, hat er bereits Zugriff auf Ihren Cluster. Wenn es nicht der Benutzer ist, der den Cluster erstellt hat, müssen Sie die verbleibenden Schritte ausführen, um den Cluster-Zugriff für andere IAM Prinzipale zu aktivieren. IAMBewährte Methoden empfehlen, dass Sie Rollen statt Benutzern Berechtigungen gewähren. Mit dem folgenden Befehl können Sie sehen, welche anderen Prinzipale derzeit Zugriff auf Ihren Cluster haben:my-cluster
kubectl describe -n kube-system configmap/aws-auth
Eine Beispielausgabe sieht wie folgt aus.
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>Das vorherige Beispiel ist ein standardmäßiger
aws-auth
ConfigMap
. Nur die Knoten-Instance-Rolle hat Zugriff auf den Cluster. -
Stellen Sie sicher, dass Sie bereits Kubernetes
roles
undrolebindings
oderclusterroles
undclusterrolebindings
denen Sie IAM Principals zuordnen können. Weitere Informationen zu diesen Ressourcen finden Sie unter Using RBAC Authorizationim Kubernetes -Dokumentation. -
Sehen Sie sich Ihre vorhandenen an Kubernetes
roles
oderclusterroles
.Roles
sind auf a beschränktnamespace
,clusterroles
sind aber auf den Cluster beschränkt.kubectl get roles -A
kubectl get clusterroles
-
Sehen Sie sich die Details eines beliebigen
role
oder in der vorherigen Ausgabeclusterrole
zurückgegebenen Objekts an und vergewissern Sie sich, dass es über die Berechtigungen (rules
) verfügt, die Ihren IAM Prinzipalen in Ihrem Cluster zugewiesen werden sollen.Ersetzen Sie
durch einenrole-name
role
-Namen, den der vorherige Befehl zurückgegeben hat. Ersetzen Sie
durch den Namespace derkube-system
role
.kubectl describe role
role-name
-nkube-system
Ersetzen Sie
durch einencluster-role-name
clusterrole
-Namen, den der vorherige Befehl zurückgegeben hat.kubectl describe clusterrole
cluster-role-name
-
Sehen Sie sich Ihre vorhandenen an Kubernetes
rolebindings
oderclusterrolebindings
.Rolebindings
sind auf a beschränktnamespace
,clusterrolebindings
sind aber auf den Cluster beschränkt.kubectl get rolebindings -A
kubectl get clusterrolebindings
-
Zeigen Sie die Details einer beliebigen
rolebinding
oderclusterrolebinding
an und bestätigen Sie, dass sie einerole
oderclusterrole
aus dem vorherigen Schritt hat, die alsroleRef
aufgeführt wird, und einen Gruppennamen, der fürsubjects
aufgeführt wird.Ersetzen Sie
durch einenrole-binding-name
rolebinding
-Namen, den der vorherige Befehl zurückgegeben hat. Ersetzen SIe
mit demkube-system
namespace
derrolebinding
.kubectl describe rolebinding
role-binding-name
-nkube-system
Eine Beispielausgabe sieht wie folgt aus.
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.ioErsetzen Sie
durch einencluster-role-binding-name
clusterrolebinding
-Namen, den der vorherige Befehl zurückgegeben hat.kubectl describe clusterrolebinding
cluster-role-binding-name
Eine Beispielausgabe sieht wie folgt aus.
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
-
-
Bearbeiten Sie
aws-auth
ConfigMap
. Sie können ein Tool wieeksctl
verwenden, um dieConfigMap
zu aktualisieren, oder Sie können sie durch manuelle Bearbeitung aktualisieren.Wichtig
Wir empfehlen die Verwendung von
eksctl
oder einem anderen Tool, um dieConfigMap
zu bearbeiten. Informationen zu anderen Tools, die Sie verwenden können, finden Sie unter Verwenden von Tools, um Änderungen an den vorzunehmenaws-auth
ConfigMap
in denEKS Amazon-Best-Practices-Handbüchern. Ist aws-auth
ConfigMap
falsch formatiert, können Sie den Zugriff auf Ihren Cluster verlieren.
Anwenden von aws-auth
ConfigMap
auf Ihren Cluster
aws-auth
ConfigMap
wird automatisch erstellt und auf Ihren Cluster angewendet, wenn Sie eine verwaltete Knotengruppe erstellen oder wenn Sie eine Knotengruppe mit eksctl
erstellen. Es wurde ursprünglich erstellt, um Knoten den Beitritt zu Ihrem Cluster zu ermöglichen. Sie verwenden es jedoch auch, ConfigMap
um Prinzipalen einen rollenbasierten Zugriffskontrollzugriff (RBAC) hinzuzufügen. IAM Wenn Sie keine selbstverwalteten Knoten gestartet und aws-auth
ConfigMap
nicht auf Ihren Cluster angewendet haben, können Sie das folgende Verfahren dafür verwenden.
Anwendung der aws-auth
ConfigMap
auf Ihren Cluster
-
Überprüfen Sie, ob Sie
aws-auth
ConfigMap
bereits angewendet haben.kubectl describe configmap -n kube-system aws-auth
Wenn die Fehlermeldung „
Error from server (NotFound): configmaps "aws-auth" not found
“ angezeigt wird, fahren Sie mit den folgenden Schritten fort, um die lokal gespeicherteConfigMap
anzuwenden. -
Laden Sie die AWS Authenticator-Konfigurationsübersicht herunter, bearbeiten Sie sie und wenden Sie sie an.
-
Laden Sie die Konfigurationszuordnung herunter.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
Stellen Sie in der
Dateiaws-auth-cm.yaml
rolearn
den Amazon-Ressourcennamen (ARN) der IAM Rolle ein, die Ihren Knoten zugeordnet ist. Hierzu können Sie einen Texteditor verwenden oder
ersetzen und den folgenden Befehl ausführen:my-node-instance-role
sed -i.bak -e 's|<ARN of instance role (not instance profile)>|
my-node-instance-role
|' aws-auth-cm.yamlÄndern Sie keine weiteren Zeilen in dieser Datei.
Wichtig
Die Rolle ARN darf keinen Pfad wie enthalten
role/my-team/developers/my-role
. Das Format von ARN muss seinarn:aws:iam::
. In diesem Beispiel muss111122223333
:role/my-role
my-team/developers/
entfernt werden.Sie können die AWS CloudFormation Stack-Ausgaben für Ihre Knotengruppen überprüfen und nach den folgenden Werten suchen:
-
InstanceRoleARN— Für Knotengruppen, die erstellt wurden mit
eksctl
-
NodeInstanceRole— Für Knotengruppen, die mit von Amazon EKS bereitgestellten AWS CloudFormation Vorlagen erstellt wurden, im AWS Management Console
-
-
Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.
kubectl apply -f aws-auth-cm.yaml
Anmerkung
Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Thema zur Fehlerbehebung.
-
-
Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den
Ready
-Status eintreten.kubectl get nodes --watch
Geben Sie
Ctrl
+C
ein, um zu einer Shell-Eingabeaufforderung zurückzukehren.