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 Kombination von gateway- und istio-config-api-Clustern in derselben Flotte wird nicht unterstützt. Prüfen Sie, ob die config-api für alle Cluster in Ihrer Flotte auf gateway gesetzt ist. Verwenden Sie den Befehl gcloud container fleet mesh describe --project FLEET_PROJECT_ID, um zu sehen, was Sie für Ihre Flotte konfiguriert haben.
  • 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 die istio-Konfigurations-API und kann nicht zur gateway-API wechseln.
  • Es werden nur FQDNs unterstützt. Kurznamen werden nicht unterstützt.

Überlegungen zur Verwaltung der Datenebene

Bei neuen Pods verwaltet Google, welche Proxyversion eingefügt wird. Die verwaltete Datenebene verwendet den Releasekanal von Google Kubernetes Engine (GKE), um die Proxyversion zu bestimmen.

Bei vorhandenen Pods erfolgt die Proxyverwaltung passiv, basierend auf dem natürlichen Lebenszyklus der Pods im Cluster. Starten Sie Ihre Arbeitslasten neu, um das Update auszulösen und neue Versionen des Proxys einzufügen.

Vorbereitung

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

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    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 \
--workload-metadata=GKE_METADATA

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. Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.

    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 Cloud Platform auf Aktiviert fest.

  7. Klicken Sie im Navigationsbereich auf Netzwerk.

  8. Wählen Sie im Abschnitt Load Balancer, Ingress und Gateway die Option Gateway API aktivieren aus.

  9. Klicken Sie im Navigationsbereich auf Erweiterte Einstellungen.

  10. Prüfen Sie in der Zeile Workload Identity, ob unter Details die Option Aktiviert angezeigt wird. Wenn Deaktiviert angezeigt wird, klicken Sie auf  Funktionskonfiguration bearbeiten, wählen Sie Workload Identity aktivieren aus und klicken Sie dann auf Speichern.

  11. Klicken Sie auf Erstellen.

Nachdem der Cluster erstellt wurde,

  1. Registrieren Sie den Cluster bei einer Flotte:

    gcloud container fleet memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  2. 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 erteilt. Sie können jedoch Workload Identity Federation for GKE verwenden, um die Berechtigung nur für ausgewählte Konten zu erteilen. Weitere Informationen zur Funktionsweise von Workload Identity Federation for GKE finden Sie unter Informationen zu Workload Identity Federation for GKE. Informationen zum Konfigurieren der Identitätsföderation von Arbeitslasten für GKE finden Sie unter Authentifizierung bei Google Cloud APIs über GKE-Arbeitslasten.

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"

Cloud Service Mesh aktivieren

  1. Aktivieren Sie die Mesh-Funktion:

    gcloud container fleet mesh enable --project PROJECT_ID
    
  2. Aktualisieren Sie das Mesh für die Verwendung der Gateway API:

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. Prüfen Sie das Update, indem Sie den Status der Cloud Service Mesh-Ressource beschreiben:

    gcloud alpha container fleet mesh describe \
    --project PROJECT_ID
    

Neue Mitgliedschaften in Ihrer Flotte so einrichten, dass standardmäßig die Gateway API verwendet wird (optional)

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

  1. Erstellen Sie eine YAML-Datei, in der die Gateway API angegeben wird:

    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 ihn 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 Workload Identity-Föderation für GKE und führen Sie den GKE-Metadatenserver auf Ihrem Knoten aus.

Benutzerdefinierte Ressourcendefinitionen installieren

kubeconfig-Eintrag für Ihren Cluster generieren:

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