Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
VAN TOEPASSING OP: Ontwikkelaar | Premie
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.
Vereiste voorwaarden
Voltooi de volgende snelstart: Een Azure API Management-exemplaar maken.
Voor Azure CLI:
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Quickstart voor Bash in Azure Cloud Shellvoor 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 uw terminal om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Wanneer u hierom wordt gevraagd, installeert u de Azure CLI-extensie voor het eerste gebruik. 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 naar de nieuwste versie te upgraden.
Opmerking
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 zelfgehoste gatewaycontainerinstallatiekopie implementeren in een containerapp met behulp van de 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 u gebruikt om container-apps te groeperen genoemd
my-environment
. - 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 containerapp gemaakt met behulp van demcr.microsoft.com/azure-api-management/gateway:2.5.0
image. Meer informatie over de zelfgehoste containerafbeeldingen.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. Raadpleeg de configuratie-instellingen van de zelf-gehoste gatewaycontainer voor meer informatie.
Opmerking
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 statusActief is.
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.
Hint
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.
- Stel Ingress in op Ingeschakeld.
- In inkomend verkeer selecteer Beperkt tot Container Apps-omgeving.
- 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 in het linkermenu API's>+ API toevoegen.
- 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. Klik op Creëren.
Een API-bewerking toevoegen
- Selecteer API's>Albums-API 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"}]
Hint
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.