Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Dokončete následující rychlý start: Vytvořte instanci služby Azure API Management.
Pro Azure CLI:
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud chcete spouštět referenční příkazy CLI lokálně, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Pro více informací, viz Jak spustit Azure CLI v Docker kontejneru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Chcete-li dokončit proces ověřování, postupujte podle kroků zobrazených ve vašem terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Když budete vyzváni, nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spusťte az version, abyste zjistili verzi a závislé knihovny, které jsou nainstalovány. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Poznámka:
Příklady příkazů Azure CLI v tomto článku vyžadují
containerapprozšíření Azure CLI. Pokud jste nepoužiliaz containerapppříkazy, rozšíření se při spuštění prvníhoaz containerapppříkazu nainstaluje dynamicky. Přečtěte si další informace o rozšířeních Azure CLI.
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:
- Přihlaste se k webu Azure Portal a přejděte do instance služby Azure API Management.
- V nabídce vlevo v části Nasazení a infrastruktura vyberte vlastní hostované brány.
- Vyberte prostředek brány, který jste zřídili, a vyberte Nastavení>Nasazení.
- 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-gatewayve skupině prostředkůmyResourceGroup. V tomto příkladu aplikace kontejneru používá obrazmcr.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á tak
net.server.http.forwarded.proto.enabled,trueaby brána v místním prostředí používala hlavičkuX-Forwarded-Protok určení původního protokolu požadavku.
Ověřte, že je spuštěná aplikace kontejneru.
Přihlaste se k webu Azure Portal a přejděte do aplikace kontejneru.
Na stránce Přehled aplikace kontejneru zkontrolujte, jestli je stav spuštěný.
Odešlete testovací požadavek na koncový bod stavu na
/status-012345678990abcdef. Použijtecurlnapří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 OKodpověď.
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.
Přihlaste se k webu Azure Portal a přejděte do instance služby Azure API Management.
V nabídce vlevo v části Nasazení a infrastruktura vyberte vlastní hostované brány.
Na stránce Přehled zkontrolujte stav brány. Pokud je brána v pořádku, hlásí pravidelné signály stavu brány.
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í.
- Nasaďte aplikaci kontejneru, která hostuje rozhraní API ve stejném prostředí jako brána v místním prostředí.
- Přidejte rozhraní API do instance služby Azure API Management.
- 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:
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.
Extrahujte zdrojový kód do místní složky a přejděte do složky containerapps-albumapi-python-main/src .
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 .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
/albumsbodu. 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.
- Přihlaste se k webu Azure Portal a přejděte do aplikace kontejneru.
- V levé nabídce vyberte Networking>Ingress.
- Nastavte vstup na Povoleno.
- V příchozím přenosu dat vyberte Omezené na prostředí aplikací kontejnerů.
- 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
- Na webu Azure Portal přejděte do instance služby API Management, kde jste nakonfigurovali bránu v místním prostředí.
- V nabídce vlevo vyberte rozhraní API>>+ Přidat rozhraní API.
- Vyberte HTTP a vyberte Úplné. Zadejte následující nastavení:
- Název pro zobrazení: Zadejte popisný název. Příklad: API pro alba
-
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. - Schéma adres URL: Vyberte HTTP(S).
- Přípona adresy URL rozhraní API: Zadejte příponu podle svého výběru. Příklad: albumapi.
- Brány: Vyberte vlastní lokálně hostovanou bránu, kterou jste zřídili. Příklad: my-gateway.
- Nakonfigurujte další nastavení rozhraní API podle vašeho scénáře. Vyberte Vytvořit.
Přidání operace rozhraní API
- V nabídce vlevo vyberte API>Albums API.
- Vyberte + Přidat operaci.
- Zadejte nastavení operace:
- Displejový název: Zadejte popisný název operace. Příklad: Získání alb.
-
Adresa URL: Vyberte Získat a zadejte koncový bod jako
/albums. - 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í.