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.
Azure Container Apps poskytuje integrované zjišťování a směrování služeb, aby vaše kontejnerové aplikace mohly vzájemně komunikovat bez správy infrastruktury. Když do stejného prostředí nasadíte více kontejnerových aplikací, platforma automaticky zpracovává překlad DNS, vyrovnávání zatížení a zabezpečené směrování provozu.
Pokud je povolený ingres, získá každá kontejnerová aplikace název domény. Tento koncový bod můžete zpřístupnit veřejně nebo ho omezit na jiné kontejnerové aplikace ve stejném prostředí.
Kontejnerové aplikace se můžou vzájemně spojit prostřednictvím některé z těchto metod:
- Plně kvalifikovaný název domény (FQDN): výchozí vygenerovaná doména
-
Název aplikace: krátká adresa
http://<APP_NAME>pro interní volání - Vyvolání služby Dapr: přístup na principu vedlejšího procesu s integrovanými opakováními a pozorovatelností
- Vlastní doména: Vlastní název domény se spravovaným certifikátem
Poznámka:
Když zavoláte jinou kontejnerovou aplikaci ve stejném prostředí s využitím plně kvalifikovaného názvu domény nebo názvu aplikace, síťový provoz nikdy neopustí prostředí.
Proč je to důležité
V architektuře mikroslužeb musí služby spolehlivě volat. Azure Container Apps eliminuje provozní zátěž při nastavování zjišťování služeb, správě záznamů DNS a konfiguraci reverzních proxy serverů.
Tady je, co za vás platforma zpracovává:
- Automatická registrace DNS: Každá aplikace kontejneru získá přeložitelný název hostitele hned po nasazení.
- Směrování spravované proxy serverem: Veškerý provoz mezi aplikacemi prochází integrovanou vrstvou proxy serveru Envoy, která zpracovává ukončení protokolu TLS, rozdělení provozu a vyrovnávání zatížení.
- Izolace v rozsahu prostředí: Interní koncové body jsou dostupné pouze ze stejného prostředí a vytvářejí přirozenou hranici zabezpečení.
- Flexibilita protokolu: Komunikace přes PROTOKOL HTTP/1.1, HTTP/2 (pro gRPC) nebo nezpracovaný tcp v závislosti na vašich potřebách úloh.
Tyto funkce znamenají, že se můžete soustředit na logiku aplikace, nikoli na síťové instalace.
Umístění aplikace kontejneru (FQDN)
Plně kvalifikovaný název domény každé aplikace kontejneru se skládá z názvu aplikace, jedinečného identifikátoru prostředí a oblasti. Všechny tyto fragmenty domény spadají do azurecontainerapps.io domény nejvyšší úrovně.
Externí a interní plně kvalifikované názvy domén
Nastavení viditelnosti příchozího přenosu dat určuje, jestli je vaše aplikace dostupná mimo prostředí:
| Viditelnost | Model plně kvalifikovaného názvu domény | Dosažitelné z |
|---|---|---|
| Externí | <APP_NAME>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Kdekoli (veřejný internet) |
| Interní | <APP_NAME>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Pouze stejné prostředí |
Když nastavíte příchozí přenos dat na interní, plně kvalifikovaný název domény zahrnuje .internal. segment. Ostatní kontejnerové aplikace ve stejném prostředí se k aplikaci stále dostanou pomocí této adresy, ale požadavky mimo prostředí obdrží 404 odpověď z proxy serveru prostředí. Název DNS se přeloží na sdílenou IP adresu prostředí, ale proxy požadavek odmítne, protože aplikace je určená pouze pro interní použití.
Získání plně kvalifikovaného názvu domény
Příkaz az containerapp show vrátí plně kvalifikovaný název domény aplikace kontejneru.
az containerapp show \
--resource-group <RESOURCE_GROUP_NAME> \
--name <CONTAINER_APP_NAME> \
--query properties.configuration.ingress.fqdn
V tomto příkladu nahraďte zástupné symboly ohraničené <> hodnotami.
Hodnota vrácená z tohoto příkazu se podobá názvu domény jako v následujícím příkladu:
myapp.happyhill-70162bb9.canadacentral.azurecontainerapps.io
Revizní popisky FQDN
Když přiřadíte popisky ke konkrétním revizím, každý popisek získá vlastní jedinečný plně kvalifikovaný název domény pomocí oddělovače se třemi pomlčkami.
<APP_NAME>---<LABEL>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
V případě interních aplikací model zahrnuje .internal. segment:
<APP_NAME>---<LABEL>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
FQDN popisků umožňují směřovat provoz přímo do konkrétní revize. Tento postup je užitečný pro testování nových verzí, spouštění experimentů A/B nebo poskytování stabilních koncových bodů pro konkrétní nasazení revizí.
Volání aplikace typu kontejner podle názvu
Nejjednodušší způsob, jak volat jinou aplikaci kontejneru ze stejného prostředí, je její název. Odešlete požadavek na http://<CONTAINER_APP_NAME>, a integrovaná služba DNS prostředí automaticky vyřeší název.
http://my-backend-api
Jak funguje řešení DNS
Na pozadí Azure Container Apps používá vlastní konfiguraci DNS, která překládá názvy aplikací kontejnerů na směrovatelné adresy. Když vaše aplikace odešle požadavek na jméno nebo plně kvalifikovaný název domény jiné aplikace:
- DNS server prostředí přeloží název hostitele na adresu proxy serveru Envoy.
- Proxy server Envoy identifikuje cílovou aplikaci z originálního hostitelského jména.
- Proxy server směruje požadavek na správné revize na základě vaší konfigurace provozu.
Tato architektura znamená, že kontejnerové aplikace nikdy nekomunikují přímo s pody jednotlivých kontejnerů. Veškerý provoz prochází přes vrstvu proxy serveru, která zajišťuje ukončení protokolu TLS, vyrovnávání zatížení a rozdělení provozu.
Návod
Pro volání mezi kontejnerovými aplikacemi ve stejném prostředí použijte krátký název aplikace (http://<APP_NAME>). Je jednodušší než úplný plně kvalifikovaný název domény a funguje stejně, protože DNS překládá oba vzory přes stejný proxy server.
Přenosové protokoly
Kontejnerové aplikace podporují tři režimy přenosu dat pro příchozí přenos nakonfigurované prostřednictvím vlastnosti transport.
| Přeprava | Případ použití | Podrobnosti |
|---|---|---|
| Automaticky (výchozí) | Standardní webová rozhraní API a služby | Automaticky vyjednává o HTTP/1.1 a HTTP/2. |
| HTTP/2 | služby gRPC | Povolí end-to-end podporu HTTP/2, což je vyžadováno pro gRPC. |
| TCP | Jiné protokoly než HTTP (databáze, vlastní protokoly) | Nezpracovaná připojení TCP s mapováním portů |
Poznámka:
Externí příchozí přenos dat TCP vyžaduje vlastní virtuální síť. Pokud se pokusíte vytvořit externí aplikaci TCP bez vlastní virtuální sítě, zobrazí se ContainerAppTcpRequiresVnet chyba. Interní příchozí přenos dat TCP funguje bez vlastní virtuální sítě.
Pokud používáte přenos TCP, můžete také vystavit další porty nad rámec primárního portu příchozího přenosu dat. Každý další port vytvoří samostatný koncový bod TCP, ke kterému se ostatní aplikace v prostředí můžou připojit.
Rozdělení síťového provozu a směrování revizí
Azure Container Apps podporuje tři režimy revizí, které ovlivňují způsob distribuce provozu mezi aplikacemi kontejnerů:
| Mode | Chování |
|---|---|
| Single | Veškerý provoz přejde na nejnovější aktivní revizi. |
| Vícenásobný | Provoz se rozdělí mezi jednotlivé revize podle procenta, v souladu s vašimi pravidly pro provoz. |
| Labels | Každá revize s popiskem získá jedinečný plně kvalifikovaný název domény pro přímý přístup. |
V režimu vícečetném, když jiná aplikace kontejneru volá plně kvalifikovaný název domény vaší aplikace, proxy automaticky distribuuje požadavky napříč revizemi podle vašich nakonfigurovaných váh. V režimu štítků můžou volající cílit na konkrétní revizi pomocí plně kvalifikovaného názvu domény štítku.
Další informace najdete viz Revize v Azure Container Apps.
Vyvolání služby Dapr
Dapr (Distributed Application Runtime) poskytuje přístup založený na vedlejším kontejneru ke komunikaci mezi aplikacemi. Povolením Dapr získávají vaše aplikace kontejnerů integrované vyvolání služby pomocí vzájemného protokolu TLS, automatického opakování a distribuovaného trasování prostřednictvím Azure Application Insights.
Jak funguje vyvolání Dapr
Každá kontejnerová aplikace s podporou Dapr spouští pomocný proces společně s vaší aplikací. Pokud chcete volat jinou aplikaci s podporou Dapr, vytvořte místní požadavek HTTP na sajdkáru Dapr, který zpracovává zjišťování a směrování služby:
http://localhost:3500/v1.0/invoke/<DAPR_APP_ID>/method/<METHOD_NAME>
Pokud chcete například volat metodu catalog v aplikaci s ID order-processoraplikace Dapr:
http://localhost:3500/v1.0/invoke/order-processor/method/catalog
Sidecar překládá cílovou aplikaci přes vyhrazenou doménu DNS a směruje požadavek přes vrstvu proxy Envoy. Jedná se o stejnou infrastrukturu, která zpracovává směrování založené na plně kvalifikovaném názvu domény.
Poznámka:
Dapr používá vlastní cestu pro rozlišení DNS (.dapr doména), oddělenou od standardního rozlišování FQDN. Infrastruktura proxy v prostředí zajišťuje směrování obou cest.
ID aplikace Dapr
ID aplikace Dapr je identita, která ostatní aplikace používají k vyvolání vaší služby. Pokud explicitně nenastavíte ID aplikace, Dapr runtime použije výchozí název vaší kontejnerové aplikace. Rozhraní API ARM zobrazí appId: null, když nenakonfigurujete vlastní ID, ale modul runtime automaticky použije název aplikace. Pokud potřebujete jiný identifikátor, nastavte v konfiguraci Dapr vlastní ID aplikace.
ID aplikací Dapr musí být v rámci prostředí jedinečná. Pokud se pokusíte nasadit kontejnerovou aplikaci s ID aplikace Dapr, které už používá jiná aplikace, vytvoří se prostředek kontejnerové aplikace, ale jeho revizi se nepodaří zřídit (provisioningState: Failed). Chybová zpráva identifikuje konfliktní ID aplikace a aplikaci, která ji vlastní.
Aplikace jen pro dapr (bez příchozího přenosu dat HTTP)
Dapr můžete povolit v aplikaci kontejneru bez konfigurace příchozího přenosu dat HTTP. V tomto případě není aplikace dostupná prostřednictvím plně kvalifikovaného názvu domény nebo názvu aplikace, ale jiné aplikace s podporou Dapr ji stále můžou vyvolat prostřednictvím vyvolání služby Dapr. Tento model je užitečný pro pracovníky na pozadí nebo procesory událostí, které potřebují přijímat pouze volání z jiných služeb v síti.
Návod
Když vytvoříte aplikaci typu no-ingress s Azure CLI, vynecháte příznaky --ingress i --target-port. Vložení --target-port bez --ingress vede k chybě použití.
Konfigurace sajdkáru Dapr
Sajdkár Dapr nakonfigurujete prostřednictvím vlastností vaší aplikace kontejneru. Klíčová nastavení zahrnují:
| Setting | Description |
|---|---|
appId |
ID aplikace Dapr (výchozí hodnota je název aplikace kontejneru) |
appPort |
Port, na který vaše aplikace naslouchá (vrátí se k cílovému portu příchozího přenosu dat) |
appProtocol |
Protokol pro komunikaci mezi Dapr a aplikací (například http, grpc) |
logLevel |
Podrobnosti protokolu sajdkáru Dapr |
enableApiLogging |
Jestli se mají protokolovat volání rozhraní DAPR API |
httpMaxRequestSize |
Maximální velikost textu požadavku v MB pro server HTTP dapr |
httpReadBufferSize |
Maximální velikost vyrovnávací paměti HTTP pro čtení v kB |
Další informace o konfiguraci dapr s Azure Container Apps najdete v tématu Integrace Datapr s Azure Container Apps.
Zabezpečení komunikace mezi aplikacemi
Azure Container Apps obsahuje několik funkcí zabezpečení, které ovlivňují způsob komunikace aplikací typu kontejner:
-
Tls ve výchozím nastavení: Veškerý provoz mezi kontejnerovými aplikacemi směruje přes proxy server envoy, který zpracovává ukončení protokolu TLS. Nastavte
allowInsecurenafalse(výchozí) pro vynucení přesměrování HTTPS. -
Režim klientského certifikátu (mTLS):: Nakonfigurujte vzájemné tls nastavením režimu klientského certifikátu na
require,acceptneboignore. - Omezení IP adres: Definujte pravidla povolení nebo zamítnutí, která omezují, které IP adresy se můžou spojit s vaší aplikací.
- Zásady CORS: Konfigurujte pravidla sdílení prostředků mezi zdroji pro klienty využívající prohlížeč, kteří volají vaše kontejnerové aplikace.
Poznámka:
Když používáte vyvolání služby Dapr, sidecary Dapr automaticky zabezpečují komunikaci s vzájemným TLS mezi službami. Pro volání Dapr-to-Dapr nemusíte konfigurovat MTLS samostatně.
Další informace najdete v tématu Ingress v Azure Container Apps.
Vlastní domény
Vlastní názvy domén můžete mapovat na aplikaci kontejneru tak, že nakonfigurujete vlastní domény v nastavení příchozího přenosu dat. Každá vlastní doména může odkazovat na spravovaný nebo nahraný certifikát TLS.
Vlastní domény se registrují společně s výchozím FQDN, takže vaše aplikace odpovídá na obě adresy. Když se k vaší aplikaci potřebují dostat jiné aplikace typu kontejner, můžou použít buď výchozí plně kvalifikovaný název domény, název aplikace nebo vaši vlastní doménu.
Další informace najdete v tématu Custom domains in Azure Container Apps.
Ukázkové řešení
Ukázka znázorňující, jak volat mezi kontejnery pomocí plně kvalifikovaného názvu domény a Dapr, je k dispozici na Azure Samples.
Související koncepty
Porozumění komunikaci mezi aplikacemi v Azure Container Apps je propojeno s několika souvisejícími tématy:
- Environments v Azure Container Apps: Sdílená hranice, kde se kontejnerové aplikace navzájem vyhledávají a komunikují
- Ingress v Azure Container Apps: Konfigurace externích a interních koncových bodů, tls a pravidel směrování
- integrace Dapr s Azure Container Apps: Hlubší pokrytí komponent Dapr, pub/sub a správy stavu spolu s vyvoláním služeb
- Networking v Azure Container Apps: Integrace virtuální sítě, privátní koncové body a zabezpečení sítě pro vaše prostředí
- Revisions in Azure Container Apps: Vliv režimů revizí a rozdělení provozu na směrování mezi aplikacemi