API-Gateway-Bereitstellungsmodell

Informationen zu API-Komponenten

Eine auf API Gateway definierte API besteht aus zwei Hauptkomponenten:

  1. API-Konfiguration: Die API-Konfiguration, die beim Hochladen einer API-Definition erstellt wird. Sie erstellen die API-Definition als OpenAPI-Spezifikation. Wenn die API gRPC-Dienste in Cloud Run verwaltet, können Sie die API mit einer gRPC-Dienstdefinition und -Konfiguration definieren.

    Jedes Mal, wenn Sie eine API-Definition hochladen, erstellt API Gateway eine neue API-Konfiguration. Das heißt, Sie können eine API-Konfiguration erstellen, aber später nicht mehr ändern. Wenn Sie die API-Definition in der OpenAPI-Spezifikation oder in der gRPC-Dienstdefinition später bearbeiten und dann die bearbeitete API-Definition hochladen, erstellen Sie eine neue API-Konfiguration.

  2. Gateway: Ein auf Envoy beruhender, leistungsstarker, skalierbarer Proxy, auf dem die bereitgestellte API-Konfiguration gehostet wird. Durch das Bereitstellen einer API-Konfiguration für ein Gateway wird die externe URL erstellt, über die Ihre API-Clients auf die API zugreifen.

Die folgende Abbildung zeigt diese Komponenten:

Die API-Definition im Bereich "API Gateway" zeigt drei API-Konfigurationskomponenten und drei Gateway-Komponenten.

Informationen zur Bereitstellung einer API-Konfiguration für ein Gateway

Sie stellen eine API-Konfiguration für ein Gateway bereit, um Ihre API für Ihre API-Clients zugänglich zu machen:

In drei Beispiel-APIs wird eine API-Konfiguration für ein Gateway bereitgestellt, sodass die APIs für die API-Clients zugänglich sind.

Ein Gateway:

  • Sie werden in einer bestimmten GCP-Region bereitgestellt. Eine Region ist eine bestimmte geografische Region, in der Sie Ressourcen bereitstellen können.

  • Muss eine API-Konfiguration hosten. Sie können kein leeres Gateway erstellen, d. h. eines ohne API-Konfiguration. Nachdem ein Gateway erstellt wurde, können Sie das Gateway jedoch aktualisieren, um eine API-Konfiguration durch eine andere zu ersetzen.

  • Kann nur eine einzelne API-Konfiguration hosten. Es ist nicht möglich, mehrere API-Konfigurationen für dasselbe Gateway bereitzustellen.

Anschließend verwalten Sie jedes bereitgestellte Gateway separat. Bei jedem Gateway haben Sie folgende Möglichkeiten:

  • Gateway starten/anhalten/löschen
  • Logs und Messwerte ansehen
  • Trace-Informationen ansehen

GCP-Region auswählen

Jedes Gateway wird in einer bestimmten geografischen Region auf der GCP bereitgestellt. API Gateway unterstützt die folgenden GCP-Regionen für die Bereitstellung:

  • asia-northeast1
  • australia-southeast1
  • europe-west1
  • europe-west2
  • us-east1
  • us-east4
  • us-central1
  • us-west2
  • us-west3
  • us-west4

Endpunkt der bereitgestellten API-Konfiguration definieren

Wenn Sie eine API-Konfiguration für ein Gateway bereitstellen, erstellt API Gateway eine eindeutige URL für das Gateway in der Domain gateway.dev. Ihre API-Clients verwenden dann eine URL im folgenden Format, um auf die bereitgestellte API-Konfiguration zuzugreifen:

https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev

Dabei ist GATEWAY_ID der Name des Gateways, HASH der eindeutige Hash-Code, der bei der Bereitstellung der API erzeugt wurde, und REGION_CODE der Code für die GCP-Region, in der Sie das Gateway bereitgestellt haben.

Beispiel:

my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Dienstkonto für das Bereitstellen von API-Konfigurationen konfigurieren

Eine auf einem Gateway bereitgestellte API-Konfiguration wird mit den Berechtigungen ausgeführt, die den Rollen zugeordnet sind, die dem Dienstkonto zum Erstellen der API-Konfiguration zugewiesen sind. Daher definieren Sie normalerweise ein separates Dienstkonto zum Erstellen von API-Konfigurationen. Dieses Dienstkonto wird dann nur den Rollen zugewiesen, die für den Zugriff auf den Backend-Dienst erforderlich sind. Auf diese Weise können Sie die Berechtigungen einschränken, die mit der API-Konfiguration verknüpft sind.

Zusätzlich zu den Rollen, die für den Zugriff auf den Backend-Dienst erforderlich sind, muss dem Dienstkonto die folgenden Berechtigungen erteilt werden:

  • Die Berechtigung iam.serviceAccounts.actAs. Diese Berechtigung ist in der Rolle Dienstkontonutzer enthalten.

  • Die für den Zugriff auf Ihren Backend-Dienst erforderlichen Berechtigungen. Wenn Ihr Backend beispielsweise als Cloud Functions-Funktion implementiert ist, sollte das Dienstkonto mindestens der Rolle Cloud Functions-Aufrufer zugewiesen werden. Für ein Cloud Run-Backend lautet die Rolle Cloud Run-Aufrufer. Durch Beschränkung der Berechtigungen, die mit der API-Konfiguration verknüpft sind, können Sie Ihre Backend-Systeme besser schützen.

Weitere Informationen finden Sie unter Entwicklungsumgebung konfigurieren.

Über die Skalierung auf null

API Gateway ist ein Dienst, der auf null skaliert wird. Das heißt, dass alle Gateway-Instanzen gelöscht werden, wenn kein Traffic vorhanden ist. Wenn der Traffic zunimmt, werden nach Bedarf neue Instanzen zur Verarbeitung der Last erstellt. Die Skalierung auf null wird von der GCP automatisch gesteuert. Sie müssen es nicht konfigurieren oder verwalten.

Load-Balancer verwenden

Jedes Gateway, das in einer Region eingesetzt wird, enthält einen integrierten Load-Balancer zur Verwaltung von Client-Anfragen an die für das Gateway bereitgestellte API. Sie müssen nicht für jedes Gateway einen separaten Load-Balancer erstellen.

Sie müssen einen Load-Balancer erstellen, wenn Sie dieselbe API auf Gateways in verschiedenen Regionen bereitstellen. Der Load-Balancer leitet dann API-Anfragen an die verschiedenen Regionen weiter. Weitere Informationen finden Sie unter API in mehreren Regionen bereitstellen.

SSL-Zugriff auf eine API konfigurieren

API Gateway unterstützt HTTPS-Zugriff auf eine API, die in einem Gateway bereitgestellt wird. Da Ihre APIs in der Domain gateway.dev bereitgestellt werden, erstellt und verwaltet Google das SSL-Zertifikat auf dem Load-Balancer, der in das Gateway eingebunden ist. Sie müssen kein eigenes Zertifikat erstellen oder hochladen.

Domainnameserver konfigurieren

Standardmäßig senden API-Clients Anfragen an die Domain gateway.dev, um auf die bereitgestellte API zuzugreifen, wie oben gezeigt.

Benutzerdefinierte Domainnamen sind für API Gateway, wenn sie in Verbindung mit HTTP(S) Load-Balancing für API GatewayVORSCHAU verwendet werden. Um den Domainnamen anzupassen, erstellen Sie einen Load-Balancer, der Ihren benutzerdefinierten Domainennamen verwendet, und leiten Sie dann Anfragen an die Domain gateway.dev Ihrer bereitgestellten API weiter. Weitere Informationen finden Sie unter Benutzerdefinierte Domain mit API-Gateway verwenden.

Mehrere API-Konfigurationen in derselben API bereitstellen

Sie können nur eine einzelne API-Konfiguration für ein Gateway bereitstellen. Sie können jedoch mehrere API-Konfigurationen für mehrere Gateways innerhalb derselben API bereitstellen.

In diesem Abschnitt werden zwei Szenarien beschrieben, in denen Sie mehrere API-Konfigurationen auf mehreren Gateways innerhalb einer einzelnen API bereitstellen können.

API-Konfigurationen in mehreren Gateways in derselben Region bereitstellen

Beim Erstellen einer API erstellen API-Entwickler häufig Entwicklungs-, Staging- und Produktionsumgebungen, wobei:

  • Die Entwicklungsumgebung von Entwicklern zum Erstellen der API verwendet wird.
  • In der Staging-Umgebung die API getestet wird, um einen Release für die Produktion vorzubereiten.
  • Die Produktionsumgebung der Ort ist, an dem Ihre externen API-Clients auf die API zugreifen dürfen.

Um diese Art von Entwicklungsumgebung zu unterstützen, definieren Sie mehrere API-Konfigurationen. Sie könnten zum Beispiel mehrere API-Konfigurationen in der Entwicklung haben, eine API-Konfiguration, die derzeit im Staging getestet wird, und eine API-Konfiguration, die derzeit in der Produktion bereitgestellt wird.

Mit API Gateway können Sie mehrere API-Konfigurationen innerhalb einer einzigen API erstellen und dann jede API-Konfiguration für ein anderes Gateway bereitstellen:

In API 1 werden drei API-Konfigurationen mit den Namen API Config Dev, API Config Stage und API Config Prod für drei entsprechenden Gateways bereitgestellt.

In diesem Beispiel haben Sie drei verschiedene API-Konfigurationen: dev, stage und prod. Anschließend stellen Sie jede API-Konfiguration für ein anderes Gateway bereit, wobei jedes Gateway eine eigene eindeutige Endpunkt-URL definiert.

API-Konfiguration in mehreren Regionen bereitstellen

Häufig stellen Sie eine API in mehreren GCP-Regionen bereit. Die Bereitstellung in mehreren Regionen bietet mehrere Vorteile, darunter eine geringere Latenzzeit bei Anfragen, da diese an eine API in einer Region in geografischer Nähe zum Client weitergeleitet werden, und eine höhere Zuverlässigkeit, da ein Ausfall in einer Region keine Auswirkungen auf APIs in anderen Regionen hat.

Zum Bereitstellen einer API in mehreren Regionen müssen Sie in jeder Region eine API-Konfiguration für ein Gateway bereitstellen. Jede API-Konfiguration ist spezifisch für die bereitgestellte Region, da sie auf den Backend-Dienst in dieser Region verweisen muss.

In der folgenden Abbildung werden die APIs 1 und 2 in einer einzelnen Region und API 3 in mehreren Regionen bereitgestellt:

API 1 und API 2 werden in Region 1 bereitgestellt, und API 3 wird mithilfe eines Load-Balancers in Region 1, Region 2 und Region 3 bereitgestellt.

In diesem Beispiel hat jede in einem Gateway für API 3 bereitgestellte API-Konfiguration einen eindeutigen URL-Endpunkt in der folgenden Form:

https://my-gateway1-a12bcd345e67f89g0h.uc.gateway.dev
https://my-gateway2-b12cde345f67g89h0i.en.gateway.dev
https://my-gateway3-c12bde345g67h89i0j.uw.gateway.dev  

Anschließend konfigurieren Sie einen Load-Balancer mit HTTP(S)-Load-Balancing für API GatewayVORSCHAU, um Anfragen an die API zu verarbeiten und die Anfrage an die entsprechende Region weiterzuleiten. Weitere Informationen finden Sie unter Multiregionale Bereitstellungen für API Gateway erstellen.

API aktualisieren

Sie können eine bereitgestellte API aktualisieren. Bearbeiten Sie dazu die API-Definition in der OpenAPI-Spezifikation und laden Sie dann die Spezifikation hoch. Das Hochladen einer neuen Spezifikation erstellt eine neue API-Konfiguration.

API Gateway unterstützt ein Updatemodell ohne Ausfallzeiten, was bedeutet, dass Ihre API während der Bereitstellung der aktualisierten API-Konfiguration weiterhin Anfragen verarbeitet. Es gibt jedoch einen gewissen Zeitraum, in dem die neue API-Konfiguration bereitgestellt wird, wenn einige Anfragen möglicherweise noch von der vorherigen Version der API-Konfiguration verarbeitet werden.

Wenn Sie die API-Konfiguration über mehrere Regionen und Gateways hinweg bereitgestellt haben, müssen Sie die aktualisierte API-Konfiguration in jeder Region separat bereitstellen.

Nächste Schritte