Einrichtung der Gateway API für Cloud Service Mesh vorbereiten
Auf dieser Seite wird beschrieben, wie Sie die erforderlichen benutzerdefinierten Ressourcendefinitionen für das Gateway in Ihrem Cluster installieren.
Beschränkungen
- Die Verwendung einer Mischung aus
gateway
- undistio
-config-api-Clustern in derselben Flotte wird nicht unterstützt. - Multi-Cluster-Service-Discovery und Load-Balancing werden für
gateway
-config-api-Cluster nicht unterstützt. - Wenn ein Cluster mit dem vorhandenen
--management automatic
-Flag eingebunden wird, verwendet der Cluster dieistio
-Konfigurations-API und kann nicht zurgateway
-API wechseln. - Es werden nur FQDNs unterstützt. Kurznamen werden nicht unterstützt.
Vorbereitung
In diesem Leitfaden wird davon ausgegangen, dass Sie bereits ein Google Cloud -Projekt erstellt und kubectl
installiert haben.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Generieren Sie einen kubeconfig-Eintrag für Ihren Cluster:
- CLUSTER_NAME ist der Name Ihres Clusters.
- LOCATION ist der Standort Ihres Clusters.
- PROJECT_ID ist die Projekt-ID Ihres Clusters.
Erstellen Sie einen GKE-Cluster.
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --enable-ip-alias \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --release-channel=regular \ --project=PROJECT_ID \ --gateway-api=standard
Dabei gilt:
- CLUSTER_NAME ist der Name Ihres Clusters.
- LOCATION ist der Standort Ihres Clusters.
- PROJECT_ID ist die Projekt-ID Ihres Clusters.
Identitätsföderation von Arbeitslasten für GKE aktivieren:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
Führen Sie den GKE-Metadatenserver auf Ihrem Knoten aus:
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATA
Registrieren Sie den Cluster auf einer Flotte:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
Prüfen Sie, ob der Cluster bei der Flotte registriert ist:
gcloud container hub memberships list --project=PROJECT_ID
Die Ausgabe sieht etwa so aus:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
Weisen Sie die Rolle
trafficdirector.client
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
Weisen Sie die Rolle
container.developer
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role "roles/container.developer"
Dabei ist PROJECT_NUMBER Ihre Projektnummer.
Weisen Sie die Rolle
compute.networkAdmin
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role "roles/compute.networkAdmin"
Dabei ist PROJECT_NUMBER Ihre Projektnummer.
Aktivieren Sie die Mesh-Funktion:
gcloud container hub mesh enable --project PROJECT_ID
Aktualisieren Sie das Mesh, um die Gateway API zu verwenden:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
Prüfen Sie das Update, indem Sie den Status der Cloud Service Mesh-Ressource beschreiben:
gcloud alpha container fleet mesh describe
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
Dabei gilt:
GKE-Cluster erstellen und registrieren
Berechtigungen einrichten
Mit den folgenden Befehlen wird allen authentifizierten Nutzern die Berechtigung erteilt. Sie können jedoch die Identitätsföderation von Arbeitslasten für GKE verwenden, um die Berechtigung nur für ausgewählte Konten zu erteilen.
Cloud Service Mesh aktivieren
Benutzerdefinierte Ressourcendefinitionen installieren
Installieren Sie die benutzerdefinierte GRPCRoute-Ressourcendefinition (CRD):
curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -
Die Ausgabe sieht etwa so aus:
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created