Gateway API für Cloud Service Mesh einrichten

Auf dieser Seite wird beschrieben, wie Sie die erforderlichen benutzerdefinierten Ressourcendefinitionen für das Gateway in Ihrem Cluster installieren.

Beschränkungen

  • Eine Kombination aus gateway- und istio-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 eingerichtet wird, verwendet der Cluster die istio-Konfigurations-API und kann nicht zur gateway-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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

GKE-Cluster erstellen und registrieren

gcloud

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
--workload-pool=PROJECT_ID.svc.id.goog

Dabei gilt:

  • CLUSTER_NAME ist der Name Ihres Clusters.
  • LOCATION ist der Standort Ihres Clusters.
  • PROJECT_ID ist die Projekt-ID Ihres Clusters.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie auf Erstellen.

  3. Klicken Sie unter Standard auf Konfigurieren.

  4. Geben Sie im Bereich Clustergrundlagen Folgendes ein:

    1. Geben Sie den Namen für den Cluster ein.
    2. Wählen Sie als Standorttyp eine Compute Engine-Region für Ihren Cluster aus.
  5. Klicken Sie im Navigationsbereich unter Knotenpools auf default-pool und wählen Sie Sicherheit aus.

  6. Wählen Sie in der Liste Zugriffsbereiche die Option Zugriff für jede API festlegen aus und legen Sie für Cloud Platform die Option Aktiviert fest.

  7. Klicken Sie im Navigationsbereich unter Cluster auf Netzwerk.

  8. Wählen Sie in der Liste Cluster Networking die Option Gateway API aktivieren aus.

  9. Klicken Sie im Navigationsbereich unter Cluster auf Sicherheit.

  10. Wählen Sie in der Liste Sicherheit die Option Workload Identity aktivieren aus.

  11. Klicken Sie auf Erstellen.

Nachdem der Cluster erstellt wurde,

  1. 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
    
  2. Registrieren Sie den Cluster bei einer Flotte:

    gcloud container fleet memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  3. Prüfen Sie, ob der Cluster bei der Flotte registriert ist:

    gcloud container fleet memberships list --project=PROJECT_ID
    

    Die Ausgabe sieht etwa so aus:

    NAME            EXTERNAL_ID                             LOCATION
    my-cluster      91980bb9-593c-4b36-9170-96445c9edd39    us-west1
    

Berechtigungen einrichten

Mit den folgenden Befehlen wird allen authentifizierten Nutzern die Berechtigung gewährt. Mit der Identitätsföderation von Arbeitslasten für GKE können Sie jedoch nur ausgewählten Konten die Berechtigung gewähren.

  1. 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"
    
  2. 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 die Projektnummer.

  3. 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 die Projektnummer.

Cloud Service Mesh aktivieren

  1. Aktivieren Sie die Mesh-Funktion:

    gcloud container fleet mesh enable --project PROJECT_ID
    
  2. Aktualisieren Sie das Mesh, damit die Gateway API verwendet wird:

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. Bestätigen Sie die Aktualisierung, indem Sie den Status der Cloud Service Mesh-Ressource beschreiben:

    gcloud alpha container fleet mesh describe
    

Festlegen, dass neue Mitgliedschaften in Ihrer Flotte standardmäßig die Gateway API verwenden (optional)

Alternativ können Sie Standardeinstellungen auf Flottenebene für neue GKE-Cluster erstellen, die bei der Clustererstellung bei der Flotte registriert werden, damit sie automatisch mit der Gateway API konfiguriert werden.

  1. Erstellen Sie eine YAML-Datei mit der Gateway API:

    echo "configapi: gateway" > mesh.yaml
    
  2. Mesh aktualisieren:

    gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
        --fleet-default-member-config mesh.yaml
    
  3. Sie können einen Cluster erstellen und in einem Schritt bei Ihrer Flotte registrieren, um die Standardkonfiguration zu verwenden:

    gcloud container clusters create CLUSTER_NAME \
        --project PROJECT_ID \
        --fleet-project FLEET_PROJECT_ID \
        --location=LOCATION \
    
  4. Aktivieren Sie die Identitätsföderation von Arbeitslasten für GKE und führen Sie den GKE-Metadatenserver auf Ihrem Knoten aus.

Benutzerdefinierte Ressourcendefinitionen installieren

Generieren Sie einen kubeconfig-Eintrag für Ihren Cluster:

gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID

Dabei gilt:

  • CLUSTER_NAME ist der Name Ihres Clusters.
  • LOCATION ist der Standort Ihres Clusters.
  • PROJECT_ID ist die Projekt-ID Ihres Clusters.

Installieren Sie die benutzerdefinierte Ressourcendefinition (CRD) für GRPCRoute:

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

Nächste Schritte