Nasazení brány azure API Management v místním prostředí do Azure Container Apps

PLATÍ PRO: Vývojář | Premium

Tento článek obsahuje postup nasazení komponenty brány v místním prostředí služby Azure API Management do Azure Container Apps.

Nasaďte bránu v místním prostředí do aplikace kontejneru pro přístup k rozhraním API hostovaným ve stejném prostředí Azure Container Apps.

Požadavky

  • Projděte si následující rychlý start: Vytvoření instance Azure API Managementu.

  • Pro Azure CLI:

    Poznámka:

    Příklady příkazů Azure CLI v tomto článku vyžadují containerapp rozšíření Azure CLI. Pokud jste nepoužili az containerapp příkazy, rozšíření se při spuštění prvního az containerapp příkazu nainstaluje dynamicky. Přečtěte si další informace o rozšířeních Azure CLI.

Zřízení brány v instanci služby API Management

Před nasazením brány v místním prostředí zřiďte prostředek brány v instanci služby Azure API Management. Postup najdete v tématu Zřízení brány v místním prostředí. V příkladech v tomto článku má brána název my-gateway.

Získání nastavení nasazení brány ze služby API Management

K nasazení brány potřebujete hodnoty tokenu a konfigurace brány. Najdete je na webu Azure Portal:

  1. Přihlaste se k webu Azure Portal a přejděte k vaší instanci služby API Management.
  2. V nabídce vlevo v části Nasazení a infrastruktura vyberte Brány.
  3. Vyberte prostředek brány, který jste zřídili, a vyberte Nasazení.
  4. Zkopírujte hodnoty koncového bodu tokenua konfigurace.

Nasazení brány v místním prostředí do aplikace kontejneru

Image kontejneru brány v místním prostředí můžete nasadit do aplikace kontejneru pomocí webu Azure Portal, Azure CLI nebo jiných nástrojů. Tento článek ukazuje kroky pomocí Azure CLI.

Vytvoření prostředí kontejnerových aplikací

Nejprve vytvořte prostředí kontejnerových aplikací pomocí příkazu az containerapp env create :

#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
    --location centralus

Tento příkaz vytvoří:

  • Prostředí kontejnerové aplikace s názvem my-environment , které používáte k seskupení aplikací kontejnerů.
  • Pracovní prostor služby Log Analytics

Vytvoření aplikace kontejneru pro bránu v místním prostředí

Pokud chcete nasadit bránu v místním prostředí do aplikace kontejneru, spusťte příkaz az containerapp create .

Nejprve nastavte proměnné pro hodnoty koncového bodu tokenu a konfigurace z prostředku brány služby API Management.

#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"

Pomocí příkazu vytvořte aplikaci kontejneru 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"

Tento příkaz vytvoří:

  • Aplikace kontejneru myResourceGroup pojmenovaná my-gateway ve skupině prostředků. V tomto příkladu se aplikace kontejneru vytvoří pomocí mcr.microsoft.com/azure-api-management/gateway:2.5.0 image. Přečtěte si další informace o imagích kontejneru kontejneru brány v místním prostředí.

  • Podpora externího příchozího přenosu dat do aplikace kontejneru na portu 8080

  • Minimálně 1 a maximálně 3 repliky aplikace kontejneru.

  • Připojení z brány v místním prostředí k instanci služby API Management pomocí hodnot konfigurace předaných v proměnných prostředí. Podrobnosti najdete v nastavení konfigurace kontejneru kontejneru brány v místním prostředí.

    Poznámka:

    Příchozí přenos dat Azure Container Apps předává požadavky HTTPS do aplikace kontejneru brány v místním prostředí jako HTTP. V této části je proměnná prostředí nastavená taktrue, net.server.http.forwarded.proto.enabled aby brána v místním prostředí používala hlavičku X-Forwarded-Proto k určení původního protokolu požadavku.

Ověřte, že je spuštěná aplikace kontejneru.

  1. Přihlaste se k webu Azure Portal a přejděte do aplikace kontejneru.

  2. Na stránce Přehled aplikace kontejneru zkontrolujte, jestli je stav spuštěný.

  3. Odešlete testovací požadavek do koncového bodu stavu ./status-012345678990abcdef Použijte curl například příkaz podobný následujícímu.

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

    Úspěšný požadavek vrátí 200 OK odpověď.

Tip

Pomocí rozhraní příkazového řádku můžete také spustit příkaz az containerapp show a zkontrolovat stav aplikace kontejneru.

Ověřte, že je brána v pořádku.

  1. Přihlaste se k webu Azure Portal a přejděte k vaší instanci služby API Management.

  2. V nabídce vlevo v části Nasazení a infrastruktura vyberte Brány.

  3. Na stránce Přehled zkontrolujte stav brány. Pokud je brána v pořádku, hlásí pravidelné prezenčních signály brány.

    Snímek obrazovky se stavem brány na portálu

Ukázkový scénář

Následující příklad ukazuje, jak můžete použít bránu v místním prostředí pro přístup k rozhraní API hostovaného v aplikaci kontejneru ve stejném prostředí. Jak je znázorněno v následujícím diagramu, brána v místním prostředí je přístupná z internetu, zatímco rozhraní API je přístupné jenom v prostředí kontejnerových aplikací.

Diagram ukázkového scénáře s bránou v místním prostředí

  1. Nasazení kontejnerové aplikace hostující rozhraní API ve stejném prostředí jako brána v místním prostředí
  2. Přidání rozhraní API do instance služby API Management
  3. Volání rozhraní API prostřednictvím brány v místním prostředí

Nasazení kontejnerové aplikace hostující rozhraní API ve stejném prostředí jako brána v místním prostředí

Například do kontejnerové aplikace nasaďte ukázkové rozhraní API hudebního alba. Pokud chcete později získat přístup k rozhraní API pomocí brány v místním prostředí, nasaďte rozhraní API ve stejném prostředí jako brána v místním prostředí. Podrobné kroky a informace o prostředcích použitých v tomto příkladu najdete v tématu Rychlý start: Sestavení a nasazení z místního zdrojového kódu do Azure Container Apps. Zkrácený postup:

  1. Stáhněte zdrojový kód Pythonu do místního počítače. Pokud chcete, stáhněte si zdrojový kód v jiném jazyce podle svého výběru.

  2. Extrahujte zdrojový kód do místní složky a přejděte do složky containerapps-albumapi-python-main/src .

  3. Spuštěním následujícího příkazu az containerapp up nasaďte rozhraní API do aplikace kontejneru ve stejném prostředí jako brána v místním prostředí. . Všimněte si na konci příkazu, který určuje aktuální složku jako zdroj aplikace kontejneru.

    #!/bin/bash
    az containerapp up --name albums-api \
        --resource-group myResourceGroup --location centralus \
        --environment my-environment --source .
    
  4. Ověřte, že je aplikace kontejneru spuštěná a přístupná externě v plně kvalifikovaném názvu domény vráceném ve výstupu příkazu. Ve výchozím nastavení je rozhraní API přístupné na koncovém /albums bodu. Příklad: https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.

Konfigurace rozhraní API pro interní příchozí přenos dat

Teď aktualizujte aplikaci kontejneru hostující ukázkové rozhraní API tak, aby umožňovala příchozí přenos dat pouze v prostředí kontejneru. Toto nastavení omezuje přístup k rozhraní API pouze z brány v místním prostředí, kterou jste nasadili.

  1. Přihlaste se k webu Azure Portal a přejděte do aplikace kontejneru.
  2. V nabídce vlevo vyberte Příchozí přenos dat.
  3. Nastavte příchozí přenos dat na Povoleno.
  4. V příchozím přenosu dat vyberte Omezené na prostředí Container Apps Environment.
  5. Zkontrolujte zbývající nastavení a vyberte Uložit.

Přidání rozhraní API do instance služby API Management

Následuje příklad postupu přidání rozhraní API do instance služby API Management a konfigurace back-endu rozhraní API. Další informace najdete v tématu Přidání rozhraní API do služby Azure API Management.

Přidání rozhraní API do instance služby API Management

  1. Na portálu přejděte do instance služby API Management, ve které jste nakonfigurovali bránu v místním prostředí.
  2. V nabídce vlevo vyberte rozhraní API> + Přidat rozhraní API.
  3. Vyberte HTTP a vyberte Úplné. Zadejte následující nastavení:
    1. Zobrazovaný název: Zadejte popisný název. Příklad: Rozhraní API pro alba
    2. Adresa URL webové služby: Zadejte interní plně kvalifikovaný název domény aplikace kontejneru hostující rozhraní API. Příklad: http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io.
    3. Schéma adres URL: Vyberte HTTP(S).
    4. Přípona adresy URL rozhraní API: Zadejte příponu podle svého výběru. Příklad: albumapi.
    5. Brány: Vyberte bránu v místním prostředí, kterou jste zřídili. Příklad: my-gateway.
  4. Nakonfigurujte další nastavení rozhraní API podle vašeho scénáře. Vyberte Vytvořit.

Přidání operace rozhraní API

  1. V nabídce vlevo vyberte rozhraní API Albums>API.
  2. Vyberte + Přidat operaci.
  3. Zadejte nastavení operace:
    1. Zobrazovaný název: Zadejte popisný název operace. Příklad: Získání alb.
    2. Adresa URL: Vyberte Získat a zadejte /albums koncový bod.
    3. Zvolte Uložit.

Volání rozhraní API prostřednictvím brány v místním prostředí

Volání rozhraní API pomocí plně kvalifikovaného názvu domény brány v místním prostředí spuštěné v aplikaci kontejneru Na stránce Přehled aplikace kontejneru najděte plně kvalifikovaný název domény na webu Azure Portal nebo spusťte následující az containerapp show příkaz.

#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
    --query "properties.configuration.ingress.fqdn" --output tsv

Spusťte například následující curl příkaz pro volání rozhraní API v koncovém /albumapi/albums bodu. Pokud vaše rozhraní API vyžaduje klíč předplatného, předejte platný klíč předplatného pro vaši instanci služby API Management jako hlavičku v požadavku:

curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"

Když je test úspěšný, back-end odpoví úspěšným kódem odpovědi HTTP a některými daty.

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

Pokud jste povolili protokolování rozhraní API do Application Insights, můžete se na protokoly dotazovat a zobrazit požadavky a odpovědi.