Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Utvecklare | Premie
Den här artikeln innehåller stegen för att distribuera den lokalt installerade gatewaykomponenten i Azure API Management till Azure Container Apps.
Distribuera en gateway med egen värd till en containerapp för att få åtkomst till API:er som finns i samma Azure Container Apps-miljö.
Förutsättningar
Slutför följande snabbstart: Skapa en Azure API Management-instans.
För Azure CLI:
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Kom igång med Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör på Windows eller macOS, överväg att köra Azure CLI i en Docker-container. För mer information, se Hur man kör Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. För att avsluta autentiseringsprocessen, följ stegen som visas i din terminal. Andra inloggningsalternativ finns i Autentisera till Azure med Azure CLI.
När du blir uppmanad, installera Azure CLI-tillägget vid första användning. Mer information om tillägg finns i Använda och hantera tillägg med Azure CLI.
Kör az version för att ta reda på versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Anmärkning
Azure CLI-kommandoexemplen i den här artikeln kräver
containerappAzure CLI-tillägget. Om du inte har använtaz containerappkommandon installeras tillägget dynamiskt när du kör ditt förstaaz containerappkommando. Läs mer om Azure CLI-tillägg.
Etablera gateway i din Azure API Management-instans
Innan du distribuerar en gateway med egen värd etablerar du en gatewayresurs i din Azure API Management-instans. Anvisningar finns i Etablera en gateway med egen värd. I den här artikelns exempel heter my-gatewaygatewayen .
Hämta gatewayens distributionsinställningar från API-hantering
För att distribuera gatewayen behöver du gatewayens token - och konfigurationsslutpunktsvärden . Du hittar dem i Azure-portalen:
- Logga in på Azure-portalen och gå till din Azure API Management-instans.
- I den vänstra menyn går du till Distribution + infrastruktur och väljer Gatewayer med egen värd.
- Välj den gatewayresurs som du etablerade och välj Inställningar>Distribution.
- Kopiera tokenvärdena och konfigurationsslutpunktens värden.
Distribuera den lokalt installerade gatewayen till en containerapp
Du kan distribuera den lokalt installerade gatewaycontaineravbildningen till en containerapp med hjälp av Azure-portalen, Azure CLI eller andra verktyg. Den här artikeln visar steg med hjälp av Azure CLI.
Skapa en containerappmiljö
Skapa först en miljö för containerappar med kommandot az containerapp env create :
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Det här kommandot skapar:
- En containerappmiljö med namnet
my-environmentsom du använder för att gruppera containerappar. - En logganalysarbetsyta
Skapa en containerapp för den lokala gatewayen
Om du vill distribuera den lokalt installerade gatewayen till en containerapp i miljön kör du kommandot az containerapp create .
Ange först variabler för Token och konfigurationsslutpunktsvärdena från Azure API Management-gatewayresursen.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Skapa containerappen med kommandot az containerapp create :
#!/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"
Det här kommandot skapar:
En containerapp med namnet
my-gatewayimyResourceGroupresursgruppen. I det här exemplet använder containerappen avbildningenmcr.microsoft.com/azure-api-management/gateway:2.9.2. Mer information om den lokalt installerade gatewayen finns i containeravbildningar.Stöd för extern ingress till containerappen på port 8080.
Minst 1 och högst 3 repliker av containerappen.
En anslutning från den lokala gatewayen till Azure API Management-instansen genom att skicka konfigurationsvärden i miljövariabler. Mer information finns i konfigurationsinställningarna för lokalt installerad gatewaycontainer.
Anmärkning
Azure Container Apps-ingress vidarebefordrar HTTPS-begäranden till den lokala gatewaycontainerappen som HTTP.
net.server.http.forwarded.proto.enabledHär är miljövariabeln inställd påtrueså att den självhostade gatewayen använderX-Forwarded-Protoheadern för att avgöra det ursprungliga protokollet för begäran.
Bekräfta att containerappen körs
Logga in på Azure-portalen och gå till din containerapp.
På sidan Översikt för containerappen kontrollerar du att statusenkörs.
Skicka en testbegäran till statusslutpunkten på
/status-012345678990abcdef. Använd till exempel ettcurlkommando som liknar följande kommando.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefEn lyckad begäran returnerar ett
200 OKsvar.
Tips/Råd
Med hjälp av CLI kan du också köra kommandot az containerapp show för att kontrollera containerappens status.
Bekräfta att gatewayen är felfri
Logga in på Azure-portalen och gå till din Azure API Management-instans.
I den vänstra menyn går du till Distribution + infrastruktur och väljer Gatewayer med egen värd.
På sidan Översikt kontrollerar du gatewayens status. Om gatewayen är felfri rapporterar den vanliga gateway-pulsslag.
Exempelscenario
I följande exempel visas hur du kan använda den lokalt installerade gatewayen för att få åtkomst till ett API som finns i en containerapp i samma miljö. Som du ser i följande diagram kan den lokalt installerade gatewayen nås från Internet, medan API:et endast är tillgängligt i containerappmiljön.
- Distribuera en containerapp som är värd för ett API i samma miljö som den lokala gatewayen.
- Lägg till API:et i din Azure API Management-instans.
- Anropa API:et via den lokala gatewayen.
Distribuera en containerapp som är värd för ett API i samma miljö som den lokala gatewayen
I det här exemplet distribuerar du ett exempel på ett API för musikalbum till en containerapp. Om du vill komma åt API:et senare med hjälp av den lokala gatewayen distribuerar du API:et i samma miljö som den lokalt installerade gatewayen. Detaljerade steg och information om de resurser som används i det här exemplet finns i Snabbstart: Skapa och distribuera från lokal källkod till Azure Container Apps. Förkortade steg följer:
Ladda ned Python-källkod till din lokala dator. Om du vill kan du ladda ned källkoden på ett annat språk.
Extrahera källkoden till en lokal mapp och ändra till mappen containerapps-albumapi-python-main/src .
Kör följande az containerapp up-kommando för att distribuera API:et till en containerapp i samma miljö som den lokalt installerade gatewayen.
.Observera i slutet av kommandot, som anger den aktuella mappen som källa för containerappen.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Bekräfta att containerappen körs och är tillgänglig externt vid det FQDN som returneras i kommandoutdata. Som standard är API:et tillgängligt på
/albumsslutpunkten. Exempel:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
Konfigurera API:t för intern ingress
Uppdatera nu containerappen som är värd för exempel-API:et för att endast aktivera ingress i containermiljön. Den här inställningen begränsar endast åtkomsten till API:et från den lokala gateway som du distribuerade.
- Logga in på Azure-portalen och gå till din containerapp.
- I den vänstra menyn väljer du Ingress för> nätverk.
- Ange Ingress till Aktiverad.
- Under Inkommande trafik väljer du Begränsad till Container Apps-miljö.
- Granska de återstående inställningarna och välj Spara.
Lägga till API:et i din Azure API Management-instans
Följande steg visar hur du lägger till ett API i din Azure API Management-instans och konfigurerar en API-serverdel. Mer information finns i Lägga till ett API i Azure API Management.
Lägga till API:et i din API Management-instans
- I Azure-portalen går du till DEN API Management-instans där du konfigurerade den lokalt installerade gatewayen.
- I den vänstra menyn väljer du API:er>>+ Lägg till API.
- Välj HTTP och välj Fullständig. Ange följande inställningar:
- Visningsnamn: Ange ett beskrivande namn. Exempel: Album-API.
-
Webbtjänst-URL: Ange det interna fullständiga domännamnet för containerappen som är värd för API:et. Exempel:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - URL-schema: Välj HTTP(S).
- API URL-suffix: Ange ett valfritt suffix. Exempel: albumapi.
- Gateways: Välj den självhostade gateway som du etablerade. Exempel: my-gateway.
- Konfigurera andra API-inställningar enligt ditt scenario. Välj Skapa.
Lägga till en API-åtgärd
- I den vänstra menyn väljer du API>Albums API.
- Välj + Lägg till åtgärd.
- Ange åtgärdsinställningar:
- Visningsnamn: Ange ett beskrivande namn för åtgärden. Exempel: Hämta album.
-
URL: Välj Hämta och ange
/albumsför slutpunkten. - Välj Spara.
Anropa API:et via den själv-värda gatewayen
Anropa API:et med hjälp av FQDN för den lokalt installerade gatewayen som körs i containerappen. Leta reda på FQDN på containerappens översiktssida i Azure-portalen eller kör följande az containerapp show kommando.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Kör till exempel följande curl kommando för att anropa API:et /albumapi/albums vid slutpunkten. Om ditt API kräver en prenumerationsnyckel skickar du en giltig prenumerationsnyckel för DIN API Management-instans som ett huvud i begäran:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
När testet lyckas svarar serverdelen med en lyckad HTTP-svarskod och vissa data.
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"}]
Tips/Råd
Om du aktiverar loggning för ditt API till Application Insights kan du fråga loggarna för att se begäranden och svar.
Begränsningar
Gatewayinstanser med egen värd förlitar sig på UDP-protokollet för pulsslag och hastighetsbegränsningskommunikation. Eftersom Azure Container Apps för närvarande inte stöder UDP-protokollet, varken för inkommande eller för intern trafik, kan principen inte synkronisera räknaren rate-limit mellan instanser. Att underhålla tre repliker av en egen värdbaserad gatewaycontainerapp med gräns X kan därför resultera i tre gånger trafiken tills gränsen X har nåtts.
Azure Container Apps distribuerar begäranden linjärt över varje tillgänglig och felfri replik. Om du vill implementera hastighetsbegränsning kan du dividera den önskade gränsen med det antal repliker som du vill köra och ange det resulterande värdet i konfigurationen. Den här metoden har sina egna nackdelar eftersom du kanske inte kan ta hänsyn till justerade räknare om och när dina containerappar skalas upp.