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.
Voraussetzungen
Sie sollten Folgendes bereits haben:
- Ein erstelltes Google Cloud-Projekt
- Konfigurierte Endpoints
- Eine bereitgestellte Endpoints-Konfiguration
Bereitstellung vorbereiten
Compute Engine
Damit Endpoints die API verwalten kann, müssen Sie 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 über 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:
- Erstellen, konfigurieren und starten Sie die VM-Instanz.
- Installieren Sie Docker Enterprise Edition (EE) oder Docker Community Edition (CE) auf der VM-Instanz.
- Erstellen Sie einen Docker-Container für den Back-End-Servercode.
- Verschieben Sie den Container in die Container Registry oder eine andere Registry.
Überprüfen Sie, ob Sie
- eine Verbindung zur VM-Instanz herstellen,
- das Docker-Image ausführen können, um den Back-End-Server auf der VM-Instanz zu starten (siehe Referenz zur Docker-Ausführung), und
- Anfragen an die API senden können.
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 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:
Stellen Sie die containerisierte Anwendung auf den Containerclustern bereit. In der GKE-Dokumentation werden folgende Schritte beschrieben:
- Anwendung in einem Docker-Image verpacken
- Image in eine Registry hochladen
- Container-Cluster erstellen
- Anwendung im Cluster bereitstellen
- Anwendung im Internet freigeben
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:
Stellen Sie eine Verbindung zur VM-Instanz her. Ersetzen Sie
INSTANCE_NAME
durch den Namen der VM-Instanz:gcloud compute ssh INSTANCE_NAME
Erstellen Sie Ihr eigenes Containernetzwerk mit dem Namen
esp_net
:sudo docker network create --driver bridge esp_net
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.
- Ersetzen Sie
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.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.- Ersetzen Sie
Wenn Sie ESP für die Verwendung einer bestimmten Konfigurations-ID konfigurieren müssen:
Fügen Sie die Option
--version
ein und legen Sie dafür eine bestimmte Konfigurations-ID fest.Entfernen Sie entweder die Option
--rollout_strategy=managed
oder setzen Sie--rollout_strategy
auffixed
. Die Optionfixed
konfiguriert den ESP so, dass die in--version
angegebene Dienstkonfiguration verwendet wird.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:
Entfernen Sie die Option
--version
in den ESP-Flags fürdocker run
.Fügen Sie die Option
--rollout_strategy=managed
ein.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:
Rufen Sie den Dienstnamen Ihrer API ab.
Öffnen Sie die Manifestdatei der Bereitstellung (
deployment.yaml
) und fügen Sie den folgenden Code in den Abschnittcontainers
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.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:
Fügen Sie die Option
--version
in die Manifestdatei der Bereitstellung ein und legen Sie dafür eine bestimmte Konfigurations-ID fest.Entfernen Sie entweder
--rollout_strategy=managed
oder legen Sie für--rollout_strategy
den Wertfixed
fest. Die Optionfixed
konfiguriert den ESP so, dass die in--version
angegebene Dienstkonfiguration verwendet wird.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:
Entfernen Sie die Option
--version
aus der Manifestdatei der Bereitstellung.Fügen Sie
--rollout_strategy=managed
hinzu.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.
Sehen Sie sich die Anfragelogs für Ihre API auf der Cloud Logging-Seite an.