In diesem Dokument wird beschrieben, wie Sie die Clusterauthentifizierung mit Workload Identity für Google Distributed Cloud (nur Software) auf Bare Metal einrichten und verwenden. Anstelle von Dienstkontoschlüsseln werden bei der Clusterauthentifizierung mit Workload Identity kurzlebige Tokens und die Identitätsföderation von Arbeitslasten verwendet, um Ihre Cluster zu erstellen und zu schützen. Die kurzlebigen Anmeldedaten für das Dienstkonto liegen in Form von OAuth 2.0-Zugriffstokens vor. Die Zugriffstokens laufen standardmäßig nach einer Stunde ab. Auch Image-Pull-Tokens laufen standardmäßig nach einer Stunde ab.
Im Schlüsselmodus, der Standardmethode zum Erstellen und Sichern von Clustern, werden dagegen heruntergeladene Dienstkontoschlüssel verwendet. Wenn Sie einen selbstverwalteten (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. Informationen zum Festlegen einer Ablaufzeit für Ihre Dienstkontoschlüssel finden Sie unter Ablaufzeiten für von Nutzern verwaltete Schlüssel.
Die Clusterauthentifizierung mit Workload Identity 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-Practice-Alternativen zu Dienstkontoschlüsseln. Weitere Informationen zu Dienstkonto-Tokens finden Sie unter Kurzlebige Anmeldedaten für das Dienstkonto. Weitere Informationen zur Workload Identity-Föderation finden Sie unter Workload Identity-Föderation.
Weniger Wartung: Dienstkontoschlüssel erfordern mehr Wartung. Das regelmäßige Rotieren und Sichern dieser Schlüssel kann einen erheblichen Verwaltungsaufwand bedeuten.
Die Workload Identity-Clusterauthentifizierung wurde mit Version 1.30 als Vorabversion eingeführt und ist ab Version 1.33 allgemein verfügbar. Die Workload Identity-Clusterauthentifizierung kann nur beim Erstellen neuer Cluster aktiviert werden. Sie können einen vorhandenen Cluster nicht so konfigurieren, dass er während einer Aktualisierung oder eines Upgrades die Clusterauthentifizierung mit Workload Identity verwendet. Weitere Einschränkungen finden Sie unter Einschränkungen.
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-Nutzerrollen und ‑Aufgaben.
Hinweise
In den folgenden Abschnitten erstellen Sie Dienstkonten und weisen Rollen zu, die für die Clusterauthentifizierung mit Workload Identity erforderlich sind. Die Einrichtungsanleitung in diesem Dokument ersetzt nicht die Anleitung unter Google Cloud-Ressourcen einrichten. Sie ist zusätzlich zu den standardmäßigen Voraussetzungen für die reine Softwareinstallation von Google Distributed Cloud erforderlich. Die für die Clusterauthentifizierung mit Workload Identity erforderlichen Dienstkonten ähneln den in Google Cloud -Ressourcen einrichten beschriebenen Dienstkonten. Sie haben jedoch eindeutige Namen, damit sie nicht mit Clustern in Konflikt geraten, die die Standardschlüssel für Dienstkonten verwenden.
Die für die Clusterauthentifizierung mit Workload Identity erforderlichen Dienstkonten unterscheiden sich für die Vorschau und die GA-Angebote, wie in der folgenden Tabelle beschrieben:
1.33 oder höher
Dienstkonto | Zweck | Rollen |
---|---|---|
admin-sa |
Mit diesem Dienstkonto generieren Sie Tokens. Jedes Token hat die Berechtigungen, die mit den Dienstkontorollen verknüpft sind. |
roles/gkehub.admin roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator roles/logging.admin roles/monitoring.admin roles/resourcemanager.projectIamAdmin
|
baremetal-gcr |
Google Distributed Cloud verwendet dieses Dienstkonto, um Container-Images aus Artifact Registry herunterzuladen. | Keine |
1.30-1.32
Dienstkonto | Zweck | Rollen |
---|---|---|
admin-sa |
Mit diesem Dienstkonto generieren Sie Tokens. Jedes Token hat die Berechtigungen, die mit den Dienstkontorollen verknüpft sind. |
roles/gkehub.admin roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator roles/logging.admin roles/monitoring.admin
|
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.
Mit diesem Dienstkonto werden auch Tokens für das Dienstkonto baremetal-gcr aktualisiert.
|
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/kubernetesmetadata.publisher roles/logging.logWriter roles/monitoring.dashboardEditor roles/monitoring.metricWriter roles/monitoring.viewer roles/opsconfigmonitoring.resourceMetadata.writer roles/serviceusage.serviceUsageViewer roles/stackdriver.resourceMetadata.writer
|
baremetal-gcr |
Google Distributed Cloud verwendet dieses Dienstkonto, um Container-Images aus Artifact Registry herunterzuladen. | Keine |
Dienstkonten einrichten
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 ihrer erforderlichen Rollen finden Sie in der Tabelle im vorherigen Abschnitt.
Dienstkonten erstellen
So erstellen Sie die Dienstkonten für die Clusterauthentifizierung mit Workload Identity:
Melden Sie sich auf Ihrer Administrator-Workstation in der Google Cloud CLI an:
gcloud auth login
Erstellen Sie die erforderlichen Dienstkonten für die Clusterauthentifizierung mit Workload Identity:
Der Dienstkontoname
admin-sa
ist beliebig. Sie können den Namen ändern, wenn er in Ihrem Projekt zu einem Konflikt führt. Die anderen Dienstkonten für die Clusterauthentifizierung mit Workload Identity haben vordefinierte Namen, die Sie anpassen können.1.33 oder höher
gcloud iam service-accounts create admin-sa \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-gcr \ --project=PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die ID IhresGoogle Cloud -Projekts.1.30-1.32
gcloud iam service-accounts create admin-sa \ --project=PROJECT_ID 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 IhresGoogle Cloud -Projekts.
Identity and Access Management-Richtlinienbindungen für Dienstkonten hinzufügen
Gehen Sie so vor, um die erforderlichen IAM-Richtlinienbindungen auf die neuen Dienstkonten anzuwenden:
1.33 oder höher
Fügen Sie IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
admin-sa
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/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator 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/resourcemanager.projectIamAdmin
1.30-1.32
Fügen Sie IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
admin-sa
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/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator 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
Fügen Sie IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
baremetal-controller
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 IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
baremetal-cloud-ops
hinzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/kubernetesmetadata.publisher 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/monitoring.viewer 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/serviceusage.serviceUsageViewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/stackdriver.resourceMetadata.writer
Gewähren Sie dem Dienstkonto
baremetal-controller
die Berechtigung, Zugriffstokens im Namen des Dienstkontosbaremetal-gcr
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
Authentifizierung einrichten
In den folgenden Schritten wird der Authentifizierungsablauf eingerichtet, bei dem ein kurzlebiges Token zur Authentifizierung von Clustervorgängen verwendet wird:
Melden Sie sich auf Ihrer Administrator-Workstation in der Google Cloud CLI an:
gcloud auth login
Erstellen Sie auf Ihrer Administrator-Workstation einen Schlüssel für das
admin-sa
-Dienstkonto und laden Sie ihn herunter:Dieser Schlüssel ist erforderlich, um den Zugriff für das Dienstkonto
admin-sa
zu autorisieren.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.Erstellen Sie auf Ihrer Administratorworkstation eine Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
mit dem Wert des heruntergeladenen Dienstkontoschlüssels:export GOOGLE_APPLICATION_CREDENTIALS=TMP_KEY_FILE_PATH
Erstellen Sie auf Ihrer Administrator-Workstation eine Umgebungsvariable
GCP_ACCESS_TOKEN
mit dem Wert eines Zugriffstokens, das vom Dienstkontoadmin-sa
erstellt wurde:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
Standardmäßig hat das Zugriffstoken eine Gültigkeitsdauer von 1 Stunde.
Prüfen Sie, ob das Token vom
admin-sa
-Dienstkonto mit dem richtigen Ablaufdatum generiert wurde:curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"
Die Antwort sollte Zeilen wie die folgenden enthalten:
... "exp": "1759512810", "expires_in": "3589", ...
Der Ablaufwert wird in Sekunden angegeben und sollte kleiner als
3600
sein. Das bedeutet, dass das Token in weniger als einer Stunde abläuft.
Identitätsföderation von Arbeitslasten 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, das der Identität Ihrer Anwendung entspricht, Zugriff auf eine bestimmteGoogle Cloud -Ressource gewährt. 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.
1.33 oder höher
Bei Clusterversionen, in denen die Clusterauthentifizierung mit Workload Identity allgemein verfügbar ist, verwenden Sie den Befehl bmctl configure
projects
, um die Identitätsföderation von Arbeitslasten für Ihre Cluster zu konfigurieren. Dieser Befehl ist in die Schritte zum Erstellen eines Administratorclusters und zum Erstellen eines Nutzerclusters integriert.
1.30-1.32
Bei Clusterversionen, in denen die Clusterauthentifizierung mit Workload Identity in der Vorschau ist, müssen Sie die Workload Identity-Föderation für Ihre Cluster manuell konfigurieren, wie in den folgenden Abschnitten beschrieben.
IAM-Richtlinienbindungen für den Clusteroperator hinzufügen
Mit den folgenden Befehlen wird dem Kubernetes-Dienstkonto anthos-cluster-operator
die Möglichkeit eingeräumt, 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 den die Clusterauthentifizierung mit Workload Identity geplant ist), einschließlich des Bootstrap-Clusters,
anthos-cluster-operator
im Cluster die Möglichkeit, dasbaremetal-controller
-Dienstkonto zu imitieren:Im folgenden Befehl besteht
principalSet
aus dem Arbeitslastidentitätspool 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, der standardmäßigglobal
ist. 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
.
Richtlinienbindungen für das Dienstkonto
baremetal-controller
prüfen: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 wird den folgenden Google Cloud Observability Kubernetes-Dienstkonten die Möglichkeit eingeräumt, 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
Erteilen Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für die Clusterauthentifizierung mit Workload Identity verwendet werden soll), einschließlich des Bootstrap-Clusters, den Google Cloud Observability-Operatoren im Cluster die Möglichkeit, das
baremetal-cloud-ops
-Dienstkonto zu imitieren:In jedem der folgenden Befehle besteht
principalSet
aus dem Arbeitslastidentitätspool 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
Richtlinienbindungen für das Dienstkonto
baremetal-cloud-ops
prüfen: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
Administratorcluster erstellen
Die Schritte zum Erstellen eines Administratorclusters unterscheiden sich geringfügig für die Vorschau (Versionen 1.30–1.32) und die GA-Angebote (Versionen 1.33 und höher). In den Schritten für die allgemeine Verfügbarkeit wird der Befehl bmctl configure
projects
verwendet, um die Identitätsföderation von Arbeitslasten für Ihre Cluster zu konfigurieren.
1.33 oder höher
Der offensichtlichste Unterschied in der Clusterkonfiguration für Cluster, die die Workload Identity-Clusterauthentifizierung verwenden, besteht darin, dass Sie keine Pfade zu heruntergeladenen Dienstkontoschlüsseln angeben.
Wenn Sie die Clustereinstellungen in der Konfigurationsdatei ausfüllen, lassen Sie die Pfade für den Dienstkontoschlüssel 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-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Fügen Sie der Clusterkonfigurationsdatei die Annotation
baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true"
hinzu:gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME annotations: baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Aktualisieren Sie auf Ihrer Administrator-Workstation die Umgebungsvariable
GCP_ACCESS_TOKEN
mit einem neu abgerufenen Zugriffstoken:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
Standardmäßig hat das Zugriffstoken eine Lebensdauer von 3.600 Sekunden (1 Stunde). Wenn Sie die Clusterauthentifizierung für Arbeitslastidentitäten verwenden, prüft
bmctl
die Ablaufzeit des Tokens. Wenn das Token innerhalb von 1.800 Sekunden (30 Minuten) abläuft, meldetbmctl
einen Fehler und wird beendet.Workload Identity-Föderation für den Cluster konfigurieren, den Sie erstellen:
bmctl configure projects --project-id=PROJECT_ID \ --admin-cluster=ADMIN_CLUSTER_NAME
Führen Sie den Befehl
bmctl create cluster
aus, um den Administratorcluster zu erstellen.
1.30-1.32
Der offensichtlichste Unterschied in der Clusterkonfiguration für Cluster, die die Workload Identity-Clusterauthentifizierung verwenden, besteht darin, dass Sie keine Pfade zu heruntergeladenen Dienstkontoschlüsseln angeben.
Wenn Sie die Clustereinstellungen in der Konfigurationsdatei ausfüllen, lassen Sie die Pfade für den Dienstkontoschlüssel 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-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Erstellen Sie auf Ihrer Administrator-Workstation einen Schlüssel für das
admin-sa
-Dienstkonto und laden Sie ihn herunter:Dieser Schlüssel ist erforderlich, um den Zugriff für das Dienstkonto
admin-sa
zu autorisieren. Sie löschen ihn sofort nach der Autorisierung des Dienstkontos.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
Das Zugriffstoken ist nur kurz gültig. Daher müssen Sie es in der Regel neu generieren, bevor Sie
bmctl
-Befehle für Clusteroperationen wie das Erstellen, Aktualisieren oder Zurücksetzen eines Clusters ausführen.Erstellen Sie auf Ihrer Administrator-Workstation eine Umgebungsvariable
GCP_ACCESS_TOKEN
mit dem Wert eines Zugriffstokens, das vom Dienstkontoadmin-sa
erstellt wurde: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 Lebensdauer von 3.600 Sekunden (1 Stunde).
Führen Sie den Befehl
bmctl create cluster
aus, um den Administratorcluster zu erstellen.
Nutzercluster erstellen
Die Schritte zum Erstellen eines Administratorclusters unterscheiden sich geringfügig für die Vorschau (Versionen 1.30–1.32) und die GA-Angebote (Versionen 1.33 und höher). In den Schritten für die allgemeine Verfügbarkeit wird der Befehl bmctl configure
projects
verwendet, um die Identitätsföderation von Arbeitslasten für Ihre Cluster zu konfigurieren.
1.33 oder höher
Fügen Sie der Clusterkonfigurationsdatei die Annotation
baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true"
hinzu:apiVersion: v1 kind: Namespace metadata: name: cluster-USER_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: USER_CLUSTER_NAME namespace: cluster-USER_CLUSTER_NAME annotations: baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Das Zugriffstoken hat eine kurze Lebensdauer. Daher müssen Sie es in der Regel neu generieren, bevor Sie
bmctl
-Befehle für Clusteroperationen wie das Erstellen, Aktualisieren oder Zurücksetzen eines Clusters ausführen.Aktualisieren Sie auf Ihrer Administrator-Workstation die Umgebungsvariable
GCP_ACCESS_TOKEN
mit einem neu abgerufenen Zugriffstoken:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
Standardmäßig hat das Zugriffstoken eine Lebensdauer von 3.600 Sekunden (1 Stunde).
Workload Identity-Föderation für den Cluster konfigurieren, den Sie erstellen:
bmctl configure projects --project-id=PROJECT_ID \ --user-clusters=USER_CLUSTER_NAME
Stellen Sie das Nutzercluster-Manifest mit
kubectl
bereit:kubectl apply -f USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_KUBECONFIG
Ersetzen Sie Folgendes:
USER_CLUSTER_CONFIG
: der Pfad Ihrer Nutzerclusterkonfigurationsdatei.ADMIN_KUBECONFIG
: der Pfad der kubeconfig-Datei des Administratorclusters.
1.30-1.32
Erstellen Sie auf Ihrer Administrator-Workstation einen Schlüssel für das
admin-sa
-Dienstkonto und laden Sie ihn herunter:Dieser Schlüssel ist erforderlich, um den Zugriff für das Dienstkonto
admin-sa
zu autorisieren. Sie löschen ihn sofort nach der Autorisierung des Dienstkontos.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
Das Zugriffstoken ist nur kurz gültig. Daher müssen Sie es in der Regel neu generieren, bevor Sie
bmctl
-Befehle für Clusteroperationen wie das Erstellen, Aktualisieren oder Zurücksetzen eines Clusters ausführen.Erstellen Sie auf Ihrer Administrator-Workstation eine Umgebungsvariable
GCP_ACCESS_TOKEN
mit dem Wert eines Zugriffstokens, das vom Dienstkontoadmin-sa
erstellt wurde: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 Lebensdauer von 3.600 Sekunden (1 Stunde).
Führen Sie den Befehl
bmctl create cluster
aus, um Ihren Nutzercluster zu erstellen.
Andere Clustervorgänge
Für Cluster, die die Clusterauthentifizierung mit Workload Identity verwenden, muss für die folgenden bmctl
-Befehle die Umgebungsvariable GCP_ACCESS_TOKEN
auf ein gültiges, aktives Zugriffstoken gesetzt sein:
bmctl configure projects
bmctl create cluster
bmctl reset cluster
bmctl upgrade cluster
Wenn bmctl
erkennt, dass die Umgebungsvariable GCP_ACCESS_TOKEN
festgelegt wurde, wird die Tokenvalidierung durchgeführt:
Wenn das Token gültig ist, verwendet
bmctl
es für Clusteroperationen.Wenn das Token ungültig ist, rufen Sie ein neues ab:
Das Zugriffstoken hat eine kurze Lebensdauer. Daher müssen Sie es in der Regel neu generieren, bevor Sie
bmctl
-Befehle für Clusteroperationen wie das Erstellen, Aktualisieren oder Zurücksetzen eines Clusters ausführen. Aktualisieren Sie auf Ihrer Administratorworkstation die UmgebungsvariableGCP_ACCESS_TOKEN
mit einem neu abgerufenen Zugriffstoken:1.33 oder höher
export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
1.30-1.32
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 Lebensdauer von 3.600 Sekunden (1 Stunde). Wenn Sie die Clusterauthentifizierung für Arbeitslastidentitäten verwenden, prüft
bmctl
die Ablaufzeit des Tokens. Wenn das Token innerhalb von 1.800 Sekunden (30 Minuten) abläuft, meldetbmctl
einen Fehler und wird beendet.
Anpassung
Sie können Dienstkonten mit eindeutigen Namen für die Clusterauthentifizierung mit Workload Identity verwenden, sofern sie Bindungen für die erforderlichen Rollen haben.
1.33 oder höher
Standardmäßig wird für die Clusterauthentifizierung mit Workload Identity für Cluster der Version 1.33 und höher nur das Dienstkonto baremetal-gcr
verwendet. Daher ist dies das einzige Dienstkonto, das angepasst werden kann.
Prüfen Sie, ob das Dienstkonto, das Sie verwenden möchten, die in der Tabelle unter Vorbereitung aufgeführten Rollen hat.
Kommentieren Sie die Clusterkonfigurationsdatei, um den benutzerdefinierten Namen für das Dienstkonto des Workload Identity Cluster Authentication-Dienstes anzugeben:
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: my-cluster namespace: cluster-my-cluster annotations: ... baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Ersetzen Sie CUSTOM_AR_GSA
durch den E-Mail-Namen des Dienstkontos, das von Google Distributed Cloud zum Herunterladen von Container-Images aus Artifact Registry verwendet wird.
1.30-1.32
Achten Sie darauf, dass die Dienstkonten, die Sie verwenden möchten, die in der Tabelle unter Vorbereitung aufgeführten Rollen haben.
Fügen Sie der Clusterkonfigurationsdatei Anmerkungen hinzu, um die benutzerdefinierten Namen für die Dienstkonten des Workload Identity-Clusterauthentifizierungsdienstes anzugeben:
Wenn Sie benutzerdefinierte Namen angeben, können Sie vorhandene Dienstkonten verwenden. Achten Sie darauf, dass sich die von Ihnen angegebenen benutzerdefinierten Dienstkontonamen voneinander unterscheiden. Es ist nicht möglich, zwei oder mehr Standarddienstkonten durch ein einzelnes Dienstkonto zu ersetzen.
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: my-cluster namespace: cluster-my-cluster 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_AR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.30.0-gke.1930 ...
Ersetzen Sie Folgendes:
CUSTOM_CONTROLLER_GSA
: Der E-Mail-Name des Dienstkontos, das vom Connect-Agent verwendet wird, um eine Verbindung zwischen Ihrem Cluster und Google Cloudaufrechtzuerhalten und Ihre Cluster zu registrieren.CUSTOM_CLOUD_OPS_GSA
: Die E-Mail-Adresse des Dienstkontos, das vom Stackdriver Agent verwendet wird, um Logs und Messwerte von Clustern nach Cloud Logging und Cloud Monitoring zu exportieren.CUSTOM_AR_GSA
: Der E-Mail-Name des Dienstkontos, das von Google Distributed Cloud zum Herunterladen von Container-Images aus Artifact Registry verwendet wird.
Beschränkungen
Die folgenden Funktionen und Möglichkeiten werden nicht unterstützt, wenn Sie die Workload Identity-Clusterauthentifizierung für Google Distributed Cloud (nur Software) auf Bare Metal verwenden:
- Proxyserver verwenden
- VPC Service Controls
- Vorhandene Cluster im Schlüsselmodus für die Verwendung der Workload Identity-Clusterauthentifizierung aktualisieren
- Cluster-Lebenszyklusverwaltung mit GKE On-Prem API-Clients wie der Google Cloud CLI, Terraform oder der Google Cloud -Konsole