Dela via


Distribuera en lokal Azure API Management-gateway till Azure Container Apps

GÄLLER FÖR: Utvecklare | Premium

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

Etablera gateway i din 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 exemplen i den här artikeln heter my-gatewaygatewayen .

Hämta gatewaydistributionsinställningar från API Management

För att distribuera gatewayen behöver du gatewayens token- och konfigurationsslutpunktsvärden. Du hittar dem i Azure-portalen:

  1. Logga in på Azure-portalen och gå till din API Management-instans.
  2. I den vänstra menyn går du till Distribution och infrastruktur och väljer Gatewayer.
  3. Välj den gatewayresurs som du etablerade och välj Distribution.
  4. Kopiera slutpunktsvärdena token och konfiguration.

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-environment som du använder för att gruppera containerappar.
  • En log analytics-arbetsyta

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 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.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"

Det här kommandot skapar:

  • En containerapp med namnet my-gateway i myResourceGroup resursgruppen. I det här exemplet skapas containerappen med hjälp av avbildningen mcr.microsoft.com/azure-api-management/gateway:2.5.0 . Läs mer om gatewaycontaineravbildningar med egen värd.

  • 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 API Management-instansen med hjälp av konfigurationsvärden som skickas i miljövariabler. Mer information finns i konfigurationsinställningarna för lokalt installerad gatewaycontainer.

    Kommentar

    Azure Container Apps-ingress vidarebefordrar HTTPS-begäranden till den lokala gatewaycontainerappen som HTTP. net.server.http.forwarded.proto.enabled Här är miljövariabeln inställd på true så att den lokalt installerade gatewayen X-Forwarded-Proto använder huvudet för att fastställa det ursprungliga protokollet för begäran.

Bekräfta att containerappen körs

  1. Logga in på Azure-portalen och navigera till din containerapp.

  2. På sidan Översikt för containerappen kontrollerar du att statusen körs.

  3. Skicka en testbegäran till statusslutpunkten på /status-012345678990abcdef. Använd till exempel ett curl kommando som liknar följande.

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

    En lyckad begäran returnerar ett 200 OK svar.

Dricks

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

  1. Logga in på Azure-portalen och gå till din API Management-instans.

  2. I den vänstra menyn går du till Distribution och infrastruktur och väljer Gatewayer.

  3. På sidan Översikt kontrollerar du status för din gateway. Om gatewayen är felfri rapporterar den vanliga gateway-pulsslag.

    Skärmbild av gatewaystatus i portalen.

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.

Diagram över exempelscenario med lokal gateway.

  1. Distribuera en containerapp som är värd för ett API i samma miljö som den lokala gatewayen
  2. Lägga till API:et i din API Management-instans
  3. 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

Du kan till exempel distribuera ett exempel på ett API för musikalbum till en containerapp. För senare åtkomst till API:et 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:

  1. Ladda ned Python-källkod till din lokala dator. Om du vill kan du ladda ned källkoden på ett annat språk.

  2. Extrahera källkoden till en lokal mapp och ändra till mappen containerapps-albumapi-python-main/src .

  3. 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 .
    
  4. 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å /albums slutpunkten. Exempel: https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.

Konfigurera API:et 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.

  1. Logga in på Azure-portalen och navigera till din containerapp.
  2. I den vänstra menyn väljer du Ingress.
  3. Ange Ingress till Aktiverad.
  4. I Inkommande trafik väljer du Begränsad till Container Apps-miljö.
  5. Granska de återstående inställningarna och välj Spara.

Lägga till API:et i din API Management-instans

Följande är exempelsteg för att lägga till ett API i DIN API Management-instans och konfigurera 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

  1. I portalen navigerar du till DEN API Management-instans där du konfigurerade den lokalt installerade gatewayen.
  2. I den vänstra menyn väljer du API:er>+ Lägg till API.
  3. Välj HTTP och välj Fullständig. Ange följande inställningar:
    1. Visningsnamn: Ange ett beskrivande namn. Exempel: Api för album.
    2. 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.
    3. URL-schema: Välj HTTP(S).
    4. API URL-suffix: Ange ett valfritt suffix. Exempel: albumapi.
    5. Gatewayer: Välj den lokalt installerade gateway som du etablerade. Exempel: my-gateway.
  4. Konfigurera andra API-inställningar enligt ditt scenario. Välj Skapa.

Lägga till en API-åtgärd

  1. I den vänstra menyn väljer du API:er>Albums API.
  2. Välj + Lägg till åtgärd.
  3. Ange åtgärdsinställningar:
    1. Visningsnamn: Ange ett beskrivande namn för åtgärden. Exempel: Hämta album.
    2. URL: Välj Hämta och ange /albums för slutpunkten.
    3. Välj Spara.

Anropa API:et via den lokala 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"}]

Dricks

Om du har aktiverat loggning av DITT API till Application Insights kan du fråga loggarna för att se begäranden och svar.