API-Backend bereitstellen

Auf dieser Seite wird erläutert, wie Sie den Backend-Code der API und Extensible Service Proxy (ESP) in Google Kubernetes Engine und Compute Engine bereitstellen.

Der genaue Ablauf der Bereitstellung hängt von der Plattform ab, auf der die API gehostet wird. Auf jeden Fall müssen in einem Schritt der Dienstname und eine Option, die ESP konfiguriert, an ESP übergeben werden. Nur so kann die aktuellste Cloud Endpoints-Dienstkonfiguration verwendet werden. Anhand dieser Informationen kann ESP die Endpoints-Konfiguration der API abrufen und Anfragen und Antworten weiterleiten, damit Cloud Endpoints die API verwalten kann.

Vorbereitung

Sie sollten Folgendes bereits haben:

Bereitstellung vorbereiten

Compute Engine

Damit Endpoints die API verwalten kann, müssen Sie den ESP sowie den Back-End-Servercode für die API installieren und konfigurieren. Sie müssen Docker auf Ihrer Compute Engine-VM-Instanz installieren, damit Sie das ESP-Docker-Image ausführen können, das in Container Registry kostenlos verfügbar ist.

Vor der Bereitstellung:

Bevor Sie die API und ESP in Compute Engine bereitstellen, führen Sie die folgenden Schritte aus:

  1. Erstellen, konfigurieren und starten Sie die VM-Instanz.
  2. Installieren Sie Docker Enterprise Edition (EE) oder Docker Community Edition (CE) auf der VM-Instanz.
  3. Erstellen Sie einen Docker-Container für den Back-End-Servercode.
  4. Verschieben Sie den Container in die Container Registry oder eine andere Registry.
  5. Überprüfen Sie, ob Sie

GKE

Wenn Sie einen Cluster in der Google Cloud Console erstellen, enthalten die OAuth-Bereiche, die dem Dienstkonto des Clusters gewährt werden, standardmäßig die von Cloud Endpoints benötigten Bereiche:

  • Service Control: Aktiviert
  • Service Management: Schreibgeschützt

Wenn Sie einen Cluster mit dem Befehl gcloud container clusters create oder mithilfe einer Konfigurationsdatei eines Drittanbieters erstellen, geben Sie die folgenden Bereiche an:

  • "https://www.googleapis.com/auth/servicecontrol"
  • "https://www.googleapis.com/auth/service.management.readonly"

Weitere Informationen finden Sie unter Was sind Zugriffsbereiche?.

Vor der Bereitstellung:

Wenn Sie die Manifestdatei der Bereitstellung um einen kleinen Abschnitt erweitern, können Sie das ESP-Docker-Image neben der containerisierten Anwendung auf Ihren Containerclustern ausführen. Führen Sie die folgenden Schritte aus, bevor Sie die API mit ESP in GKE bereitstellen:

  1. Stellen Sie die containerisierte Anwendung auf den Containerclustern bereit. In der GKE-Dokumentation werden folgende Schritte beschrieben:

    1. Anwendung in einem Docker-Image verpacken
    2. Image in eine Registry hochladen
    3. Container-Cluster erstellen
    4. Anwendung im Cluster bereitstellen
    5. Anwendung im Internet freigeben
  2. Prüfen Sie, ob Sie

    • den API-Server starten und
    • Anfragen an die API senden können.

API und ESP bereitstellen

Compute Engine

So stellen Sie die API und ESP in Compute Engine mit Docker bereit:

  1. Stellen Sie eine Verbindung zur VM-Instanz her. Ersetzen Sie INSTANCE_NAME durch den Namen der VM-Instanz:

    gcloud compute ssh INSTANCE_NAME
    
  2. Erstellen Sie Ihr eigenes Containernetzwerk mit dem Namen esp_net:

    sudo docker network create --driver bridge esp_net
    
  3. Führen Sie eine Image-Instanz des Back-End-Servercodes aus und verbinden Sie sie mit dem Containernetzwerk esp_net:

    sudo docker run \
        --detach \
        --name=YOUR_API_CONTAINER_NAME \
        --net=esp_net \
        gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1
    
    • Ersetzen Sie YOUR_API_CONTAINER_NAME durch den Namen des Containers.
    • Ersetzen Sie YOUR_PROJECT_ID durch die Google Cloud-Projekt-ID, die Sie beim Hochladen des Images verwendet haben.
    • Ersetzen Sie YOUR_IMAGE durch den Namen des Images.
  4. Rufen Sie den Dienstnamen Ihrer API ab. Das ist der Name, den Sie im Feld name der YAML-Datei für die Dienstkonfiguration angegeben haben.

  5. Führen Sie eine Instanz des ESP-Docker-Images aus:

    sudo docker run \
        --detach \
        --name=esp \
        --publish=80:9000 \
        --net=esp_net \
        gcr.io/endpoints-release/endpoints-runtime:1 \
        --service=SERVICE_NAME \
        --rollout_strategy=managed \
        --http2_port=9000 \
        --backend=grpc://YOUR_API_CONTAINER_NAME:8000
    
    • Ersetzen Sie SERVICE_NAME durch den Namen des Dienstes.
    • Ersetzen Sie YOUR_API_CONTAINER_NAME durch den Namen des API-Containers.

    Mit der Option --rollout_strategy=managed legen Sie fest, dass der ESP die zuletzt bereitgestellte Dienstkonfiguration verwendet. Wenn Sie diese Option innerhalb von 5 Minuten nach der Bereitstellung einer neuen Dienstkonfiguration angeben, erkennt der ESP die Änderung und verwendet automatisch die neue Konfiguration. Wir empfehlen, diese Option anstelle einer konkreten Konfigurations-ID anzugeben, die vom ESP verwendet werden soll.

Wenn Sie ESP für die Verwendung einer bestimmten Konfigurations-ID konfigurieren müssen:

  1. Fügen Sie die Option --version ein und legen Sie dafür eine bestimmte Konfigurations-ID fest.

  2. Entfernen Sie entweder die Option --rollout_strategy=managed oder setzen Sie --rollout_strategy auf fixed. Die Option fixed konfiguriert den ESP so, dass die in --version angegebene Dienstkonfiguration verwendet wird.

  3. Führen Sie den Befehl docker run noch einmal aus.

Wenn Sie sowohl die Option --rollout_strategy=managed als auch --version angeben, startet der ESP mit der von Ihnen unter --version angegebenen Konfiguration, wird jedoch im verwalteten Modus ausgeführt und ruft die neueste Konfiguration ab.

Es wird empfohlen, den ESP höchstens für kurze Zeit so zu konfigurieren, dass er eine bestimmte Konfigurations-ID verwendet. Andernfalls müssen Sie ihn nämlich nach jedem Bereitstellen einer aktualisierten Dienstkonfiguration neu starten, damit er diese verwendet.

So entfernen Sie eine bestimmte Konfigurations-ID:

  1. Entfernen Sie die Option --version in den ESP-Flags für docker run.

  2. Fügen Sie die Option --rollout_strategy=managed ein.

  3. Führen Sie den Befehl docker run aus, um den ESP neu zu starten.

Eine vollständige Liste der für den ESP-Start möglichen Optionen finden Sie unter ESP-Startoptionen.

GKE

So stellen Sie ESP in GKE bereit:

  1. Rufen Sie den Dienstnamen Ihrer API ab.

  2. Öffnen Sie die Manifestdatei der Bereitstellung (deployment.yaml) und fügen Sie den folgenden Code in den Abschnitt containers ein:

          containers:
          - name: esp
            image: gcr.io/endpoints-release/endpoints-runtime:1
            args: [
              "--http2_port=9000",
              "--service=SERVICE_NAME",
              "--rollout_strategy=managed",
              "--backend=grpc://127.0.0.1:8000"
            ]
            ports:
              - containerPort: 9000
    

    Ersetzen Sie SERVICE_NAME durch den Dienstnamen Ihrer API.

  3. Starten Sie den Kubernetes-Dienst mit dem Befehl kubectl create:

        kubectl create -f deployment.yaml
    

Wenn Sie ESP für die Verwendung einer bestimmten Konfigurations-ID konfigurieren müssen:

  1. Fügen Sie die Option --version in die Manifestdatei der Bereitstellung ein und legen Sie dafür eine bestimmte Konfigurations-ID fest.

  2. Entfernen Sie entweder --rollout_strategy=managed oder legen Sie für --rollout_strategy den Wert fixed fest. Die Option fixed konfiguriert den ESP so, dass die in --version angegebene Dienstkonfiguration verwendet wird.

  3. Starten Sie den Kubernetes-Dienst: kubectl create -f deployment.yaml

Wenn Sie sowohl die Option --rollout_strategy=managed als auch --version angeben, startet der ESP mit der von Ihnen unter --version angegebenen Konfiguration, wird jedoch im verwalteten Modus ausgeführt und ruft die neueste Konfiguration ab.

Es wird empfohlen, den ESP höchstens für kurze Zeit so zu konfigurieren, dass er eine bestimmte Konfigurations-ID verwendet. Andernfalls müssen Sie ihn nämlich nach jedem Bereitstellen einer aktualisierten Dienstkonfiguration neu starten, damit er diese verwendet.

So entfernen Sie eine bestimmte Konfigurations-ID:

  1. Entfernen Sie die Option --version aus der Manifestdatei der Bereitstellung.

  2. Fügen Sie --rollout_strategy=managed hinzu.

  3. Starten Sie den Kubernetes-Dienst: kubectl create -f deployment.yaml

Eine vollständige Liste der für den ESP-Start möglichen Optionen finden Sie unter ESP-Startoptionen.

API-Aktivität verfolgen

Nach der Bereitstellung des ESP und des API-Back-Ends können Sie mit Tools wie etwa curl oder Postman Anfragen an die API senden. Wenn Sie als Antwort einen Fehler erhalten haben, lesen Sie die Informationen unter Fehlerbehebung bei Antwortfehlern.

Nachdem einige Anfragen gesendet wurden, haben Sie folgende Optionen:

  • Wechseln Sie zu Endpoints > Dienste, um die Aktivitätsdiagramme für die API anzusehen. Es kann einige Momente dauern, bis die Anfrage in den Grafiken angezeigt wird.

    Endpoints-Dienste aufrufen

  • Sehen Sie sich die Anfragelogs für Ihre API auf der Cloud Logging-Seite an.

    Zur Seite „Log-Explorer“

Nächste Schritte