In diesem Dokument wird beschrieben, wie Sie die Clusterauthentifizierung von Workload Identity für Google Distributed Cloud (nur Software) auf Bare Metal einrichten und verwenden. Anstelle von Dienstkontoschlüsseln verwendet die Workload Identity-Clusterauthentifizierung kurzlebige Tokens und die Workload Identity-Föderation, um Cluster zu erstellen und zu schützen. Die kurzlebigen Anmeldedaten für das Dienstkonto haben die Form von OAuth 2.0-Zugriffstokens. Die Zugriffstokens laufen standardmäßig nach einer Stunde ab, mit Ausnahme von Pull-Tokens für Bilder, die nach 12 Stunden ablaufen.
Die Workload Identity-Clusterauthentifizierung ist nur für Cluster ab Version 1.30 verfügbar.
Im Schlüsselmodus, der Standardmethode zum Erstellen und Schützen von Clustern, werden dagegen heruntergeladene Dienstkontoschlüssel verwendet. Wenn Sie einen selbstverwalteten Cluster (Administrator-, Hybrid- oder Standalone-Cluster) erstellen, geben Sie den Pfad zu den heruntergeladenen Schlüsseln an. Die Schlüssel werden dann als Secrets im Cluster und in allen verwalteten Nutzerclustern gespeichert. Standardmäßig laufen Dienstkontoschlüssel nicht ab und stellen ein Sicherheitsrisiko dar, wenn sie nicht ordnungsgemäß verwaltet werden.
Die Workload Identity-Clusterauthentifizierung bietet zwei Hauptvorteile gegenüber der Verwendung von Dienstkontoschlüsseln:
Verbesserte Sicherheit: Dienstkontoschlüssel stellen ein Sicherheitsrisiko dar, wenn sie nicht ordnungsgemäß verwaltet werden. OAuth 2.0-Tokens und die Workload Identity-Föderation gelten als Best Practices für Dienstkontoschlüssel. Weitere Informationen zu Dienstkontotokens finden Sie unter Kurzlebige Anmeldedaten für das Dienstkonto erstellen. Weitere Informationen zur Workload Identity-Föderation finden Sie unter Workload Identity-Föderation.
Geringere Wartung: Dienstkontoschlüssel erfordern mehr Wartung. Das regelmäßige Wechseln und Schützen dieser Schlüssel kann einen erheblichen Verwaltungsaufwand bedeuten.
Da sich diese Funktion noch im Vorabzugriff befindet, gibt es einige bekannte Einschränkungen.
Hinweis
In den folgenden Abschnitten erstellen Sie Dienstkonten und gewähren Rollen, die für die Workload Identity-Clusterauthentifizierung erforderlich sind. Die Einrichtungsanleitung in diesem Dokument ersetzt nicht die Anleitung unter Ressourcen einrichten Google Cloud , sondern ist zusätzlich zu den Standardvoraussetzungen für die Installation von Google Distributed Cloud-Software erforderlich. Die für die Clusterauthentifizierung mit Arbeitslastidentitäten erforderlichen Dienstkonten ähneln den Dienstkonten, die unter Ressourcen einrichten Google Cloud beschrieben werden. Sie haben jedoch eindeutige Namen, sodass sie nicht mit Clustern in Konflikt stehen, die die Standarddienstkontoschlüssel verwenden.
Diese Seite richtet sich an Administratoren, Architekturfachkräfte und Betreiber, die technische Infrastrukturen einrichten, überwachen und verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und ‑Aufgaben.
In der folgenden Tabelle werden die Dienstkonten beschrieben, die für die Workload Identity-Clusterauthentifizierung erforderlich sind:
Dienstkonto | Zweck | Rollen |
---|---|---|
ADMIN_SA |
Mit diesem Dienstkonto werden Tokens generiert. Jedem Token sind die Berechtigungen der Dienstkontorollen zugewiesen. |
roles/gkehub.admin roles/logging.admin roles/monitoring.admin roles/monitoring.dashboardEditor roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator
|
baremetal-controller |
Connect Agent verwendet dieses Dienstkonto, um eine Verbindung zwischen Ihrem Cluster und Google Cloud aufrechtzuerhalten und Ihre Cluster bei einer Flotte zu registrieren.
Dieses Dienstkonto aktualisiert auch die Tokens für das Dienstkonto baremetal-gcr .
|
roles/gkehub.admin roles/monitoring.dashboardEditor roles/serviceusage.serviceUsageViewer
|
baremetal-cloud-ops |
Stackdriver Agent verwendet dieses Dienstkonto, um Logs und Messwerte von Clustern nach Cloud Logging und Cloud Monitoring zu exportieren. |
roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor roles/monitoring.viewer roles/serviceusage.serviceUsageViewer roles/kubernetesmetadata.publisher
|
baremetal-gcr |
Google Distributed Cloud verwendet dieses Dienstkonto, um Container-Images aus Container Registry herunterzuladen. | Keine |
Dienstkonten für die Workload Identity-Clusterauthentifizierung erstellen und konfigurieren
In den folgenden Abschnitten finden Sie eine Anleitung zum Erstellen der erforderlichen Dienstkonten und zum Zuweisen der erforderlichen Rollen für die Workload Identity-Clusterauthentifizierung. Eine Liste der Dienstkonten und der erforderlichen Rollen finden Sie in der Tabelle im vorherigen Abschnitt.
Dienstkonten erstellen
So erstellen Sie die Dienstkonten für die Clusterauthentifizierung von Workload Identity:
Melden Sie sich auf Ihrer Administrator-Workstation in der Google Cloud CLI an:
gcloud auth login
Optional können Sie das Verwaltungsdienstkonto erstellen:
Der Name des
ADMIN_SA
-Dienstkontos ist beliebig. Sie können auch ein vorhandenes Dienstkonto verwenden, wenn es die in der Tabelle im vorherigen Abschnitt aufgeführten Rollen hat. Dies wird jedoch nicht empfohlen, da es gegen das Prinzip der geringsten Berechtigung verstößt.gcloud iam service-accounts create ADMIN_SA \ --project=PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.Erstellen Sie die Standarddienstkonten für die Workload Identity-Clusterauthentifizierung:
Die Standarddienstkonten für die Workload Identity-Clusterauthentifizierung haben vordefinierte Namen, die Sie bei Bedarf anpassen können.
gcloud iam service-accounts create baremetal-controller \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-cloud-ops \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-gcr \ --project=PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.
IAM-Richtlinienbindungen für Dienstkonten hinzufügen
Fügen Sie dem Dienstkonto
ADMIN_SA
IAM-Richtlinienbindungen für die erforderlichen Rollen hinzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Fügen Sie dem Dienstkonto
baremetal-controller
IAM-Richtlinienbindungen für die erforderlichen Rollen hinzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageViewer
Fügen Sie dem Dienstkonto
baremetal-cloud-ops
IAM-Richtlinienbindungen für die erforderlichen Rollen hinzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/opsconfigmonitoring.resourceMetadata.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/stackdriver.resourceMetadata.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageViewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/kubernetesmetadata.publisher
Gewähren Sie dem Dienstkonto
baremetal-controller
die Berechtigung, im Namen des Dienstkontosbaremetal-gcr
Zugriffstokens zu generieren:gcloud iam service-accounts add-iam-policy-binding \ baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Workload Identity-Föderation für Ihre Cluster konfigurieren
Um Google Cloud Zugriff über die Identitätsföderation von Arbeitslasten für GKE zu gewähren, erstellen Sie eine IAM-Zulassungsrichtlinie, die einem Hauptkonto Zugriff auf eine bestimmteGoogle Cloud Ressource gewährt, das der Identität Ihrer Anwendung entspricht. In diesem Fall gewährt die Workload Identity-Föderation Zugriff auf bestimmte Operatoren im Cluster. Weitere Informationen zur Identitätsföderation von Arbeitslasten für GKE finden Sie in der IAM-Dokumentation unter Identitätsföderation von Arbeitslasten.
IAM-Richtlinienbindungen für den Cluster-Betriebsmitarbeiter hinzufügen
Mit den folgenden Befehlen wird dem Kubernetes-Dienstkonto anthos-cluster-operator
die Möglichkeit gewährt, die Identität des Dienstkontos baremetal-controller
zu übernehmen und im Namen des Clusters mit Google Cloud -Ressourcen zu interagieren:
Gewähren Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für die Verwendung der Clusterauthentifizierung mit Workload Identity vorgesehen ist), einschließlich des Bootstrap-Clusters,
anthos-cluster-operator
im Cluster die Berechtigung, sich als Dienstkontobaremetal-controller
auszugeben:Im folgenden Befehl besteht
principalSet
aus dem Identitätspool der Arbeitslast und einem Kubernetes-Dienstkonto,anthos-cluster-operator
, im Namespacekube-system
.gcloud iam service-accounts add-iam-policy-binding \ baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/anthos-cluster-operator \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
PROJECT_NUM
: die automatisch generierte eindeutige Kennung für Ihr Projekt.REGION
: Der Standort der Flottenmitgliedschaft für Ihren Cluster. Standardmäßig ist dasglobal
. Weitere Informationen finden Sie unter Standort der Flottenmitgliedschaft.CLUSTER_NAME
ist der Name des Clusters. Standardmäßig lautet der Name des Bootstrap-Clustersbmctl-MACHINE_NAME
.
Prüfen Sie die Richtlinienbindungen für das Dienstkonto
baremetal-controller
:gcloud iam service-accounts get-iam-policy \ baremetal-controller@PROJECT_ID.iam.gserviceaccount.com
Die Antwort sollte in etwa so aussehen:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/anthos-cluster-operator role: roles/iam.workloadIdentityUser etag: BwYoN3QLig0= version: 1
IAM-Richtlinienbindungen für die Google Cloud Observability-Operatoren hinzufügen
Mit den folgenden Befehlen erhalten die folgenden Kubernetes-Dienstkonten für Google Cloud Observability die Möglichkeit, die Identität des Dienstkontos baremetal-cloud-ops
zu übernehmen und im Namen des Clusters mit Google Cloud -Ressourcen zu interagieren:
cloud-audit-logging
gke-metrics-agent
kubestore-collector
metadata-agent
stackdriver-log-forwarder
Gewähren Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für die Verwendung der Clusterauthentifizierung mit Workload Identity vorgesehen ist), einschließlich des Bootstrap-Clusters, den Google Cloud Observability-Bearbeitern im Cluster die Berechtigung, sich als
baremetal-cloud-ops
-Dienstkonto auszugeben:In den folgenden Befehlen besteht
principalSet
aus dem Arbeitslastpool und einem Kubernetes-Dienstkonto, z. B.cloud-audit-logging
, im Namespacekube-system
.gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/cloud-audit-logging \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/gke-metrics-agent \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/kubestore-collector \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/metadata-agent \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/stackdriver-log-forwarder \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID
Prüfen Sie die Richtlinienbindungen für das Dienstkonto
baremetal-cloud-ops
:gcloud iam service-accounts get-iam-policy \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
Die Antwort sollte in etwa so aussehen:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/stackdriver-log-forwarder role: roles/iam.workloadIdentityUser etag: BwYhT4gL-dY= version: 1
Clusterkonfiguration
Der offensichtlichste Unterschied bei der Clusterkonfiguration für Cluster, die die Clusterauthentifizierung von Workload Identity verwenden, besteht darin, dass Sie keine Pfade zu heruntergeladenen Dienstkontoschlüsseln angeben.
Wenn Sie die Clustereinstellungen in der Konfigurationsdatei eingeben, lassen Sie die Pfade zu den Dienstkontoschlüsseln im Abschnitt „Anmeldedaten“ leer, wie im folgenden Beispiel gezeigt:
gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: cluster-CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.30.0-gke.1930 ...
Optional können Sie benutzerdefinierte Namen für die Dienstkonten der Workload Identity-Clusterauthentifizierung festlegen:
Wenn Sie benutzerdefinierte Namen angeben, können Sie vorhandene Dienstkonten verwenden. Wenn Sie denselben benutzerdefinierten Namen für mehrere Dienstkonten angeben, können Sie weniger Dienstkonten verwenden.
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: cluster-CLUSTER_NAME annotations: baremetal.cluster.gke.io/controller-service-account: "CUSTOM_CONTROLLER_GSA" baremetal.cluster.gke.io/cloud-ops-service-account: "CUSTOM_CLOUD_OPS_GSA" baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_GCR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.30.0-gke.1930 ...
Clustervorgang
Wenn Sie einen Cluster mit Workload Identity-Clusterauthentifizierung erstellen, aktualisieren oder löschen möchten, gehen Sie so vor:
Melden Sie sich in der Google Cloud CLI an:
gcloud auth login
Erstellen Sie auf Ihrer Administrator-Workstation einen Schlüssel für das Dienstkonto
ADMIN_SA
und laden Sie ihn herunter:gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie
TMP_KEY_FILE_PATH
durch den Pfad einschließlich des Dateinamens der heruntergeladenen Schlüsseldatei.Autorisieren Sie den Zugriff auf Google Cloud mit dem Dienstkonto
ADMIN_SA
:gcloud auth activate-service-account ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \ --key-file=TMP_KEY_FILE_PATH
Löschen Sie die heruntergeladene JSON-Schlüsseldatei:
rm TMP_KEY_FILE_PATH
Erstellen Sie auf Ihrer Administrator-Workstation die Umgebungsvariable
GCP_ACCESS_TOKEN
mit dem Wert eines vom DienstkontoADMIN_SA
erstellten Zugriffstokens:export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com)
Standardmäßig hat das Zugriffstoken eine Gültigkeitsdauer von 1 Stunde.
Prüfen Sie, ob das Token vom
ADMIN_SA
-Dienstkonto mit der richtigen Ablaufzeit generiert wird:curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"
Die Antwort sollte Zeilen wie die folgenden enthalten:
... "expires_in": "3582", "email": "ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com)", ...
Der Ablaufzeitwert wird in Sekunden angegeben und sollte kleiner als
3600
sein. Das bedeutet, dass das Token in weniger als einer Stunde abläuft.Führen Sie einen
bmctl
-Befehl aus, um einen Cluster zu erstellen, zu aktualisieren oder zu löschen:Wenn
bmctl
erkennt, dass die UmgebungsvariableGCP_ACCESS_TOKEN
festgelegt wurde, führt er eine Tokenbestätigung durch. Wenn das Token gültig ist, verwendetbmctl
es für Clustervorgänge.Bei Clustern, für die die Workload Identity-Clusterauthentifizierung verwendet wird, muss die Umgebungsvariable
GCP_ACCESS_TOKEN
für die folgenden Befehle auf ein gültiges, aktives Zugriffstoken festgelegt sein:bmctl create cluster -c CLUSTER_NAME
bmctl reset cluster -c CLUSTER_NAME
bmctl upgrade cluster -c CLUSTER_NAME
Beschränkungen
Die Workload Identity-Clusterauthentifizierung befindet sich in der Vorabversion. Die folgenden Funktionen werden nicht unterstützt:
- Proxyserver verwenden
- VPC Service Controls