API-Gateway-Bereitstellungsmodell
Informationen zu API-Komponenten
Eine auf API Gateway definierte API besteht aus zwei Hauptkomponenten:
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.
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:
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:
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 ist der eindeutige Hash-Code, der bei der Bereitstellung der API generiert wurde. und REGION_CODE der Code für die GCP-Region ist in dem 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 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:
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.