Delen via


Een zelf-hostende gateway van Azure API Management implementeren in Azure Container Apps

VAN TOEPASSING OP: Ontwikkelaar | Premium

Dit artikel bevat de stappen voor het implementeren van het zelf-hostende gatewayonderdeel van Azure API Management in Azure Container Apps.

Implementeer een zelf-hostende gateway naar een container-app voor toegang tot API's die worden gehost in dezelfde Azure Container Apps-omgeving.

Vereisten

  • Lees de volgende snelstartgids: Een Azure API Management-exemplaar maken.

  • Voor Azure CLI:

    Notitie

    Voor de Azure CLI-opdrachtvoorbeelden in dit artikel is de containerapp Azure CLI-extensie vereist. Als u geen opdrachten hebt gebruikt az containerapp , wordt de extensie dynamisch geïnstalleerd wanneer u uw eerste az containerapp opdracht uitvoert. Meer informatie over Azure CLI-extensies.

Gateway inrichten in uw API Management-exemplaar

Voordat u een zelf-hostende gateway implementeert, richt u een gatewayresource in uw Azure API Management-exemplaar in. Zie Een zelf-hostende gateway inrichten voor stappen. In de voorbeelden in dit artikel heeft de gateway de naam my-gateway.

Instellingen voor gatewayimplementatie ophalen uit API Management

Als u de gateway wilt implementeren, hebt u de token- en configuratie-eindpuntwaarden van de gateway nodig. U vindt ze in Azure Portal:

  1. Meld u aan bij Azure Portal en ga naar uw API Management-exemplaar.
  2. Selecteer Gateways in het linkermenu onder Implementatie en infrastructuur.
  3. Selecteer de gatewayresource die u hebt ingericht en selecteer Implementatie.
  4. Kopieer de token - en configuratie-eindpuntwaarden .

De zelf-hostende gateway implementeren in een container-app

U kunt de zelf-hostende gatewaycontainerinstallatiekopie implementeren in een container-app met behulp van Azure Portal, Azure CLI of andere hulpprogramma's. In dit artikel worden de stappen beschreven met behulp van de Azure CLI.

Een container-apps-omgeving maken

Maak eerst een container-apps-omgeving met behulp van de opdracht az containerapp env create :

#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
    --location centralus

Met deze opdracht maakt u:

  • Een container-app-omgeving die my-environment u gebruikt om container-apps te groeperen.
  • Een Log Analytics-werkruimte

Een container-app maken voor de zelf-hostende gateway

Als u de zelf-hostende gateway wilt implementeren in een container-app in de omgeving, voert u de opdracht az containerapp create uit.

Stel eerst variabelen in voor de token - en configuratie-eindpuntwaarden van de API Management-gatewayresource.

#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"

Maak de container-app met behulp van de az containerapp create opdracht:

#!/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"

Met deze opdracht maakt u:

  • Een container-app met de naam my-gateway in de myResourceGroup resourcegroep. In dit voorbeeld wordt de container-app gemaakt met behulp van de mcr.microsoft.com/azure-api-management/gateway:2.5.0 installatiekopieën. Meer informatie over de zelf-hostende gatewaycontainerinstallatiekopieën.

  • Ondersteuning voor extern inkomend verkeer naar de container-app op poort 8080.

  • Minimaal 1 en maximaal 3 replica's van de container-app.

  • Een verbinding van de zelf-hostende gateway naar het API Management-exemplaar met behulp van configuratiewaarden die zijn doorgegeven in omgevingsvariabelen. Zie de zelf-hostende configuratie-instellingen voor gatewaycontainers voor meer informatie.

    Notitie

    Azure Container Apps stuurt https-aanvragen door naar de zelf-hostende gatewaycontainer-app als HTTP. Hier is de net.server.http.forwarded.proto.enabled omgevingsvariabele zo ingesteld true dat de zelf-hostende gateway de X-Forwarded-Proto header gebruikt om het oorspronkelijke protocol van de aanvraag te bepalen.

Controleer of de container-app wordt uitgevoerd

  1. Meld u aan bij Azure Portal en navigeer naar uw container-app.

  2. Controleer op de overzichtspagina van de container-app of de status wordt uitgevoerd.

  3. Verzend een testaanvraag naar het statuseindpunt op /status-012345678990abcdef. Gebruik bijvoorbeeld een curl opdracht die lijkt op het volgende.

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

    Een geslaagde aanvraag retourneert een 200 OK antwoord.

Tip

Met behulp van de CLI kunt u ook de opdracht az containerapp show uitvoeren om de status van de container-app te controleren.

Controleer of de gateway in orde is

  1. Meld u aan bij Azure Portal en ga naar uw API Management-exemplaar.

  2. Selecteer Gateways in het linkermenu onder Implementatie en infrastructuur.

  3. Controleer op de pagina Overzicht de status van uw gateway. Als de gateway in orde is, worden normale gateway-heartbeats gerapporteerd.

    Schermopname van de gatewaystatus in de portal.

Voorbeeldscenario

In het volgende voorbeeld ziet u hoe u de zelf-hostende gateway kunt gebruiken voor toegang tot een API die wordt gehost in een container-app in dezelfde omgeving. Zoals wordt weergegeven in het volgende diagram, kan de zelf-hostende gateway worden geopend vanaf internet, terwijl de API alleen toegankelijk is in de container-apps-omgeving.

Diagram van voorbeeldscenario met zelf-hostende gateway.

  1. Een container-app implementeren die als host fungeert voor een API in dezelfde omgeving als de zelf-hostende gateway
  2. De API toevoegen aan uw API Management-exemplaar
  3. De API aanroepen via de zelf-hostende gateway

Een container-app implementeren die als host fungeert voor een API in dezelfde omgeving als de zelf-hostende gateway

Implementeer bijvoorbeeld een voorbeeld van een api voor muziekalbums in een container-app. Voor latere toegang tot de API met behulp van de zelf-hostende gateway implementeert u de API in dezelfde omgeving als de zelf-hostende gateway. Zie quickstart: Bouwen en implementeren van lokale broncode naar Azure Container Apps voor gedetailleerde stappen en informatie over de resources die in dit voorbeeld worden gebruikt. De verkorte stappen volgen:

  1. Download python-broncode naar uw lokale computer. Als u wilt, downloadt u de broncode in een andere taal van uw keuze.

  2. Pak de broncode uit naar een lokale map en ga naar de map containerapps-albumapi-python-main/src .

  3. Voer de volgende az containerapp up-opdracht uit om de API te implementeren in een container-app in dezelfde omgeving als de zelf-hostende gateway. Let op het . einde van de opdracht, waarmee de huidige map wordt opgegeven als de bron voor de container-app.

    #!/bin/bash
    az containerapp up --name albums-api \
        --resource-group myResourceGroup --location centralus \
        --environment my-environment --source .
    
  4. Controleer of de container-app extern wordt uitgevoerd en toegankelijk is op de FQDN die wordt geretourneerd in de opdrachtuitvoer. De API is standaard toegankelijk op het /albums eindpunt. Voorbeeld: https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.

De API configureren voor intern inkomend verkeer

Werk nu de container-app bij die als host fungeert voor de voorbeeld-API om inkomend verkeer alleen in de containeromgeving in te schakelen. Deze instelling beperkt de toegang tot de API alleen vanaf de zelf-hostende gateway die u hebt geïmplementeerd.

  1. Meld u aan bij Azure Portal en navigeer naar uw container-app.
  2. Selecteer inkomend verkeer in het linkermenu.
  3. Inkomend verkeer instellen op Ingeschakeld.
  4. Selecteer Beperkt tot Container Apps-omgeving in inkomend verkeer.
  5. Controleer de overige instellingen en selecteer Opslaan.

De API toevoegen aan uw API Management-exemplaar

Hier volgen voorbeeldstappen voor het toevoegen van een API aan uw API Management-exemplaar en het configureren van een API-back-end. Zie Een API toevoegen aan Azure API Management voor meer informatie.

De API toevoegen aan uw API Management-exemplaar

  1. Navigeer in de portal naar het API Management-exemplaar waar u de zelf-hostende gateway hebt geconfigureerd.
  2. Selecteer API's+ API's> toevoegen in het linkermenu.
  3. Selecteer HTTP en selecteer Volledig. Voer de volgende instellingen in:
    1. Weergavenaam: Voer een beschrijvende naam in. Voorbeeld: Albums-API.
    2. Webservice-URL: voer de interne FQDN in van de container-app die als host fungeert voor de API. Voorbeeld: http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io.
    3. URL-schema: SELECTEER HTTP(S).
    4. API-URL-achtervoegsel: voer een achtervoegsel van uw keuze in. Voorbeeld: albumapi.
    5. Gateways: Selecteer de zelf-hostende gateway die u hebt ingericht. Voorbeeld: my-gateway.
  4. Configureer andere API-instellingen op basis van uw scenario. Selecteer Maken.

Een API-bewerking toevoegen

  1. Selecteer API's albums-API's> in het linkermenu.
  2. Selecteer + Bewerking toevoegen.
  3. Voer de bewerkingsinstellingen in:
    1. Weergavenaam: Voer een beschrijvende naam in voor de bewerking. Voorbeeld: Albums ophalen.
    2. URL: Selecteer Ophalen en invoeren /albums voor het eindpunt.
    3. Selecteer Opslaan.

De API aanroepen via de zelf-hostende gateway

Roep de API aan met behulp van de FQDN van de zelf-hostende gateway die wordt uitgevoerd in de container-app. Zoek de FQDN op de overzichtspagina van de container-app in Azure Portal of voer de volgende az containerapp show opdracht uit.

#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
    --query "properties.configuration.ingress.fqdn" --output tsv

Voer bijvoorbeeld de volgende curl opdracht uit om de API aan te roepen op het /albumapi/albums eindpunt. Als uw API een abonnementssleutel vereist, geeft u een geldige abonnementssleutel door voor uw API Management-exemplaar als header in de aanvraag:

curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"

Wanneer de test is geslaagd, reageert de back-end met een geslaagde HTTP-antwoordcode en enkele gegevens.

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"}]

Tip

Als u logboekregistratie van uw API hebt ingeschakeld voor Application Insights, kunt u query's uitvoeren op de logboeken om de aanvragen en antwoorden te bekijken.