Cloud Endpoints gRPC für Cloud Run for Anthos mit ESPv2 einrichten

Auf dieser Seite wird beschrieben, wie Sie Cloud Endpoints für Cloud Run for Anthos einrichten. Endpoints verwendet Extensible Service Proxy V2 (ESPv2) als API Gateway. Zur Bereitstellung der API-Verwaltung für Cloud Run for Anthos stellen Sie den vordefinierten ESPv2-Container für Cloud Run for Anthos bereit, der in einem GKE-Cluster ausgeführt wird.

So eingerichtet überwacht ESPv2 alle Anfragen an Ihre Dienste und führt vor dem Aufrufen des Dienstes die erforderlichen Prüfungen (z. B. Authentifizierung) durch. Wenn der Dienst antwortet, sammelt und meldet der ESPv2 Telemetriedaten.

Eine Übersicht über Cloud Endpoints finden Sie in den Abschnitten Über Cloud Endpoints und Architekturübersicht zu Cloud Endpoints.

Aufgabenliste

Verwenden Sie beim Durcharbeiten der Anleitung die folgende Aufgabenliste. Alle Aufgaben müssen ausgeführt werden, damit diese Anleitung abgeschlossen werden kann.

  1. Erstellen Sie ein Google Cloud-Projekt. Wenn Sie Cloud Run nicht selbst bereitgestellt haben, stellen Sie einen Beispieldienst bereit. Siehe Vorbereitung.

  2. Erstellen Sie einen GKE-Cluster, bei dem Cloud Run for Anthos aktiviert ist.

  3. gRPC-Beispiel bereitstellen: Cloud Run for Anthos-Dienst

  4. Erstellen Sie ein gRPC API-Konfigurationsdokument, das Ihre Endpoints API beschreibt, und konfigurieren Sie die Routen zu Ihrem Cloud Run for Anthos-Dienst. Siehe Endpoints konfigurieren.

  5. Stellen Sie das gRPC API-Konfigurationsdokument bereit, um einen verwalteten Dienst zu erstellen. Siehe Endpoints-Konfiguration bereitstellen.

  6. Erstellen Sie ein neues ESPv2-Docker-Image mit Ihrer Endpoints-Dienstkonfiguration. Siehe Neues ESPv2-Image erstellen.

  7. Stellen Sie das neue ESPv2-Image für Cloud Run for Anthos bereit. Siehe ESPv2-Image für Cloud Run bereitstellen.

  8. Erstellen Sie eine Domainzuordnung zum ESPv2 Cloud Run for Anthos-Dienst.

  9. Testen Sie Ihre Konfiguration durch das Senden einer Anfrage an die API.

  10. Überwachen Sie die Aktivitäten der Dienste. Siehe API-Aktivitäten verfolgen.

  11. Führen Sie eine Bereinigung durch.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie 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. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Notieren Sie die Projekt-ID für die nächsten Schritte. Nachstehend wird die Projekt-ID als ESP_PROJECT_ID bezeichnet.
  7. Laden Sie die gcloud CLI herunter und installieren Sie sie.

gcloud-Befehlszeile einrichten

So richten Sie die gcloud CLI für Cloud Run for Anthos für Anthos ein:

  1. Prüfen Sie, ob die gcloud CLI für den Zugriff auf Ihre Daten und Dienste berechtigt ist.

    1. Melden Sie sich an.

      gcloud auth login

    2. Es wird ein neuer Browsertab geöffnet. Dort wählen Sie ein Konto aus, das für das Google Cloud-Projekt, das Sie zum Bereitstellen von ESPv2 für Cloud Run for Anthos erstellt haben, die Rolle Bearbeiter oder Inhaber hat.

  2. Aktualisieren Sie die installierten gcloud-Komponenten:

    gcloud components update
  3. Legen Sie als Plattform gke und als Standardprojekteinstellung für gcloud das soeben erstellte Projekt fest:

    gcloud config set run/platform gke
    gcloud config set project ESP_PROJECT_ID

    Ersetzen Sie ESP_PROJECT_ID durch die Projekt-ID des von Ihnen erstellten Projekts.

  4. Legen Sie die gewünschte Zone für den neuen Cluster fest. Sie können jede Zone verwenden, in der GKE unterstützt wird. Beispiel:

    gcloud config set compute/zone ZONE

    Ersetzen Sie ZONE durch Ihre Zone. Verwenden Sie zum Beispiel us-central1-a. Sie können jede von GKE unterstützte Zone verwenden.

  5. Aktivieren Sie die folgenden APIs für das Projekt. Sie sind erforderlich, um einen Cluster und einen Container in Google Container Registry zu erstellen und zu veröffentlichen:

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com

GKE-Cluster mit aktiviertem Cloud Run for Anthos erstellen

So erstellen Sie einen Cluster und aktivieren ihn für Cloud Run for Anthos in Google Cloud:

  1. Erstellen Sie mit dem folgenden Befehl einen neuen Cluster:

    gcloud container clusters create CLUSTER_NAME \
      --addons=HttpLoadBalancing,CloudRun \
      --machine-type=n1-standard-4 \
      --num-nodes=3

    Ersetzen Sie CLUSTER_NAME durch den gewünschten Clusternamen.

    Obwohl in dieser Anleitung Cluster-Autoscaling nicht aktiviert wird, um die Größe von Clustern je nach Bedarf anzupassen, skaliert Cloud Run for Anthos in Google Cloud Instanzen im Cluster automatisch.

  2. Warten Sie, bis die Erstellung des Clusters abgeschlossen wurde. Beim Erstellen sollten ähnliche Meldungen wie im folgenden Beispiel angezeigt werden:

    Creating cluster CLUSTER_NAME...done.
    Created [https://container.googleapis.com/v1/projects/ESP_PROJECT_ID/zones/ZONE/clusters/CLUSTER_NAME].

    Die Ausgabe zeigt auch die Clusterversion in der Spalte NODE_VERSION der Ausgabe. Beispiel: 1.15.11-gke.1oder 1.14.10-gke.27 Notieren Sie sich die Clusterversion, da sie später in diesem Dokument benötigt wird.

  3. Legen Sie die gcloud-Standardeinstellungen so fest, dass der neue Cluster und der neue Clusterstandort verwendet werden. So müssen Sie diese nicht bei Verwendung der gcloud CLI angeben:

    gcloud config set run/cluster CLUSTER_NAME
    gcloud config set run/cluster_location ZONE
  4. Verwenden Sie den folgenden Befehl, um Details zum neuen Cluster aufzurufen:

    gcloud container clusters describe CLUSTER_NAME
  5. Verwenden Sie den folgenden Befehl, um Anmeldedaten für Ihren Cluster abzurufen:

    gcloud container clusters get-credentials CLUSTER_NAME

gRPC-Beispiel-Cloud Run-Dienst bereitstellen

So stellen Sie den Cloud Run for Anthos sample-Container "grpc-bookstore" im gerade erstellten Cluster bereit:

  1. Installieren Sie gRPC und die gRPC-Tools. Informationen dazu finden Sie in der Kurzanleitung für gRPC in Python.

  2. Dieses gRPC-Server-Beispiel enthält ein vorgefertigtes Docker-Image für den "grpc-bookstore service" von Python: gcr.io/endpointsv2/python-grpc-bookstore-server:2. Verwenden Sie den folgenden Befehl, um "grpc-bookstore" in Ihrem Cluster bereitzustellen:

    gcloud run deploy GRPC_SERVICE \
      --image=gcr.io/endpointsv2/python-grpc-bookstore-server:2 \
      --platform=gke \
     --connectivity=internal \
      --use-http2

    Beachten Sie, dass Sie dies als internen Dienst angeben, damit der Dienst nicht extern zugänglich ist.

    Ersetzen Sie GRPC_SERVICE durch den gewünschten Dienstnamen. Beispiel:

    gcloud run deploy grpc-bookstore \
      --image=gcr.io/endpointsv2/python-grpc-bookstore-server:2 \
      --platform=gke \
      --connectivity=internal \
      --use-http2

    Wenn Sie fertig sind, wird die folgende Meldung angezeigt:

    Service [grpc-bookstore] revision [grpc-bookstore-00001-nuk] has been deployed and is serving 100 percent of traffic at http://grpc-bookstore.default.svc.cluster.local

    Wenn Sie einen grpc-bookstore.default.svc.cluster.localinternen Dienst erstellen, erstellt GKE einen DNS-Namen, der nur für Anfragen aufgelöst werden kann, die aus dem Cluster selbst stammen, nicht für externe Anfragen. Sie können nicht extern vom Cluster aus auf dieses DNS zugreifen. Weitere Informationen finden Sie unter Cloud Run-Dienste.

  3. Stellen Sie einen Pod mit demselben Docker-Image in Ihrem Cluster bereit, um zu prüfen, ob Ihr Dienst ordnungsgemäß funktioniert. Das Image enthält den gRPC-Clientcode für "grpc-bookstore", mit dem Sie den internen Dienst testen können.

    1. Verwenden Sie den folgenden kubectl-Befehl, um einen Pod im selben Cluster wie oben bereitzustellen:

      kubectl run grpc --generator=run-pod/v1 \
        --image=gcr.io/endpointsv2/python-grpc-bookstore-server:2

      Dieses Image enthält das Skript bookstore_client.py, mit dem Sie Clientanfragen aus dem Cluster senden können.

      Hinweis: Bei neueren Versionen von kubectl gibt der Befehl möglicherweise die folgende Warnung aus:

      Flag --generator has been deprecated, has no effect and will be removed in the future".

      Sie können diese Warnung ignorieren.

    2. Rufen Sie den Namen des Pods "grpc-bookstore" ab, der auf Ihrem Cluster erstellt wurde, als Sie das Docker-Image im vorherigen Schritt bereitgestellt haben:

      kubectl get pods

      Die Ausgabe sollte im folgenden Format angezeigt werden:

      NAME   READY    STATUS    RESTARTS   AGE
      grpc   1/1      Running   0          23h

      Dabei ist grp der Name des Pods "grpc-bookstore". Achten Sie darauf, dass der Status des Pods Aktiv lautet, bevor Sie fortfahren.

    3. Verwenden Sie den folgenden Befehl, um eine Clientanfrage an den Dienst "grpc-bookstore" zu senden:

      kubectl exec grpc -ti -- python3 bookstore_client.py \
        --host grpc-bookstore.default.svc.cluster.local --port=80

      Dieser Befehl führt das bookstore_client.py-Skript intern im Cluster aus, um eine gRPC-Anfrage an den Dienst „gRPC-Book“ für den Hostnamen grpc-bookstore.default.svc.cluster.local zu senden.

      Wenn alles korrekt funktioniert, sollten Sie eine Antwort im folgenden Format sehen:

      ListShelves: shelves {
        id: 1
        theme: "Fiction"
      }
      shelves {
        id: 2
        theme: "Fantasy"
      }

Endpoints konfigurieren

Sie müssen eine gRPC API-Spezifikation haben, in der die Oberfläche Ihres Back-End-Dienstes und Authentifizierungsanforderungen beschrieben sind.

Informationen zum Festlegen des Namensfelds der gRPC API-Spezifikation

Im Feld name der gRPC API-Spezifikation geben Sie den Endpoints-Dienstnamen an, der für den Zugriff auf Ihren Cloud Run for Anthos-Dienst verwendet wird. Der Endpoints-Dienstname hat das Format eines Domainnamens:

API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog

Da der Endpoints-Dienstname einem Domainnamen entspricht, muss der Name diesen Regeln folgen:

  • Er darf nur Kleinbuchstaben, Zahlen, Punkte oder Bindestriche enthalten.
  • Er darf nicht mit einem Bindestrich beginnen.
  • Er darf keinen Unterstrich enthalten.

Beispiel:

grpc-boostore-api.endpoints.ESP_PROJECT_ID.cloud.goog

gRPC API-Spezifikation erstellen

Das Beispiel bookstore-grpc enthält die Dateien, die Sie lokal kopieren und konfigurieren müssen.

  1. Erstellen Sie ein neues Verzeichnis für die gRPC API-Spezifikation, z. B. my-anthos-grpc. Wechseln Sie dann in dieses Verzeichnis.

  2. Klonen Sie das Git-Repository, in dem der gRPC-Clientcode gehostet wird, in Ihr neues Verzeichnis:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
  3. Wechseln Sie in das Arbeitsverzeichnis:

    cd python-docs-samples/endpoints/bookstore-grpc/

    Beachten Sie, dass dieses Verzeichnis die Datei bookstore.proto enthält. Diese Datei definiert die API für den Bookstore-Dienst.

  4. Erstellen Sie aus der Datei .proto des Dienstes eine abgeschlossene protobuf-Deskriptor-Datei:

    1. Erstellen Sie das folgende Verzeichnis unter Ihrem Arbeitsverzeichnis: generated_pb2

    2. Erstellen Sie die Deskriptordatei api_descriptor.pb mit dem Protokollpuffercompiler protoc. Führen Sie den folgenden Befehl in dem Verzeichnis aus, das bookstore.proto enthält:

      python3 -m grpc_tools.protoc \
      --include_imports \
      --include_source_info \
      --proto_path=. \
      --descriptor_set_out=api_descriptor.pb \
      --python_out=generated_pb2 \
      --grpc_python_out=generated_pb2 \
      bookstore.proto

    Im vorherigen Befehl ist --proto_path auf das aktuelle Arbeitsverzeichnis festgelegt. Wenn Sie in Ihrer gRPC-Build-Umgebung ein anderes Verzeichnis für .proto-Eingabedateien verwenden, ändern Sie --proto_path entsprechend, sodass der Compiler das Verzeichnis mit der gespeicherten bookstore.proto-Datei durchsucht.

  5. Ändern Sie die Datei api_config_anthos.yaml in Ihrem aktuellen Arbeitsverzeichnis (demselben Verzeichnis, in dem sich auch bookstore.proto befindet), um der Datei Folgendes hinzuzufügen:

    type: google.api.Service
    config_version: 3
    #
    # Name of the service configuration.
    #
    name: API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog
    #
    # API title to appear in the user interface (Google Cloud console).
    #
    title: Bookstore gRPC API In Cloud Run Anthors
    apis:
    - name: endpoints.examples.bookstore.Bookstore
    #
    # Create a DNS record to map your service name to IP address
    #
    endpoints:
      - name: API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog
        target: IP_ADDRESS
    #
    # Specify the backend address to route to
    #
    backend:
      rules:
        - selector: "*"
          address: grpc://GRPC_SERVICE.default.svc.cluster.local
          disable_auth: true
    #
    # API usage restrictions.
    #
    usage:
      rules:
      # ListShelves methods can be called without an API Key.
      - selector: endpoints.examples.bookstore.Bookstore.ListShelves
        allow_unregistered_calls: true

    Die Einrückung ist für das YAML-Format wichtig.

  6. Geben Sie im Feld name den Domainnamen der Endpoints API für den Zugriff auf Ihren Cloud Run for Anthos-Dienst in folgendem Format ein:

    API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog

    Beispiel:

    grpc-bookstore-api.endpoints.ESP_PROJECT_ID.cloud.goog

  7. Der Abschnitt endpoints registriert einen DNS-Eintrag für Ihren Endpoints-Dienst auf der Domain cloud.goog im Format:

    endpoints:
      - name: API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog
        target: IP_ADDRESS

    Die IP_ADDRESS ist die IP-Adresse des Dienstes istio-ingress für Ihren Cluster. So ermitteln Sie die IP-Adresse:

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

      Zur Seite "Google Kubernetes Engine"

    2. Klicken Sie im linken Navigationsbereich auf Dienste & Ingress, um eine Liste der Dienste aufzurufen.

    3. Wenn Ihre Clusterversion 1.15.3-gke.19 oder höher, 1.14.3-gke.12 oder höher oder 1.13.10-gke.8 oder höher ist, scrollen Sie nach unten zum istio-ingress-Dienst. Für alle anderen Clusterversionen scrollen Sie nach unten zum Dienst istio-ingressgateway.

    4. Kopieren Sie die externe IP-Adresse, die neben dem Load-Balancer angezeigt wird, ohne die PORT-Einstellung, falls vorhanden. Wenn die IP-Adresse beispielsweise XX.XXX.XX.XXX:15020 lautet, lassen Sie :15020 weg. Ignorieren Sie die anderen aufgeführten IP-Adressen.

  8. Das Feld address im Abschnitt backend gibt den internen DNS-Namen des Cloud Run-Dienstes "grpc-bookstore" mit dem Proto-Schema grpc:// an und deaktiviert die Authentifizierung für diesen Dienst:

    address: grpc://GRPC_SERVICE.default.svc.cluster.local
    disable_auth: true

    Beispiel:

    address: grpc://grpc-bookstore.default.svc.cluster.local
    disable_auth: true

    Das ist erforderlich, da der Aufruf von ESPv2 Beta an den Cloud Run for Anthos-Dienst als interner Aufruf innerhalb des Clusters erfolgt und daher keine Authentifizierung erforderlich ist.

  9. Beachten Sie den Wert des Attributs title in der Datei api_config_authos.yaml:

    title: Bookstore gRPC API In Cloud Run Anthos

    Der Wert des Attributs title wird nach Bereitstellung der Konfiguration zum Namen des Endpoints-Dienstes.

  10. Speichern Sie das gRPC API-Dokument.

Weitere Informationen zu den Feldern im für Endpoints erforderlichen OpenAPI-Dokument finden Sie unter Endpoints konfigurieren.

Endpoints-Konfiguration bereitstellen

Die Endpoints-Konfiguration wird mit dem Befehl gcloud endpoints services deploy bereitgestellt. Dieser Befehl erstellt mithilfe von Service Management einen verwalteten Dienst.

So stellen Sie die Endpoints-Konfiguration bereit:

  1. Achten Sie darauf, dass Sie sich in dem Verzeichnis befinden, das Ihr gRPC-Dokument enthält.

  2. Laden Sie die Konfiguration hoch und erstellen Sie einen verwalteten Dienst.

    gcloud endpoints services deploy api_descriptor.pb api_config_anthos.yaml \
      --project ESP_PROJECT_ID

    Dadurch wird ein neuer Endpoints-Dienst mit dem Namen erstellt, den Sie in der Datei api_config_anthos.yaml im Feld name angegeben haben. Der Endpoints-Dienst wird dem OpenAPI-Dokument entsprechend konfiguriert.

    Beim Erstellen und Konfigurieren des Endpoints-Diensts gibt Service Management Informationen an das Terminal aus. Nach Abschluss der Bereitstellung erhalten Sie eine Meldung, die in etwa so aussieht:

    Service Configuration [CONFIG_ID] uploaded for service [API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog]

    CONFIG_ID ist die eindeutige Endpoints-Dienstkonfigurations-ID, die von der Bereitstellung erstellt wird. Beispiel:

    Service Configuration [2019-02-01r0] uploaded for service [grpc-bookstore-api.endpoints.ESP_PROJECT_ID.cloud.goog] 

    Die Dienstkonfigurations-ID besteht aus einem Datumsstempel, gefolgt von einer Überarbeitungsnummer. Wenn Sie api_config_anthos.yaml am selben Tag noch einmal bereitstellen, wird die Überarbeitungsnummer in der Dienstkonfigurations-ID erhöht. Sie können die Dienstkonfiguration und den Bereitstellungsverlauf in der Google Cloud Console auf der Seite Endpunkte > Dienste ansehen.

    Wenn Sie eine Fehlermeldung erhalten, lesen Sie Fehlerbehebung bei der Endpoints-Konfigurationsbereitstellung.

Erforderliche Dienste prüfen

Für Endpoints und den ESP müssen mindestens die folgenden Google-Dienste aktiviert sein:
Name Titel
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API
endpoints.googleapis.com Google Cloud Endpoints

In der Regel werden die erforderlichen Dienste mit dem Befehl gcloud endpoints services deploy aktiviert. Unter folgenden Umständen kann es vorkommen, dass der Befehl gcloud erfolgreich ausgeführt wird, die erforderlichen Dienste jedoch nicht aktiviert werden:

  • Wenn Sie eine Drittanbieteranwendung wie Terraform verwendet haben und Sie diese Dienste nicht hinzufügen.

  • Wenn Sie die Endpoints-Konfiguration für ein vorhandenes Google Cloud-Projekt bereitgestellt haben, in dem diese Dienste explizit deaktiviert wurden.

Prüfen Sie mit dem folgenden Befehl, ob die erforderlichen Dienste aktiviert sind:

gcloud services list

Wenn die erforderlichen Dienste nicht aufgeführt sind, müssen Sie sie aktivieren:

gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
gcloud services enable endpoints.googleapis.com

Aktivieren Sie auch Ihren Endpoints-Dienst:

gcloud services enable ENDPOINTS_SERVICE_NAME

Zum Ermitteln des ENDPOINTS_SERVICE_NAME haben Sie folgende Möglichkeiten:

  • Rufen Sie nach der Bereitstellung der Endpoints-Konfiguration die Seite Endpunkte in der Cloud Console auf. Die Liste der möglichen ENDPOINTS_SERVICE_NAME wird in der Spalte Dienstname angezeigt.

  • Bei OpenAPI ist ENDPOINTS_SERVICE_NAME der Wert, den Sie im Feld host Ihrer OpenAPI-Spezifikation angegeben haben. Bei gRPC ist der ENDPOINTS_SERVICE_NAME das, was Sie im Feld name Ihrer gRPC-Endpoints-Konfiguration angegeben haben.

Weitere Informationen zu den gcloud-Befehlen finden Sie unter gcloud-Dienste.

Neues ESPv2-Image für Cloud Run for Anthos erstellen

Erstellen Sie die Endpoints-Dienstkonfiguration in einem neuen Docker-Image für ESPv2. Nachdem Sie dieses Image erstellt haben, können Sie es in Ihrem Cluster bereitstellen.

So integrieren Sie die Dienstkonfiguration in ein neues ESPv2-Docker-Image:

  1. Laden Sie dieses Skript auf den lokalen Computer herunter, auf dem die gcloud CLI installiert ist, und führen Sie ihn so aus:

    chmod +x gcloud_build_image
    ./gcloud_build_image -s API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog \
    -c CONFIG_ID -p ESP_PROJECT_ID

    Das Skript verwendet den gcloud-Befehl, um die Dienstkonfiguration herunterzuladen, die Dienstkonfiguration in ein neues ESPv2-Image einzubinden und das neue Image in Ihre Projekt-Container Registry hochzuladen. Das Skript verwendet automatisch den neuesten Release von ESPv2, der durch ESP_VERSION im Ausgabe-Image-Namen angegeben ist. Das Ausgabebild wird hochgeladen in:

    gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:ESP_VERSION-API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog-CONFIG_ID

ESPv2-Image für Cloud Run for Anthos bereitstellen

Stellen Sie das Dienst-Image für ESPv2 Cloud Run for Anthos in Ihrem Cluster bereit:

  1. Stellen Sie den Cloud Run for Anthos-Dienst von ESPv2 mit dem neuen Image bereit:

    gcloud run deploy ESP_V2_SERVICE_NAME \
      --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog-CONFIG_ID" \
      --platform gke \
      --use-http2 \
      --project=ESP_PROJECT_ID

    Geben Sie unter ESP_PROJECT_ID den Namen an, den Sie für den ESPv2-Dienst verwenden möchten. Legen Sie in diesem Beispiel für ESP_V2_SERVICE_NAME espv2 fest.

  2. Wenn Sie Endpoints so konfigurieren möchten, dass zusätzliche ESPv2-Startoptionen wie das Aktivieren von CORS verwendet werden, können Sie die Argumente in der Umgebungsvariablen ESPv2_ARGS übergeben:

    gcloud run deploy ESP_V2_SERVICE_NAME \
      --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog-CONFIG_ID" \
      --set-env-vars=ESPv2_ARGS=--cors_preset=basic \
      --platform gke --use-http2 \
      --project ESP_PROJECT_ID

    Weitere Informationen und Beispiele zum Festlegen der Umgebungsvariablen ESPv2_ARGS, einschließlich der Liste der verfügbaren Optionen und Informationen zur Angabe mehrerer Optionen, finden Sie unter Flags in Extensible Service Proxy V2.

Domainzuordnung für den ESPv2 Cloud Run for Anthos-Dienst erstellen

Damit Sie den Header host bei einer Anfrage weglassen können, fügen Sie eine Domainzuordnung für den ESPv2-Dienst hinzu:

  1. Zu Cloud Run

  2. Wählen Sie Benutzerdefinierte Domains verwalten aus.

  3. Wählen Sie Zuordnung hinzufügen aus.

  4. Wählen Sie im Drop-down-Menü die Option Dienstdomainzuordnung hinzufügen aus.

  5. Wählen Sie im Pop-up-Fenster Zuordnung hinzufügen im Feld Dienst für Zuordnung auswählen den ESPv2-Dienst aus.

  6. Geben Sie im Feld Domainnamen eingeben den Domainnamen an, den Sie für den Zugriff auf Ihren Cloud Run for Anthos-Dienst über Endpoints verwenden möchten. Geben Sie beispielsweise Folgendes an:

    API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog

    Dabei ist API_NAME der Name Ihrer Endpoints API. In diesem Beispiel können Sie "hello-api" verwenden:

    grpc-bookstore-api.endpoints.ESP_PROJECT_ID.cloud.goog

  7. Klicken Sie auf Weiter. Eine Zusammenfassung der Zuordnung wird angezeigt.

  8. Wählen Sie Fertig aus, um die Zuordnung zu speichern.

Anfrage an die API senden

Zum Senden von Requests an die Beispiel-API können Sie einen gRPC-Beispielclient verwenden, der in Python geschrieben wurde.

  1. Achten Sie darauf, dass Sie sich in dem Verzeichnis befinden, das Ihre gRPC-Dokumente enthält, z. B. api_config_anthos.yaml.

  2. Installieren Sie die Abhängigkeiten:

    pip3 install virtualenv
    virtualenv env
    source env/bin/activate
    pip3 install -r requirements.txt
  3. Senden Sie eine Anfrage an die Beispiel-API:

    python3 bookstore_client.py --host API_NAME.endpoints.ESP_PROJECT_ID.cloud.goog --port 80

    Beispiel:

    python3 bookstore_client.py --host grpc-bookstore-api.endpoints.ESP_PROJECT_ID.cloud.goog --port 80

    Wenn alles korrekt funktioniert, sollten Sie eine Antwort im folgenden Format sehen:

    ListShelves: shelves {
      id: 1
      theme: "Fiction"
    }
    shelves {
      id: 2
      theme: "Fantasy"
    }
    • Sehen Sie sich auf der Seite Endpoints > Dienste die Aktivitätsgrafiken für Ihre API an.

      Endpoints-Dienste aufrufen

      Es kann einen Moment dauern, bis die Anfrage in den Grafiken angezeigt wird.

    • Sehen Sie sich auf der Seite "Log Explorer" die Anfragelogs an.

      Zur Seite „Log-Explorer“

Wenn Sie als Antwort einen Fehler erhalten haben, lesen Sie die Informationen unter Fehlerbehebung bei Antwortfehlern.

Sie haben gerade eine API in Cloud Endpoints bereitgestellt und getestet!

Endpoints API für die Verwendung von HTTPS konfigurieren

In Google Cloud ist die automatische TLS-Unterstützung für Cloud Run for Anthos standardmäßig deaktiviert. Wenn Sie in diesem Beispiel über ESPv2 auf Ihre Endpoints API zugreifen, nehmen Sie daher den Aufruf über HTTP vor.

Sie können ESPv2 so konfigurieren, dass Anfragen über HTTPS unterstützt werden. Beachten Sie, dass Sie die HTTPS-Unterstützung für ESPv2, den externen Dienst, und nicht für "hello", den internen Back-End-Dienst, konfigurieren.

Um HTTPS mit ESPv2 zu unterstützen, müssen Sie:

  1. Inhaber einer Domain sein. Wenn Sie keine Domain haben, können Sie diese von Google oder von einem anderen Domainanbieter beziehen.

  2. Erstellen Sie eine Domainzuordnung für Ihren ESPv2-Dienst und aktualisieren Sie den DNS-Eintrag entsprechend der Anleitung auf der Seite „Domainzuordnung“.

    Wenn Sie Ihre Domain von Google Domains erhalten haben, verwenden Sie diese als DNS-Server. Andernfalls verwenden Sie Cloud DNS oder einen DNS-Server Ihrer Wahl. Am einfachsten ist es, eine Domain von Google Domains zu verwenden.

  3. In der Endpoints-OpenAPI-Spezifikation:

    1. Legen Sie das Feld name so fest, dass es auf Ihre Domain und nicht auf *.cloud.goog verweist.

    2. Entfernen Sie das Tag endpoints und seine beiden untergeordneten Attribute.

Eine vollständige Anleitung finden Sie unter HTTPS- und automatische TLS-Zertifikate aktivieren.

API-Aktivität verfolgen

  1. Sehen Sie sich in der Google Cloud Console auf der Seite Endpunkte > Dienste die Aktivitätsgrafiken für Ihre API an.

    Endpoints-Aktivitätsgrafiken ansehen

    Es kann einen Moment dauern, bis die Anfrage in den Grafiken angezeigt wird.

  2. Sehen Sie sich auf der Seite "Log Explorer" die Anfragelogs an.

    Endpoints-Anfragelogs ansehen

Entwicklerportal für die API erstellen

Sie können mit dem Cloud Endpoints-Portal ein Entwicklerportal erstellen. Das ist eine Website zur Interaktion mit der Beispiel-API. Weitere Informationen finden Sie unter Übersicht über das Cloud Endpoints-Portal.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

Informationen zum Beenden der in dieser Anleitung verwendeten Dienste finden Sie unter API und API-Instanzen löschen.

Nächste Schritte