Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om 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 Aan de slag met 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 uw terminal om het verificatieproces te voltooien. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u hierom wordt gevraagd, installeert u de Azure CLI-extensie voor het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor 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
containerappAzure CLI-extensie vereist. Als u geen opdrachten hebt gebruiktaz containerapp, wordt de extensie dynamisch geïnstalleerd wanneer u uw eersteaz containerappopdracht uitvoert. Meer informatie over Azure CLI-extensies.
Gateway inrichten in uw Azure API Management-instantie
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 van 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 Azure API Management-exemplaar.
- Selecteer in het linkermenu onder Implementatie en infrastructuur de optie Zelf-hostende gateways.
- Selecteer de gatewayresource die u hebt ingericht en selecteer Implementatie van instellingen>.
- 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 Azure 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.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"
Met deze opdracht maakt u:
Een container-app met de naam
my-gatewayin demyResourceGroupresourcegroep. In dit voorbeeld gebruikt de containerapplicatie demcr.microsoft.com/azure-api-management/gateway:2.9.2image. Zie containerafbeeldingen voor meer informatie over de zelf-gehoste gateway.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 Azure API Management-exemplaar door configuratiewaarden door te geven 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.enabledomgevingsvariabele zo ingesteldtruedat de zelf-hostende gateway deX-Forwarded-Protoheader gebruikt om het oorspronkelijke protocol van de aanvraag te bepalen.
Controleer of de container-app wordt uitgevoerd
Meld u aan bij Azure Portal en ga 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 eencurlopdracht die vergelijkbaar is met de volgende opdracht.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefEen geslaagde aanvraag retourneert een
200 OKantwoord.
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 Azure API Management-exemplaar.
Selecteer in het linkermenu onder Implementatie en infrastructuur de optie Zelf-hostende gateways.
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.
- Implementeer een container-app die als host fungeert voor een API in dezelfde omgeving als de zelf-hostende gateway.
- Voeg de API toe aan uw Azure API Management-exemplaar.
- Roep de API aan via de zelf-hostende gateway.
Een container-app implementeren die als host fungeert voor een API in dezelfde omgeving als de zelf-hostende gateway
In dit voorbeeld implementeert u een voorbeeld-API voor muziekalbums in een container-app. Als u later toegang wilt krijgen 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
/albumseindpunt. 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 ga naar uw container-app.
- Selecteer Netwerken>Ingress in het menu aan de linkerkant.
- 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 Azure API Management-exemplaar
De volgende stappen laten zien hoe u een API toevoegt aan uw Azure API Management-exemplaar en hoe u een API-back-end configureert. Zie Een API toevoegen aan Azure API Management voor meer informatie.
De API toevoegen aan uw API Management-exemplaar
- Ga in Azure Portal naar het API Management-exemplaar waar u de zelf-hostende gateway hebt geconfigureerd.
- Selecteer API's>API's in het linkermenu, >+ 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
/albumsvoor het eindpunt. - Selecteer Opslaan.
De API aanroepen via de zelf-hostende gateway
Roep de API aan met behulp van de FQDN van de zelf-gehoste gateway die lopend is 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 voor uw API inschakelt voor Application Insights, kunt u query's uitvoeren op de logboeken om de aanvragen en antwoorden te bekijken.
Beperkingen
Zelfgehoste gateway-exemplaren zijn afhankelijk van het UDP-protocol voor heartbeat- en communicatie over snelheidslimieten. Omdat Azure Container Apps momenteel geen ondersteuning biedt voor het UDP-protocol, noch voor inkomend verkeer of voor intern verkeer, kan het beleid de rate-limit teller niet synchroniseren tussen exemplaren. Als gevolg hiervan kan het beheren van drie replica's van een zelf-gehoste gatewaycontainer-app met limiet X resulteren in drie keer zoveel verkeer totdat limiet X is bereikt.
Azure Container Apps distribueert aanvragen lineair over elke beschikbare en gezonde replica. Als u snelheidsbeperking wilt implementeren, kunt u de gewenste limiet delen door het aantal replica's dat u wilt uitvoeren en de resulterende waarde in de configuratie instellen. Deze benadering heeft zijn eigen nadeel, omdat u mogelijk geen rekening kunt houden met aangepaste tellers als en wanneer uw container-apps worden geschaald.