Von der Cloud Console aus in einem Cluster anmelden

Auf dieser Seite wird erläutert, wie Sie sich über die Google Cloud Console für Anthos-Kunden, die die anthos.googleapis.com API aktiviert haben, in registrierten Kubernetes-Clustern anmelden.

Übersicht

Sie können sich mit der Google Cloud Console bei registrierten Clustern anmelden. Viele Arten von Inhabertokens, die unter Kubernetes-Authentifizierung aufgelistet sind, werden unterstützt. Die einfachste Methode ist das Erstellen eines Kubernetes-Dienstkontos (KSA) im Cluster und das Anmelden mit seinem Inhabertoken.

Alle Konten, die sich in einem Cluster anmelden, müssen mindestens die folgenden RBAC-Rollen im Kubernetes-Cluster enthalten:

Hinweis

Sie müssen die folgenden Schritte einmal pro Cluster ausführen.

Cluster registrieren

Sie müssen Ihren Cluster bei Google Cloud registrieren, bevor Sie sich über die Cloud Console darin anmelden können. Durch die Registrierung eines Clusters wird der Connect-Agent bereitgestellt, eine Kubernetes-Deployment-Ressource, die eine langlebige Verbindung zwischen dem Cluster und Google Cloud herstellt. Der Connect-Agent ermöglicht die Anmeldung bei Clustern.

RBAC-Rolle (Role-based Access Control, rollenbasierte Zugriffssteuerung) cloud-console-reader erstellen und anwenden

Nutzer, die die Ressourcen Ihres Clusters in der Konsole aufrufen möchten, benötigen die entsprechenden Berechtigungen. Zum Definieren dieser Berechtigungen erstellen Sie im Cluster die Ressource ClusterRole RBAC cloud-console-reader. cloud-console-reader gewährt ihren Nutzern die Berechtigungen get, list und watch für die Knoten, nichtflüchtigen Volumes und Speicherklassen des Clusters, die ihnen Details zu diesen Ressourcen anzeigen können. Sie können diesen ClusterRole dann wie im nächsten Abschnitt beschrieben an das Dienstkonto des Nutzers binden.

  1. Erstellen Sie die ClusterRole "cloud-console-reader" und wenden Sie sie mit dem folgenden Befehl an:

    cat <<EOF > cloud-console-reader.yaml
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: cloud-console-reader
    rules:
    - apiGroups: [""]
      resources: ["nodes", "persistentvolumes"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["storage.k8s.io"]
      resources: ["storageclasses"]
      verbs: ["get", "list", "watch"]
    EOF
    kubectl apply -f cloud-console-reader.yaml
    

Einrichten

Sie oder Clusteradministratoren sollten für jeden Nutzer, der sich bei dem Cluster anmeldet, ein Dienstkonto erstellen. Die Verwendung eines Inhabertokens ist mit der Verwendung eines Passworts vergleichbar, sodass jeder Nutzer sein eigenes Token haben sollte. Wenn Sie sich mit dem Inhabertoken des KSA anmelden, werden alle Vorgänge im Namen des KSA ausgeführt. Sie sind durch die Berechtigungen der Rollen eingeschränkt, die dem KSA erteilt wurden.

Das KSA muss mindestens die folgenden RBAC-Rollen im Cluster enthalten:

KSA erstellen und autorisieren

Führen Sie die folgenden Schritte aus, um ein KSA zu erstellen und Berechtigungen für dieses zu binden:

  1. Erstellen Sie die KSA- und ClusterRoleBinding-Ressourcen, um die Kubernetes RBAC-ClusterRoles view und cloud-console-reader an das KSA zu binden.

    KSA_NAME=[KSA_NAME]
    kubectl create serviceaccount ${KSA_NAME}
    kubectl create clusterrolebinding [VIEW_BINDING_NAME] \
    --clusterrole view --serviceaccount default:${KSA_NAME}
    kubectl create clusterrolebinding [CLOUD_CONSOLE_READER_BINDING_NAME] \
    --clusterrole cloud-console-reader --serviceaccount default:${KSA_NAME}
    
    

    Dabei gilt:

    • [KSA_NAME] ist der Name, den Sie für das KSA ausgewählt haben.
    • [VIEW_BINDING_NAME] ist der Name, den Sie für die ClusterRoleBinding-Ressource view auswählen. Sie können ihm einen beliebigen Namen geben, den Namen nach dem KSA aber am besten nennen.
    • [CLOUD_CONSOLE_READER_BINDING_NAME] ist der Name, den Sie für die ClusterRoleBinding-Ressource cloud-console-reader auswählen. Sie können diesen Namen auch beliebig wählen.
  2. Je nach dem Zugriff auf das Dienstkonto sollten Sie weitere Rollen an das KSA binden. Einige Optionen finden Sie unter Kubernetes-Standardrollen.

    Wenn Sie beispielsweise eine Kubernetes-Anwendung aus Cloud Marketplace bereitstellen möchten, müssen Sie die Rolle cluster-admin an das KSA binden:

    kubectl create clusterrolebinding [BINDING_NAME] \
    --clusterrole cluster-admin --serviceaccount default:[KSA_NAME]
    
    

    Dabei ist [BINDING_NAME] der Name der Clusterrollenbindung für das Dienstkonto.

Andere Konten autorisieren

Für alle anderen Nutzer oder Dienstkonten, die Zugriff auf den Cluster erhalten, müssen Sie ClusterRoleBinding-Ressourcen erstellen, um die Rollen view und cloud-console-reader an ihr Konto zu binden:

  1. So binden Sie die ClusterRoles view und cloud-console-reader:

    ACCOUNT_NAME=[ACCOUNT_NAME]
    kubectl create clusterrolebinding [VIEW_BINDING_NAME] \
    --clusterrole view --serviceaccount default:${ACCOUNT_NAME}
    kubectl create clusterrolebinding [CLOUD_CONSOLE_READER_BINDING_NAME] \
    --clusterrole cloud-console-reader --serviceaccount default:${ACCOUNT_NAME}
    
    

    Dabei gilt:

    • [VIEW_BINDING_NAME] ist der Name, den Sie für die ClusterRoleBinding-Ressource view auswählen. Sie können ihm einen beliebigen Namen geben, aber der Name sollte nach dem Nutzer oder Dienstkonto benannt werden.
    • [CLOUD_CONSOLE_READER_BINDING_NAME] ist der Name, den Sie für die ClusterRoleBinding-Ressource view auswählen. Sie können diesen Namen auch beliebig wählen.
    • [ACCOUNT_NAME] ist das Kubernetes-Dienstkonto.
  2. Binden Sie zusätzliche Rollen, je nach dem, welchen Zugriff das Konto haben soll. Einige Optionen finden Sie unter Kubernetes-Standardrollen.

    So binden Sie beispielsweise die Rolle cluster-admin:

    kubectl create clusterrolebinding [BINDING_NAME] \
    --clusterrole cluster-admin --serviceaccount default:[ACCOUNT_NAME]
    
    

    Dabei ist [BINDING_NAME] der Name der Clusterrollenbindung für das Dienstkonto.

Inhabertoken des KSA abrufen

Mit dem folgenden Befehl erhalten Sie das Inhabertoken des KSA:

SECRET_NAME=$(kubectl get serviceaccount [KSA_NAME] -o jsonpath='{$.secrets[0].name}')
kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 --decode

Dabei steht [KSA_NAME] für den Namen, den Sie für das KSA auswählen.

Kopieren Sie das Token aus der Ausgabe dieses Befehls und speichern Sie es zur Verwendung im nächsten Abschnitt.

Bei einem Cluster anmelden

Führen Sie zur Anmeldung bei einem Cluster die folgenden Schritte aus:

  1. Rufen Sie in der Cloud Console das GKE-Menü auf.

    Zum GKE-Menü

  2. Klicken Sie in der Liste der Cluster auf die Schaltfläche Anmeldung neben dem registrierten Cluster.

  3. Wählen Sie aus, wie Sie sich anmelden möchten:

    1. Wenn Sie sich mithilfe eines KSA-Tokens anmelden, wählen SieToken, füllen Sie das Feld Token mit dem Inhabertoken des KSA aus und klicken Sie dann aufAnmeldung.
    2. Wenn Sie die Basisauthentifizierung verwenden, wählen Sie Basisauthentifizierung, füllen Sie die Felder Nutzername und Passwort aus und klicken Sie dann auf Anmeldung.
    3. Wenn Sie OpenID Connect (OIDC) verwenden, wählen Sie OpenID Connect aus und klicken Sie dann auf Anmeldung.

Wenn Sie sich erfolgreich authentifiziert haben, können Sie den Cluster prüfen und Details zu dessen Knoten abrufen.

Nächste Schritte