Google Cloud-Ressourcen einrichten

Auf dieser Seite werden die Google Cloud-Ressourcen beschrieben, die Sie vor dem Erstellen von Clustern erstellen und konfigurieren müssen.

Hinweise

  1. Erstellen Sie ein Google Cloud-Projekt und ein Rechnungskonto.

  2. Wenn Sie kein Google Cloud-Projektinhaber sind, bitten Sie einen Projektinhaber, Ihnen die folgenden IAM-Rollen (Identity and Access Management) zuzuweisen:

    Rolle Zweck
    roles/compute.viewer Erforderlich: Wird benötigt, wenn bmctl das Feld clusterOperations.location in der Clusterkonfigurationsdatei validiert.
    roles/iam.serviceAccountAdmin Erforderlich: Erforderlich zum Erstellen der Dienstkonten, die für Google Distributed Cloud erforderlich sind.
    roles/iam.securityAdmin Erforderlich: Damit können den Dienstkonten IAM-Rollen zugewiesen werden, die für Google Distributed Cloud erforderlich sind.
    roles/iam.serviceAccountKeyAdmin Erforderlich: Erforderlich zum Erstellen von JSON-Schlüsseldateien für die Dienstkonten, die für Google Distributed Cloud erforderlich sind.
    roles/serviceusage.serviceUsageAdmin Erforderlich: Erforderlich, um die Google APIs zu aktivieren, die für Google Distributed Cloud erforderlich sind.
    roles/gkeonprem.admin Optional: Erforderlich, wenn Sie Cluster mit GKE On-Prem API-Clients erstellen oder einen Cluster so konfigurieren möchten, dass er von der GKE On-Prem API verwaltet wird.
    roles/gkehub.viewer
    roles/container.viewer
    Optional: Erforderlich, wenn Sie in der Google Cloud Console auf die Seiten „GKE Enterprise“ und „Google Kubernetes Engine“ zugreifen möchten.

    Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

APIs aktivieren

In Ihrem verknüpften Google Cloud-Projekt müssen mehrere Google APIs aktiviert sein. Google Distributed Cloud verwendet die APIs beim Erstellen von Clustern. Außerdem sind die APIs erforderlich, um eine Verbindung zu Google Cloud aufrechtzuerhalten. Über die Verbindung zu Google Cloud kann Google Distributed Cloud Cloud Logging und Cloud Monitoring sowie Flottenfunktionen wie Cloud Service Mesh, Config Sync, Policy Controller und Config Controller verwenden.

Wenn Sie das bmctl-Tool zum Erstellen von Clustern verwenden, können Sie das Flag --enable-apis beim Ausführen von bmctl create config angeben. bmctl aktiviert dann die im folgenden gcloud services enable-Befehl aufgeführten APIs. Wenn Sie einen GKE On-Prem API-Client zum Erstellen eines Administratorclusters oder Nutzerclusters verwenden, müssen Sie die APIs aktivieren, bevor Sie den Cluster erstellen.

Aktivieren Sie die APIs mit folgenden Befehlen:

  1. Melden Sie sich in der Google Cloud CLI an:

    gcloud auth login
    
  2. Aktivieren Sie folgende APIs:

    gcloud services enable --project=PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        compute.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        kubernetesmetadata.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    

    Mit Ausnahme von gkeonprem.googleapis.com sind diese Google APIs für Ihr Projekt erforderlich. Die folgenden beiden APIs sind nur für Version 1.29 und höher erforderlich:

    • compute.googleapis.com
    • kubernetesmetadata.googleapis.com

    Wenn Sie Ihre Cluster hinter einem Proxy installieren, müssen Sie viele dieser APIs der Liste der zulässigen Verbindungen hinzufügen. Eine Liste der APIs und Endpunkte, die Sie der Zulassungsliste hinzufügen müssen, sowie die Begründung für den Zugriff finden Sie unter Hinter einem Proxy installieren .

  3. Führen Sie den folgenden Befehl aus, um zu sehen, welche APIs und Dienste in Ihrem Projekt aktiviert sind:

    gcloud services list --project=PROJECT_ID \
        --enabled
    

Dienstkonten konfigurieren

Zur Verwendung der Google APIs erfordert Google Distributed Cloud ein Dienstkonto, das mit bestimmten IAM-Rollen in Ihrem verknüpften Google Cloud-Projekt konfiguriert ist. Es hat sich bewährt, separate Dienstkonten für unterschiedliche Zwecke zu erstellen, insbesondere in Produktionsumgebungen.

Wenn Sie mit dem Tool bmctl Cluster erstellen möchten, können Sie das Flag --create-service-accounts beim Ausführen von bmctl create config angeben, damit bmctl die Dienstkonten mit den erforderlichen IAM-Rollen erstellt. Wenn Sie einen GKE On-Prem API-Client zum Erstellen eines Administratorclusters verwenden werden, werden die Dienstkonten mit den erforderlichen IAM-Rollen standardmäßig mit dem Befehl bmctl register bootstrap erstellt, wenn Sie den Befehl zum Erstellen eines Bootstrap-Clusters ausführen.

Die Dienstkonten sind auch für die Erstellung von Nutzerclustern erforderlich. Sie würden jedoch in diesem Fall beim Erstellen des Administratorclusters, der die Nutzercluster verwaltet, erstellt und konfiguriert werden.

In der folgenden Tabelle werden die Dienstkonten beschrieben, die automatisch erstellt werden:

Dienstkonto Zweck Rollen
anthos-baremetal-gcr Google Distributed Cloud verwendet dieses Dienstkonto, um Container-Images aus Container Registry herunterzuladen. Keine
anthos-baremetal-connect Connect Agent verwendet dieses Dienstkonto, um eine Verbindung zwischen Ihrem Cluster und Google Cloud aufrechtzuerhalten Dies ermöglicht den Zugriff auf den Cluster- und auf Arbeitslastverwaltungsfunktionen, einschließlich der Google Cloud Console und des Connect-Gateways für die Interaktion mit Ihrem Cluster. roles/gkehub.connect
anthos-baremetal-register Connect Agent verwendet dieses Dienstkonto, um Ihre Cluster bei einer Flotte zu registrieren. roles/gkehub.admin
anthos-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

Dienstkonten manuell konfigurieren

Falls es Ihnen lieber ist, können Sie die Dienstkonten auch manuell erstellen, mit den erforderlichen Rollen konfigurieren und JSON-Schlüsseldateien herunterladen, bevor Sie Cluster erstellen. Wenn Sie bmctl zum Erstellen von Clustern verwenden, fügen Sie der entsprechenden Clusterkonfigurationsdatei Verweise auf die JSON-Schlüsseldateien hinzu. Ein Beispiel finden Sie unter Konfigurationsdatei bearbeiten. Wenn Sie eine GKE On-Prem API zum Erstellen eines Administratorclusters verwenden, können Sie die Schlüsseldateien angeben, wenn Sie bmctl register bootstrap ausführen, um den Bootstrap-Cluster zu erstellen.

So erstellen Sie die Dienstkonten und Schlüsseldateien:

  1. Achten Sie darauf, dass Sie sich auf Ihrer Administrator-Workstation im Verzeichnis baremetal befinden.

  2. Melden Sie sich in der Google Cloud CLI an, falls noch nicht geschehen:

    gcloud auth login
    
  3. Erstellen Sie die Dienstkonten:

    gcloud iam service-accounts create anthos-baremetal-gcr \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-connect \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-register \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-cloud-ops \
        --project=PROJECT_ID
    
  4. Weisen Sie den Dienstkonten die erforderlichen IAM-Rollen zu:

    gcloud projects add-iam-policy-binding  PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/gkehub.connect"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/stackdriver.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/opsconfigmonitoring.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.dashboardEditor"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.viewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/kubernetesmetadata.publisher"
    
  5. Laden Sie die JSON-Schlüsseldateien des Dienstkontos herunter:

    gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-agent.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-register.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

Dienstkonto konfigurieren, das auf einen Cloud Storage-Bucket zugreifen kann

Sie verwenden ein Dienstkonto und eine Schlüsseldatei für den Zugriff auf Cloud Storage. Sie können dieses Dienstkonto verwenden, um Snapshots von Clustern automatisch in Cloud Storage-Buckets hochzuladen oder um VM-Images aus Cloud Storage-Buckets zur Verwendung mit VM Runtime on GDC zu importieren.

Führen Sie die folgenden Schritte aus, um das Dienstkonto und die Schlüsseldatei zu erstellen:

  1. Sie müssen sich im Verzeichnis baremetal befinden.

  2. Melden Sie sich in der Google Cloud CLI an, falls noch nicht geschehen:

    gcloud auth login
    
  3. Aktivieren Sie die Cloud Storage API storage.googleapis.com in Ihrem Google Cloud-Projekt, falls noch nicht geschehen:

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. Erstellen Sie ein Dienstkonto, mit dem Ihr Cluster auf Cloud Storage-Buckets zugreifen kann:

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    Ersetzen Sie SA_NAME durch den Namen des neuen Dienstkontos. Dieser Name des Dienstkontos wird in der E-Mail-Adresse angezeigt, die während der Erstellung bereitgestellt wird. Sie hat folgendes Format: SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

  5. Erstellen Sie eine benutzerdefinierte Rolle mit den folgenden Berechtigungen:

    • storage.buckets.create
    • storage.buckets.get
    • storage.buckets.list
    • storage.objects.create
    • resourcemanager.projects.get
    gcloud iam roles create ROLE_ID \
        --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \
        --project=PROJECT_ID
    

    Ersetzen Sie ROLE_ID durch den Namen der neuen benutzerdefinierten Rolle, z. B. snapshotUpload. Der vollständige Pfad dieser benutzerdefinierten Rolle hat das Format projects/PROJECT_ID/roles/ROLE_ID.

  6. Fügen Sie eine Richtlinienbindung zu einem Dienstkonto hinzu:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role='projects/PROJECT_ID/roles/ROLE_ID'
    
  7. Laden Sie die JSON-Schlüsseldatei des Dienstkontos herunter:

    gcloud iam service-accounts keys create OUTPUT_FILE \
        --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Weitere Informationen zum Erstellen von Cluster-Snapshots und zum automatischen Hochladen dieser in einen Cloud Storage-Bucket finden Sie unter Snapshots zur Diagnose von Clusterproblemen erstellen.

Weitere Informationen zum Importieren von VM-Images aus Cloud Storage finden Sie unter Anmeldedaten zum Importieren von Images aus Cloud Storage für VM Runtime on GDC erstellen und verwenden.