Bejövő forgalom a Azure Container Apps

Azure Container Apps lehetővé teszi, hogy a bejövő forgalom engedélyezésével tegye elérhetővé a tárolóalkalmazást a nyilvános weben, a virtuális hálózaton (VNET) és más tárolóalkalmazásokban a környezetben. A beérkező forgalom beállításait egy szabályrendszerrel érvényesítjük, amely a külső és belső forgalom konténeralkalmazásba való útvonal-irányítását szabályozza. A bejövő forgalom engedélyezésekor nem kell létrehoznia Azure Load Balancer, nyilvános IP-címet vagy bármely más Azure erőforrást a bejövő HTTP-kérések vagy a TCP (Transmission Control Protocol) forgalom engedélyezéséhez.

Az Ingress támogatja:

Példa bejövő konfiguráció két változat közötti bemeneti felosztásra:

Egy ábra, amely egy bejöveteli konfigurációt mutat, amely a forgalmat két változat között osztja fel.

A konfiguráció részleteiért lásd a bejövő forgalom konfigurálása részt.

Külső és belső bejövő forgalom

A bejövő forgalom engedélyezésekor kétféle bejövő forgalom közül választhat:

  • Külső: Az alkalmazást a Container Apps-környezet bejövő IP-címén keresztül teszi elérhetővé. Ha a környezet nyilvános bejövő IP-címet használ, az alkalmazás fogadhat forgalmat a nyilvános internetről, és az ugyanabban a környezetben lévő többi tárolóalkalmazásból is elérhető.

  • Internal: Az alkalmazás saját, teljesen minősített domain neve (FQDN) csak ugyanabból a Container Apps környezetéből érhető el, például más konténeralkalmazásokból. Az alkalmazás FQDN-je nem közvetlenül elérhető a nyilvános internetről. Az alkalmazás azonban továbbra is fogadhat külső forgalmat, ha egy környezetszintű HTTP-útvonalkonfigurációban célként szerepel. Ahhoz, hogy egy alkalmazást teljesen elszigetelj a külső forgalomtól, győződj meg róla, hogy ne szerepeljen célként egyetlen HTTP útvonalkonfigurációban, vagy helyezd el külön környezetbe. További információért lásd: Use rule-based routing with Azure Container Apps.

A környezeten belüli tárolóalkalmazások különböző bemeneti beállításokkal konfigurálhatók. Ha például több mikroszolgáltatás-alkalmazást használ, a biztonság növelése érdekében előfordulhat, hogy egyetlen tárolóalkalmazás fogadja a nyilvános kéréseket, és átadja a kéréseket egy háttérszolgáltatásnak. Ebben a forgatókönyvben a nyilvános elérésű tárolóalkalmazást külső bejövő forgalommal, a belső elérésű tárolóalkalmazást pedig belső bejövő forgalommal konfigurálná.

Hogyan lép kölcsönhatásba a belépő láthatóság a környezettípussal

Két külön beállítás határozza meg, ki érheti el a konténeralkalmazást:

  • Környezeti hozzáférhetőségi szint: Állítsd be, mikor hozod létre a környezetet. Egy belső környezetnek (amely létrehozta --internal-only--t) egyáltalán nincs nyilvános végpontja. Csak egy belső terheléskiosztó segítségével érhető el a virtuális hálózatban. További információért lásd: Akadálymentességi szint.

  • App belépési láthatóság: Az alkalmazásonkénti external tulajdonság, amely vagy --type external--type internal-vel van beállítva, és a portálban bejövő forgalomként jelenik meg.

A környezet hozzáférhetőségi szintje határozza meg a külső hálózat határát. Az alkalmazás belépési láthatósága határozza meg, hogy az alkalmazás ezen a határon jelenik meg, vagy a környezetben marad.

Környezeti akadálymentességi szint alkalmazás külső ingress
(Forgalom bárhonnan elfogadása)
App Ingress belső
(Korlátozva a Container Apps környezetére)
külső Elérhető a nyilvános internetről, valamint más alkalmazásokból a környezetben. Csak más alkalmazásokból érhető el ugyanabban a környezetben.
Belső Elérhető a virtuális hálózatról a belső terheléskiosztón keresztül, valamint más alkalmazásokból a környezetben. Nem elérhető a nyilvános internetről. Csak más alkalmazásokból érhető el ugyanabban a környezetben. A virtuális hálózat más részein lévő ügyfelek HTTP 404-es választ kapnak.

Important

Az alkalmazás belépési beállításai az alkalmazás környezetével való kapcsolatát írják le, nem az internettel. Egy belső környezetben a bárhonnan érkező forgalom elfogadása nem teszi közzé az alkalmazását az interneten, mert a környezetnek nincs nyilvános végpontja. Ehelyett az alkalmazás a környezet belső terheléskiosztóján jelenik meg, hogy a virtuális hálózatban lévő kliensek elérhessék azt.

A belső környezetben a Limited to Container Apps Environment lehetőség kiválasztása szigorúbb megkötést jelenthet, mint gondolná. Elrejti az alkalmazást a virtuális hálózatod többi részétől, valamint az internetről is.

Megjegyzés

Egy belső belépéssel rendelkező alkalmazás továbbra is kaphat forgalmat a környezeten kívülről, ha célpontként hivatkoznak rá egy környezeti szintű HTTP útvonalkonfigurációban. További információért lásd: Use rule-based routing with Azure Container Apps.

Korlátozd az alkalmazást csak virtuális hálózati hozzáférésre

Gyakori követelmény egy olyan alkalmazás, amelyet a nyilvános internet nem tud elérni, de amelyet virtuális gépek, privát végpontok, peered hálózatok és VPN-en vagy Azure ExpressRoute-on keresztül csatlakoztatott helyi hálózatok elérhetnek. Ez a konfiguráció megköveteli, hogy beállítsd a környezet hozzáférhetőségi szintjét és az alkalmazás belépésének láthatóságát.

  1. Teremtsük a környezetet belső állapotban, így a környezetnek nincs nyilvános végpontja. Az internet elszigeteltsége ebből a beállításból fakad, és nem lehet megváltoztatni, miután megteremtetted a környezetet. További információért lásd: Use a virtual network with Azure Container Apps.

    az containerapp env create \
        --name <ENVIRONMENT_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --infrastructure-subnet-resource-id <SUBNET_RESOURCE_ID> \
        --internal-only true
    
  2. Állítsd be az alkalmazás belépését külső szintre, hogy az alkalmazás megjelenjen a környezet belső terheléskiosztóján, és a virtuális hálózatban lévő kliensek elérhessék azt.

    az containerapp ingress enable \
        --name <APP_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --target-port <PORT_NUMBER> \
        --type external
    

A belső alkalmazás belépését csak olyan alkalmazásokhoz használják, amelyeket más konténeralkalmazások ugyanabban a környezetben hívnak, például egy mikroszolgáltatás háttérszolgáltatása.

Protokolltípusok

A Container Apps két protokollt támogat a bejövő forgalomhoz: HTTP-t és TCP-t.

HTTP

Ha engedélyezve van a HTTP-bejövő forgalom, a tárolóalkalmazás a következőkkel rendelkezik:

  • TLS (Transport Layer Security) leállításának támogatása
  • HTTP/1.1 és HTTP/2 támogatása
  • A WebSocket és a gRPC támogatása
  • A mindig TLS 1.2-t vagy 1.3-at használó HTTPS-végpontok a bemeneti ponton leállnak
  • A 80-at (HTTP) és a 443-at (HTTPS-hez) elérhetővé tevő végpontok
    • Alapértelmezés szerint a 80-s portra irányuló HTTP-kérések automatikusan a 443-on https-ra lesznek átirányítva
  • Teljesen minősített tartománynév (FQDN)
  • A kérés időtúllépése 240 másodperc

HTTP-fejlécek

A HTTP-bejövő forgalom fejléceket ad hozzá az ügyfélkérés metaadatainak a tárolóalkalmazáshoz való továbbításához. A fejléc például annak X-Forwarded-Proto a protokollnak a azonosítására szolgál, amelyet az ügyfél a Container Apps szolgáltatáshoz való csatlakozáshoz használt. Az alábbi táblázat felsorolja azokat a HTTP-fejléceket, amelyek a Container Apps bejövő forgalmához kapcsolódnak.

Fejléc Leírás Értékek
X-Forwarded-Proto Az ügyfél által a Container Apps szolgáltatáshoz való csatlakozáshoz használt protokoll. http vagy https. Ez az érték az ügyfél által történő elküldés esetén felülíródik.
X-Forwarded-For A kérelmet küldő ügyfél IP-címei és/vagy köztes proxyi. A feladók IP-címei. Ha a kezdeti kérelemben meg van adva, a program hozzáfűzi. Csak a jobb szélső IP-címet adja meg a Azure Container Apps. Az IP-hamisítás megakadályozása érdekében a felhasználónak minden más értéket ellenőriznie kell.
X-Forwarded-Client-Cert Az ügyfél-tanúsítvány clientCertificateMode ha be van állítva. Pontosvesszővel elválasztott lista hash-ek, tanúsítványok és láncok. Például: Hash=....;Cert="...";Chain="...";. Ez az érték az ügyfél által történő elküldés esetén felülíródik.

TCP

A Container Apps nem HTTP- vagy HTTPS-alapú TCP-protokollokat támogat. A TCP-bejövő forgalom használatával például közzétehet egy Redis protokollt használó tárolóalkalmazást.

Megjegyzés

A külső TCP-bejövő forgalom csak virtuális hálózatot használó Container Apps-környezetekben támogatott.

Ha engedélyezve van a TCP-bejövő forgalom, a tárolóalkalmazás:

  • Az ugyanabban a környezetben lévő többi tárolóalkalmazás számára a neve (a name Container Apps-erőforrás tulajdonsága által definiált) és a közzétett portszámon keresztül érhető el.
  • Külsőleg elérhető a teljes tartománynévvel (FQDN) és a közzétett portszámmal, ha a bejövő forgalom értéke external.

További TCP-portok

A tárolóalkalmazások fő HTTP/TCP-portja mellett további TCP-portokat is közzétehet, amelyek lehetővé teszik a TCP-kapcsolatokat több porton elfogadó alkalmazások számára.

Megjegyzés

A funkció használatához rendelkeznie kell a container apps CLI-bővítményével. Futtassa az extension add -n containerapp a container apps CLI-bővítmény legújabb verziójának telepítéséhez.

A következő további TCP-portokra vonatkozik:

  • Több TCP-port csak akkor lehet külső, ha maga az alkalmazás külsőként van beállítva, és a tárolóalkalmazás virtuális hálózatot használ.

  • Minden külsőleg közzétett extra TCP-portnak egyedinek kell lennie a teljes Container Apps-környezetben. Ez magában foglalja az összes külső extra TCP-portot, a külső fő TCP-portokat és a beépített HTTP-bejövő forgalom által használt 80/443-as portokat. Ha a további portok belsőek, ugyanazt a portot több alkalmazásban is megoszthatja.

  • Ha nincs megadva egy közzétett port, a közzétett port alapértelmezés szerint megfelel a célportnak.

  • Minden célportnak egyedinek kell lennie, és ugyanazt a célportot nem lehet különböző közzétett portokon elérhetővé tenni.

  • Alkalmazásonként legfeljebb öt portot adhat meg. Ha további portok szükségesek, nyisson meg egy támogatási kérést.

  • Csak a fő bejövő port támogatja a beépített HTTP-funkciókat, például a CORS-t és a munkamenet-affinitást. Ha a HTTP-t az extra TCP-portok tetején futtatja, ezek a beépített funkciók nem támogatottak.

  • A portszám 36985 a belső állapot-ellenőrzésekhez van fenntartva, és nem érhető el a TCP-alkalmazások vagy a HTTP-alkalmazások extra közzétett portjai számára.

További információ a további portok engedélyezéséről: Konfigurálja az alkalmazás bejövő forgalmát.

Tartománynevek

Az alkalmazás a következő módokon érhető el:

  • Az alapértelmezett teljes tartománynév (FQDN): A Container Apps-környezetben lévő összes alkalmazás automatikusan hozzárendel egy teljes tartománynevet a környezet DNS -utótagja alapján. Ezt az utótagot a CONTAINER_APP_ENV_DNS_SUFFIX környezeti változó határozza meg. A környezet DNS-utótagjának testreszabásához lásd az Egyéni környezet DNS-utótagját.

  • Egyéni tartománynév: Konfigurálhat egyéni DNS-tartományt a Container Apps-környezethez. További információ: Egyéni tartománynevek és tanúsítványok.

  • Az alkalmazás neve: Az alkalmazás nevét használhatja az ugyanabban a környezetben lévő alkalmazások közötti kommunikációhoz.

Az alkalmazás teljes tartománynevét a Tárolóalkalmazás helye (FQDN) című témakörben találhatja meg.

IP-korlátozások

A Container Apps támogatja a bejövő forgalom IP-korlátozásait. Szabályokat hozhat létre a tárolóalkalmazáshoz engedélyezett vagy megtagadott IP-címek konfigurálásához. További információ: IP-korlátozások konfigurálása.

Hitelesítés

Azure Container Apps beépített hitelesítési és engedélyezési funkciókat biztosít a külső bejövőforgalom-kompatibilis tárolóalkalmazás védelméhez. További információ: Hitelesítés és engedélyezés Azure Container Apps.

Az alkalmazást úgy konfigurálhatja, hogy támogassa az ügyféltanúsítványokat (mTLS) a hitelesítéshez és a forgalomtitkosításhoz. További információ: Ügyféltanúsítványok konfigurálása.

A társközi környezeti szintű hálózattitkosítás használatáról további információt a hálózatkezelési konfigurációban talál.

Forgalom felosztása

A Containers Apps lehetővé teszi a bejövő forgalom felosztását az aktív változatok között. Amikor meghatározza a felosztási szabályt, hozzárendeli a bejövő forgalom százalékát a különböző verziókhoz. További információ: Forgalom felosztása.

Munkamenet-affinitás

A munkamenet-affinitás( más néven ragadós munkamenetek) egy olyan funkció, amellyel az ügyféltől érkező ÖSSZES HTTP-kérést ugyanarra a tárolóalkalmazás-replikára irányíthatja. Ez a funkció olyan állapotalapú alkalmazásokhoz hasznos, amelyek konzisztens kapcsolatot igényelnek ugyanahhoz a replikához. További információ: Munkamenet-affinitás.

Forrásközi erőforrásmegosztás (CORS)

Alapértelmezés szerint a böngészőben egy lapról egy olyan tartományra irányuló kérések, amelyek nem felelnek meg a lap forrástartományának, le lesznek tiltva. A Container Appsben üzembe helyezett szolgáltatásokra vonatkozó korlátozás elkerülése érdekében engedélyezheti a forrásközi erőforrás-megosztást (CORS).

További információ: Configure CORS in Azure Container Apps.

Következő lépések