Einrichtung der Gateway API für Cloud Service Mesh vorbereiten

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

Beschränkungen

  • Eine Kombination aus gateway- und istio-Config-API-Clustern in derselben Flotte wird nicht unterstützt.
  • Multi-Cluster-Diensterkennung und Load-Balancing werden nicht unterstützt für gateway config-api-Cluster.
  • Wenn ein Cluster mit dem vorhandenen Flag --management automatic eingerichtet wird beginnt der Cluster mit der Verwendung der istio-Konfigurations-API und kann nicht geändert werden auf die gateway API.
  • Es werden nur FQDNs unterstützt. Kurznamen werden nicht unterstützt.

Vorbereitung

In diesem Leitfaden wird davon ausgegangen, dass Sie bereits haben ein Google Cloud-Projekt erstellt und kubectl installiert.

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

  1. Generieren Sie einen kubeconfig-Eintrag für Ihren Cluster:
  2. 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.

GKE-Cluster erstellen und registrieren

  1. 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.
  2. Aktivieren Sie die Identitätsföderation von Arbeitslasten für GKE:

    gcloud container clusters update CLUSTER_NAME \
    --location LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog
    
  3. 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
    
  4. Registrieren Sie den Cluster bei einer Flotte:

    gcloud container hub memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  5. 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
    

Berechtigungen einrichten

Beachten Sie, dass die folgenden Befehle allen authentifizierten Nutzern Berechtigungen gewähren, Sie können jedoch die Identitätsföderation von Arbeitslasten für GKE verwenden, um nur ausgewählten Konten Berechtigungen zu 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 Ihre 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 Ihre Projektnummer.

Cloud Service Mesh aktivieren

  1. Aktivieren Sie die Mesh-Funktion:

    gcloud container hub mesh enable --project PROJECT_ID
    
  2. Aktualisieren Sie das Mesh-Netzwerk, um die Gateway API zu verwenden:

    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
    

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

Nächste Schritte