Sdílet prostřednictvím


Nasazení vlastní brány Azure API Management do Azure Container Apps

PLATÍ PRO: Vývojářská verze | Prémiová verze

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

Zřízení brány v instanci služby Azure 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. Pokyny najdete v části Zřízení samohostující brány. V příkladech tohoto č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 do instance služby Azure API Management.
  2. V nabídce vlevo v části Nasazení a infrastruktura vyberte vlastní hostované brány.
  3. Vyberte prostředek brány, který jste zřídili, a vyberte Nastavení>Nasazení.
  4. Zkopírujte hodnoty Tokenu a koncového bodu konfigurace.

Nasazení samohostované brány do kontejnerové aplikace

Image kontejneru brány s vlastním hostováním můžete nasadit do kontejnerové aplikace pomocí portálu Azure, 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í kontejnerové aplikace pro samostatně hostovanou bránu

Pokud chcete nasadit samohostovanou bránu do aplikace kontejneru, spusťte příkaz az containerapp create.

Nejprve nastavte proměnné pro hodnoty Token a konfigurace koncového bodu z prostředku brány Azure 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.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"

Tento příkaz vytvoří:

  • Aplikace kontejneru pojmenovaná my-gateway ve skupině prostředků myResourceGroup. V tomto příkladu aplikace kontejneru používá obraz mcr.microsoft.com/azure-api-management/gateway:2.9.2. Další informace o samostatně hostované bráně najdete v kontejnerových obrazech.

  • Podpora externího příchozího připojení do kontejnerové aplikace 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 Azure API Management předáním hodnot konfigurace v proměnných prostředí. Podrobnosti najdete v nastavení konfigurace kontejneru místně hostované brány.

    Poznámka:

    Modul Ingress v Azure Container Apps přeposílá požadavky HTTPS do aplikace kontejneru samo-hostované brány jako HTTP. V této části je proměnná prostředí nastavená taknet.server.http.forwarded.proto.enabled, true 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 na koncový bod stavu na /status-012345678990abcdef. Použijte curl například příkaz podobný následujícímu příkazu.

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

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

Návod

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 do instance služby Azure API Management.

  2. V nabídce vlevo v části Nasazení a infrastruktura vyberte vlastní hostované brány.

  3. Na stránce Přehled zkontrolujte stav brány. Pokud je brána v pořádku, hlásí pravidelné signály stavu 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. Nasaďte aplikaci kontejneru, která hostuje rozhraní API ve stejném prostředí jako brána v místním prostředí.
  2. Přidejte rozhraní API do instance služby Azure API Management.
  3. Zavolejte API prostřednictvím místní brány.

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

V tomto příkladu nasadíte do kontejnerové aplikace ukázkové rozhraní API hudebního alba. Pokud chcete k rozhraní API přistupovat později 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 dostupná externě pod plně kvalifikovaným doménovým názvem 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.

Konfigurujte rozhraní API pro interní vstupní přístup

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 levé nabídce vyberte Networking>Ingress.
  3. Nastavte vstup na Povoleno.
  4. V příchozím přenosu dat vyberte Omezené na prostředí aplikací kontejnerů.
  5. Zkontrolujte zbývající nastavení a vyberte Uložit.

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

Následující kroky ukazují, jak přidat rozhraní API do instance služby Azure API Management a nakonfigurovat back-end 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 webu Azure Portal přejděte do instance služby API Management, kde 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. Název pro zobrazení: Zadejte popisný název. Příklad: 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 vlastní lokálně hostovanou bránu, 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 API>Albums API.
  2. Vyberte + Přidat operaci.
  3. Zadejte nastavení operace:
    1. Displejový název: Zadejte popisný název operace. Příklad: Získání alb.
    2. Adresa URL: Vyberte Získat a zadejte koncový bod jako /albums.
    3. Vyberte Uložit.

Volání rozhraní API prostřednictvím lokální brány

Zavolejte rozhraní API pomocí plně kvalifikovaného názvu domény vlastní-hostované brány, která běží v aplikaci kontejneru. Na stránce Přehled aplikace kontejneru v Azure portálu najděte FQDN 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"}]

Návod

Pokud povolíte protokolování vašeho rozhraní API v rámci služby Application Insights, můžete dotazovat protokoly a zobrazit požadavky a odpovědi.

Omezení

Instance brány v místním prostředí spoléhají na protokol UDP pro komunikaci prezenčních signálů a přenosů rychlosti. Vzhledem k tomu, že Služba Azure Container Apps v současné době nepodporuje protokol UDP, jak pro příchozí, tak i pro interní provoz, zásady rate-limit nemohou synchronizovat svůj čítač mezi instancemi. Udržování tří replik kontejnerové aplikace brány v místním prostředí s limitem X proto může vést k trojnásobku provozu, dokud nedosáhnete limitu X.

Azure Container Apps distribuuje požadavky lineárně mezi všechny dostupné a zdravé repliky. Pokud chcete implementovat omezování rychlosti, můžete požadovaný limit vydělit počtem replik, které chcete spustit, a nastavit výslednou hodnotu v konfiguraci. Tento přístup má své nevýhody, protože možná nebudete schopni zohlednit upravené čítače, pokud a kdy se aplikace v kontejnerech škálují.