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:
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Notitie
Voor de Azure CLI-opdrachtvoorbeelden in dit artikel is de
containerapp
Azure CLI-extensie vereist. Als u geen opdrachten hebt gebruiktaz containerapp
, wordt de extensie dynamisch geïnstalleerd wanneer u uw eersteaz 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:
- Meld u aan bij Azure Portal en ga naar uw API Management-exemplaar.
- Selecteer Gateways in het linkermenu onder Implementatie en infrastructuur.
- Selecteer de gatewayresource die u hebt ingericht en selecteer Implementatie.
- 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 demyResourceGroup
resourcegroep. In dit voorbeeld wordt de container-app gemaakt met behulp van demcr.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 ingesteldtrue
dat de zelf-hostende gateway deX-Forwarded-Proto
header gebruikt om het oorspronkelijke protocol van de aanvraag te bepalen.
Controleer of de container-app wordt uitgevoerd
Meld u aan bij Azure Portal en navigeer naar uw container-app.
Controleer op de overzichtspagina van de container-app of de status wordt uitgevoerd.
Verzend een testaanvraag naar het statuseindpunt op
/status-012345678990abcdef
. Gebruik bijvoorbeeld eencurl
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
Meld u aan bij Azure Portal en ga naar uw API Management-exemplaar.
Selecteer Gateways in het linkermenu onder Implementatie en infrastructuur.
Controleer op de pagina Overzicht de status van uw gateway. Als de gateway in orde is, worden normale gateway-heartbeats gerapporteerd.
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.
- Een container-app implementeren die als host fungeert voor een API in dezelfde omgeving als de zelf-hostende gateway
- De API toevoegen aan uw API Management-exemplaar
- 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:
Download python-broncode naar uw lokale computer. Als u wilt, downloadt u de broncode in een andere taal van uw keuze.
Pak de broncode uit naar een lokale map en ga naar de map containerapps-albumapi-python-main/src .
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 .
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.
- Meld u aan bij Azure Portal en navigeer naar uw container-app.
- Selecteer inkomend verkeer in het linkermenu.
- Inkomend verkeer instellen op Ingeschakeld.
- Selecteer Beperkt tot Container Apps-omgeving in inkomend verkeer.
- 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
- Navigeer in de portal naar het API Management-exemplaar waar u de zelf-hostende gateway hebt geconfigureerd.
- Selecteer API's+ API's> toevoegen in het linkermenu.
- Selecteer HTTP en selecteer Volledig. Voer de volgende instellingen in:
- Weergavenaam: Voer een beschrijvende naam in. Voorbeeld: Albums-API.
- 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
. - URL-schema: SELECTEER HTTP(S).
- API-URL-achtervoegsel: voer een achtervoegsel van uw keuze in. Voorbeeld: albumapi.
- Gateways: Selecteer de zelf-hostende gateway die u hebt ingericht. Voorbeeld: my-gateway.
- Configureer andere API-instellingen op basis van uw scenario. Selecteer Maken.
Een API-bewerking toevoegen
- Selecteer API's albums-API's> in het linkermenu.
- Selecteer + Bewerking toevoegen.
- Voer de bewerkingsinstellingen in:
- Weergavenaam: Voer een beschrijvende naam in voor de bewerking. Voorbeeld: Albums ophalen.
- URL: Selecteer Ophalen en invoeren
/albums
voor het eindpunt. - 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.