Freigeben über


Bereitstellen eines selbst gehosteten Azure API Management-Gateways für Azure-Container-Apps

GILT FÜR: Entwickler | 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

  • Bearbeiten Sie den folgenden Schnellstart: Erstellen einer neuen Azure API Management-Dienstinstanz

  • Für die Azure CLI:

    • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

    • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, 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. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

      • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden 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 das Upgrade auf die aktuelle Version durchzuführen.

    Hinweis

    Die Azure CLI-Befehlsbeispiele in diesem Artikel erfordern die containerapp Azure CLI-Erweiterung. Wenn Sie keine az containerapp-Befehle verwendet haben, wird die Erweiterung dynamisch installiert, sobald Sie den ersten az containerapp-Befehl ausführen. Hier finden Si weitere Informationen zu Azure CLI-Erweiterungen.

Bereitstellen des Gateways in Ihrer API-Verwaltungsinstanz

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 in diesem Artikel 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 . Informationen zu den Werten finden Sie im Azure-Portal:

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrer API Management-Instanz.
  2. Wählen Sie im Menü auf der linken Seite unter Bereitstellung und Infrastruktur die Option Gateways aus.
  3. Wählen Sie die bereitgestellte Gatewayressource und dann "Bereitstellung"aus.
  4. 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 CLIoder anderer Tools in einer Container-App bereitstellen. In diesem Artikel werden die Schritte mithilfe der Azure CLI erläutert.

Erstellen Sie eine 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

Dieser Befehl erstellt Folgendes:

  • Eine Container-App-Umgebung mit dem Namen my-environment , die Sie zum Gruppieren von Container-Apps verwenden.
  • Einen 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 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.5.0" \
    --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"

Dieser Befehl erstellt Folgendes:

  • Eine Container-App, die in der myResourceGroup Ressourcengruppe benannt ist my-gateway . In diesem Beispiel wird die Container-App mit dem mcr.microsoft.com/azure-api-management/gateway:2.5.0 Image erstellt. Erfahren Sie mehr über die selbst gehosteten Gatewaycontainerimages.

  • 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 API-Verwaltungsinstanz mithilfe von Konfigurationswerten, die 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 so festgelegt true , dass das selbst gehostete Gateway den X-Forwarded-Proto Header verwendet, um das ursprüngliche Protokoll der Anforderung zu bestimmen.

Vergewissern Sie sich, dass die Container-App ausgeführt wird

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrer App.

  2. Überprüfen Sie auf der Seite Übersicht der Container-App, ob derStatusausgeführt wird.

  3. Senden Sie eine Testanforderung an den Statusendpunkt auf /status-012345678990abcdef. Verwenden Sie z. B. einen curl Befehl ähnlich dem folgenden.

    curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
    

    Eine erfolgreiche Anforderung gibt eine 200 OK Antwort 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.

Sicherstellen, dass das Gateway ausgeführt wird

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrer API Management-Instanz.

  2. Wählen Sie im Menü auf der linken Seite unter Bereitstellung und Infrastruktur die Option Gateways aus.

  3. Überprüfen Sie auf der Seite Übersicht den Status Ihres Gateways. Wenn das Gateway fehlerfrei ist, meldet es reguläre Gateway-Takte.

    Screenshot des Gatewaystatus im Portal.

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.

Diagramm des Beispielszenarios mit selbst gehosteten Gateways.

  1. Bereitstellen einer Container-App, die eine API in derselben Umgebung wie das selbst gehostete Gateway hosten
  2. Führen Sie eine API in Ihre API Management-Instanz
  3. Aufrufen der API über das selbst gehostete Gateway

Bereitstellen einer Container-App, die eine API in derselben Umgebung wie das selbst gehostete Gateway hosten

Stellen Sie beispielsweise eine Beispiel-Musikalbum-API für eine Container-App bereit. Um später über das selbst gehostete Gateway 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:

  1. Laden Sie Python-Quellcode auf Ihren lokalen Computer herunter. Wenn Sie es vorziehen, laden Sie den Quellcode in einer anderen Sprache Ihrer Wahl herunter.

  2. Extrahieren Sie den Quellcode in einen lokalen Ordner, und ändern Sie den Ordner "containerapps-albumapi-python-main/src ".

  3. 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 .
    
  4. 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 /albums Endpunkt zugegriffen werden. Beispiel: https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.

Konfigurieren der API für den internen Eingangseingang

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.

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrer Container App.
  2. Wählen Sie die Option Eingehend im Menü auf der linken Seite aus.
  3. Legen Sie Eingang auf Aktiviert fest.
  4. Wählen Sie im Eingehenden Datenverkehrdie Option "Auf Container-Apps-Umgebungbeschränkt" aus.
  5. Überprüfen Sie die verbleibenden Einstellungen, und wählen Sie Speichern aus.

Führen Sie eine API in Ihre API Management-Instanz

Im Folgenden sind Die folgenden Beispielschritte zum Hinzufügen einer API zu Ihrer API-Verwaltungsinstanz und zum Konfigurieren eines API-Back-Ends. Weitere Informationen finden Sie unter Hinzufügen einer API zur Azure-API-Verwaltung.

Führen Sie eine API in Ihre API Management-Instanz

  1. Navigieren Sie im Portal zu der API-Verwaltungsinstanz, in der Sie das selbst gehostete Gateway konfiguriert haben.
  2. Wählen Sie im linken Menü APIs>+ API hinzufügen aus.
  3. Wählen Sie HTTP aus, und wählen Sie "Vollständig" aus. Geben Sie folgende Einstellungen ein.
    1. Anzeigenname: Geben Sie einen aussagekräftigen Namen ein. Beispiel: Album-API.
    2. 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.
    3. URL-Schema: Wählen Sie HTTP(S)aus.
    4. API-URL-Suffix: Geben Sie ein Suffix Ihrer Wahl ein. Beispiel: albumapi.
    5. Gateways: Wählen Sie das selbst gehostete Gateway aus, das Sie bereitgestellt haben. Beispiel: my-gateway.
  4. Konfigurieren Sie andere API-Einstellungen entsprechend Ihrem Szenario. Klicken Sie auf Erstellen.

Hinzufügen eines API-Vorgangs

  1. Wählen Sie im linken Menü APIs>Albums API aus.
  2. Klicken Sie auf + Vorgang hinzufügen.
  3. Vorgangseinstellungen eingeben:
    1. Anzeigename: Geben Sie einen beschreibenden Namen für den Vorgang ein. Beispiel: Abrufen vonAlben.
    2. URL: Wählen Sie Abrufen aus, und geben Sie /albums für den Endpunkt ein.
    3. Wählen Sie Speichern.

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 Ihrer API in Application Insightsaktiviert haben, können Sie die Protokolle abfragen, um die Anforderungen und Antworten anzuzeigen.