Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: Developer | Premium
Dieser Artikel enthält die Schritte zum Bereitstellen der selbst gehosteten Gatewaykomponente von Azure API Management für Azure-Container-Apps.
Stellen Sie ein selbst gehostetes Gateway für eine Container-App bereit, um auf APIs zuzugreifen, die in derselben Azure-Container-Apps-Umgebung gehostet werden.
Voraussetzungen
Absolvieren Sie den folgenden Schnellstart: Erstellen einer Azure API Management-Instanz.
Für die Azure CLI:
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, installieren Sie die Azure CLI. Wenn Sie mit Windows oder macOS arbeiten, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Um den Authentifizierungsprozess abzuschließen, führen Sie die schritte aus, die in Ihrem Terminal angezeigt werden. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI-Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
Hinweis
Die Azure CLI-Befehlsbeispiele in diesem Artikel erfordern die
containerappAzure CLI-Erweiterung. Wenn Sie keine Befehle verwendetaz containerapphaben, wird die Erweiterung dynamisch installiert, wenn Sie den erstenaz containerappBefehl ausführen. Hier finden Si weitere Informationen zu Azure CLI-Erweiterungen.
Gateway in Ihrer Azure API-Verwaltungsinstanz bereitstellen
Stellen Sie vor der Bereitstellung eines selbst gehosteten Gateways eine Gatewayressource in Ihrer Azure API-Verwaltungsinstanz bereit. Schritte finden Sie unter Bereitstellen eines selbst gehosteten Gateways. In den Beispielen dieses Artikels wird das Gateway benannt my-gateway.
Abrufen von Gatewaybereitstellungseinstellungen aus der API-Verwaltung
Zum Bereitstellen des Gateways benötigen Sie die Token - und Konfigurationsendpunktwerte des Gateways. Sie finden sie im Azure-Portal:
- Melden Sie sich beim Azure-Portal an, und wechseln Sie zu Ihrer Azure API-Verwaltungsinstanz.
- Wählen Sie im linken Menü unter "Bereitstellung + Infrastruktur" die Option "Selbst gehostete Gateways" aus.
- Wählen Sie die bereitgestellte Gatewayressource aus und dann Einstellungen>Bereitstellung.
- Kopieren Sie die Token- und Konfigurationsendpunktwerte .
Bereitstellen des selbst gehosteten Gateways in einer Container-App
Sie können das selbst gehostete Gatewaycontainerimage mithilfe des Azure-Portals, der Azure CLI oder anderer Tools in einer Container-App bereitstellen. In diesem Artikel werden die Schritte mithilfe der Azure CLI erläutert.
Erstellen einer Container-Apps-Umgebung
Erstellen Sie zunächst eine Container-Apps-Umgebung mit dem Befehl "az containerapp env create ":
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Mit diesem Befehl wird Folgendes erstellt:
- Eine Container-App-Umgebung mit dem Namen
my-environment, die Sie zum Gruppieren von Container-Apps verwenden. - Ein Log Analytics-Arbeitsbereich
Erstellen einer Container-App für das selbst gehostete Gateway
Führen Sie den Befehl "az containerapp create " aus, um das selbst gehostete Gateway in einer Container-App in der Umgebung bereitzustellen.
Legen Sie zunächst Variablen für die Token- und Konfigurationsendpunktwerte aus der Azure API-Verwaltungsgatewayressource fest.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Erstellen Sie die Container-App mit dem az containerapp create Befehl:
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.9.2" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Mit diesem Befehl wird Folgendes erstellt:
Eine Container-App namens
my-gatewayin der RessourcengruppemyResourceGroup. In diesem Beispiel verwendet die Container-App dasmcr.microsoft.com/azure-api-management/gateway:2.9.2Image. Weitere Informationen zum selbst gehosteten Gateway finden Sie in Container-Images.Unterstützung für den externen Eingang zur Container-App am Port 8080.
Mindestens 1 und maximal 3 Replikate der Container-App.
Eine Verbindung vom selbst gehosteten Gateway zur Azure API Management-Instanz, indem Konfigurationswerte in Umgebungsvariablen übergeben werden. Ausführliche Informationen finden Sie in den Konfigurationseinstellungen für selbst gehostete Gatewaycontainer.
Hinweis
Azure Container Apps leitet HTTPS-Anforderungen als HTTP an die selbst gehostete Gatewaycontainer-App weiter. Hier wird die
net.server.http.forwarded.proto.enabled-Umgebungsvariable auftruefestgelegt, damit das selbstgehostete Gateway den imX-Forwarded-Proto-Header verwendeten Header nutzt, um das ursprüngliche Protokoll der Anforderung zu bestimmen.
Vergewissern Sie sich, dass die Container-App ausgeführt wird
Melden Sie sich beim Azure-Portal an, und wechseln Sie zu Ihrer Container-App.
Überprüfen Sie auf der Seite Übersicht der Container-App, ob derStatusausgeführt wird.
Senden Sie eine Testanforderung an den Statusendpunkt auf
/status-012345678990abcdef. Verwenden Sie beispielsweise einencurlBefehl ähnlich dem folgenden Befehl.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefEine erfolgreiche Anforderung gibt eine
200 OKAntwort zurück.
Tipp
Mit der CLI können Sie auch den Befehl "az containerapp show" ausführen, um den Status der Container-App zu überprüfen.
Vergewissern Sie sich, dass das Gateway fehlerfrei ist.
Melden Sie sich beim Azure-Portal an, und wechseln Sie zu Ihrer Azure API-Verwaltungsinstanz.
Wählen Sie im linken Menü unter "Bereitstellung + Infrastruktur" die Option "Selbst gehostete Gateways" aus.
Überprüfen Sie auf der Seite "Übersicht " den Status Ihres Gateways. Wenn das Gateway fehlerfrei ist, meldet es reguläre Gateway-Takte.
Beispielszenario
Das folgende Beispiel zeigt, wie Sie das selbst gehostete Gateway verwenden können, um auf eine API zuzugreifen, die in einer Container-App in derselben Umgebung gehostet wird. Wie im folgenden Diagramm dargestellt, kann über das Internet auf das selbst gehostete Gateway zugegriffen werden, während die API nur innerhalb der Container-Apps-Umgebung zugänglich ist.
- Stellen Sie eine Container-App bereit, die eine API in derselben Umgebung wie das selbst gehostete Gateway hosten soll.
- Fügen Sie die API zu Ihrer Azure API-Verwaltungsinstanz hinzu.
- Rufen Sie die API über das selbst gehostete Gateway auf.
Bereitstellen einer Container-App, die eine API in derselben Umgebung wie das selbst gehostete Gateway hosten
In diesem Beispiel stellen Sie eine Beispielmusikalbum-API für eine Container-App bereit. Um später mithilfe des selbst gehosteten Gateways auf die API zuzugreifen, stellen Sie die API in derselben Umgebung wie das selbst gehostete Gateway bereit. Ausführliche Schritte und Informationen zu den in diesem Beispiel verwendeten Ressourcen finden Sie in der Schnellstartanleitung: Erstellen und Bereitstellen von lokalem Quellcode in Azure-Container-Apps. Die abgekürzten Schritte folgen:
Laden Sie Python-Quellcode auf Ihren lokalen Computer herunter. Wenn Sie es vorziehen, laden Sie den Quellcode in einer anderen Sprache Ihrer Wahl herunter.
Extrahieren Sie den Quellcode in einen lokalen Ordner und wechseln Sie in das Verzeichnis containerapps-albumapi-python-main/src.
Führen Sie den folgenden Befehl "az containerapp up " aus, um die API in einer Container-App in derselben Umgebung wie das selbst gehostete Gateway bereitzustellen. Notieren Sie sich das
.Ende des Befehls, der den aktuellen Ordner als Quelle für die Container-App angibt.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Vergewissern Sie sich, dass die Container-App ausgeführt und extern über den in der Befehlsausgabe zurückgegebenen FQDN zugänglich ist. Standardmäßig kann auf die API am
/albumsEndpunkt zugegriffen werden. Beispiel:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
Konfigurieren Sie die API für internen Zugriff
Aktualisieren Sie nun die Container-App, die die Beispiel-API hosten, um den Einstieg nur in der Containerumgebung zu aktivieren. Diese Einstellung schränkt den Zugriff auf die API nur vom selbst gehosteten Gateway ein, das Sie bereitgestellt haben.
- Melden Sie sich beim Azure-Portal an, und wechseln Sie zu Ihrer Container-App.
- Wählen Sie im linken Menü Netzwerk>Ingress aus.
- Legen Sie " Ingress " auf "Aktiviert" fest.
- Wählen Sie unter Eingehender Datenverkehr die Option Auf Container-Apps-Umgebung beschränkt aus.
- Überprüfen Sie die verbleibenden Einstellungen, und wählen Sie "Speichern" aus.
Hinzufügen der API zu Ihrer Azure API-Verwaltungsinstanz
Die folgenden Schritte zeigen, wie Sie Ihrer Azure API-Verwaltungsinstanz eine API hinzufügen und ein API-Back-End konfigurieren. Weitere Informationen finden Sie unter Hinzufügen einer API zur Azure-API-Verwaltung.
Hinzufügen der API zur API-Verwaltungsinstanz
- Wechseln Sie im Azure-Portal zur API-Verwaltungsinstanz, in der Sie das selbst gehostete Gateway konfiguriert haben.
- Wählen Sie im linken Menü APIs>>+ API hinzufügen aus.
- Wählen Sie HTTP aus, und wählen Sie "Vollständig" aus. Geben Sie die folgenden Einstellungen ein:
- Anzeigename: Geben Sie einen beschreibenden Namen ein. Beispiel: Album-API.
-
Webdienst-URL: Geben Sie den internen FQDN der Container-App ein, die die API hosten soll. Beispiel:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - URL-Schema: Wählen Sie HTTP(S) aus.
- API-URL-Suffix: Geben Sie ein Suffix Ihrer Wahl ein. Beispiel: albumapi.
- Gateways: Wählen Sie das selbst gehostete Gateway aus, das Sie bereitgestellt haben. Beispiel: my-gateway.
- Konfigurieren Sie andere API-Einstellungen entsprechend Ihrem Szenario. Wählen Sie "Erstellen" aus.
Hinzufügen eines API-Vorgangs
- Wählen Sie im linken Menü APIs>Albums API aus.
- Wählen Sie + Operation hinzufügen.
- Vorgangseinstellungen eingeben:
- Anzeigename: Geben Sie einen beschreibenden Namen für den Vorgang ein. Beispiel: Alben abrufen.
-
URL: Wählen Sie Erhalten und geben Sie es für den Endpunkt ein
/albums. - Wählen Sie Speichern aus.
Aufrufen der API über das selbst gehostete Gateway
Rufen Sie die API mithilfe des FQDN des selbst gehosteten Gateways auf, das in der Container-App ausgeführt wird. Suchen Sie den FQDN auf der Seite "Übersicht" der Container-App im Azure-Portal, oder führen Sie den folgenden az containerapp show Befehl aus.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Führen Sie beispielsweise den folgenden curl Befehl aus, um die API am /albumapi/albums Endpunkt aufzurufen. Wenn Ihre API einen Abonnementschlüssel erfordert, übergeben Sie einen gültigen Abonnementschlüssel für Ihre API-Verwaltungsinstanz als Header in der Anforderung:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
Wenn der Test erfolgreich ist, antwortet das Back-End mit einem erfolgreichen HTTP-Antwortcode und einigen Daten.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Tipp
Wenn Sie die Protokollierung für Ihre API für Application Insights aktivieren, können Sie die Protokolle abfragen, um die Anforderungen und Antworten anzuzeigen.
Einschränkungen
Eigengehostete Gatewayinstanzen basieren auf UDP-Protokoll für Heartbeat- und Rate-Limit-Kommunikation. Da Azure Container-Apps das UDP-Protokoll derzeit weder für eingehenden noch für internen Datenverkehr unterstützen, kann die rate-limit-Richtlinie ihren Zähler nicht über Instanzen hinweg synchronisieren. Folglich kann die Verwaltung von drei Replikaten einer selbstgehosteten Gatewaycontainer-App mit Limit X dazu führen, dass der Datenverkehr dreimal so lange erfolgt, bis das Limit X erreicht ist.
Azure Container Apps verteilt Anforderungen linear über jedes verfügbare und fehlerfreie Replikat. Zum Implementieren der Ratenbegrenzung können Sie den gewünschten Grenzwert durch die Anzahl der Replikate dividieren, die Sie ausführen möchten, und den resultierenden Wert in der Konfiguration festlegen. Dieser Ansatz hat eigene Nachteile, da Sie möglicherweise nicht in der Lage sind, angepasste Indikatoren zu berücksichtigen, wenn und wann Ihre Container-Apps skaliert werden.