Ingress i Azure Container Apps
Med Azure Container Apps kan du exponera din containerapp för den offentliga webben, ditt virtuella nätverk (VNET) och andra containerappar i din miljö genom att aktivera inkommande. Ingressinställningar tillämpas via en uppsättning regler som styr routningen av extern och intern trafik till containerappen. När du aktiverar ingress behöver du inte skapa en Azure Load Balancer, offentlig IP-adress eller andra Azure-resurser för att aktivera inkommande HTTP-begäranden eller TCP-trafik.
Ingress stöder:
- Extern och intern ingress
- Ingresstyper för HTTP och TCP
- Domännamn
- IP-begränsningar
- Autentisering
- Trafikdelning mellan revisioner
- Sessionstillhörighet
Exempel på ingresskonfiguration som visar ingressdelning mellan två revisioner:
Konfigurationsinformation finns i Konfigurera ingress.
Extern och intern ingress
När du aktiverar inkommande kan du välja mellan två typer av ingress:
- Extern: Accepterar trafik från både det offentliga Internet och containerappens interna miljö.
- Internt: Tillåter endast intern åtkomst inifrån containerappens miljö.
Varje containerapp i en miljö kan konfigureras med olika ingressinställningar. I ett scenario med flera mikrotjänstappar kan du till exempel ha en enda containerapp som tar emot offentliga begäranden och skickar begäranden till en bakgrundstjänst för att öka säkerheten. I det här scenariot konfigurerar du den offentliga containerappen med extern ingress och den interna containerappen med intern ingress.
Protokolltyper
Container Apps stöder två protokoll för inkommande: HTTP och TCP.
HTTP
När HTTP-ingressen är aktiverad har containerappen:
- Stöd för TLS-avslutning
- Stöd för HTTP/1.1 och HTTP/2
- Stöd för WebSocket och gRPC
- HTTPS-slutpunkter som alltid använder TLS 1.2 eller 1.3, avslutade vid ingresspunkten
- Slutpunkter som exponerar portarna 80 (för HTTP) och 443 (för HTTPS)
- Som standard omdirigeras HTTP-begäranden till port 80 automatiskt till HTTPS på 443
- Ett fullständigt domännamn (FQDN)
- Tidsgränsen för begäran är 240 sekunder
HTTP-rubriker
HTTP-ingress lägger till rubriker för att skicka metadata om klientbegäran till containerappen. Till exempel X-Forwarded-Proto
används huvudet för att identifiera det protokoll som klienten använde för att ansluta till Container Apps-tjänsten. I följande tabell visas de HTTP-huvuden som är relevanta för ingress i Container Apps:
Header | Beskrivning | Värden |
---|---|---|
X-Forwarded-Proto |
Protokoll som används av klienten för att ansluta till Container Apps-tjänsten. | http eller https |
X-Forwarded-For |
IP-adressen för klienten som skickade begäran. | |
X-Forwarded-Host |
Värdnamnet som klienten använde för att ansluta till Container Apps-tjänsten. | |
X-Forwarded-Client-Cert |
Klientcertifikatet om clientCertificateMode har angetts. |
Semikolonavgränsad lista över hash, certifikat och kedja. Till exempel: Hash=....;Cert="...";Chain="..."; |
TCP
Container Apps stöder TCP-baserade protokoll som inte är HTTP- eller HTTPS-baserade. Du kan till exempel använda TCP-ingress för att exponera en containerapp som använder Redis-protokollet.
Kommentar
Extern TCP-ingress stöds endast för Container Apps-miljöer som använder ett anpassat VNET. TCP-ingress stöds inte för appar som accepterar inkommande trafik via en privat slutpunkt.
När TCP-ingressen är aktiverad kan din containerapp:
- Är tillgänglig för andra containerappar i samma miljö via dess namn (definieras av
name
egenskapen i Container Apps-resursen) och exponerat portnummer. - Är tillgänglig externt via dess fullständigt kvalificerade domännamn (FQDN) och exponerat portnummer om ingressen är inställd på
external
.
Ytterligare TCP-portar
Förutom den huvudsakliga HTTP/TCP-porten för dina containerappar kan du exponera ytterligare TCP-portar för att aktivera program som accepterar TCP-anslutningar på flera portar.
Kommentar
Om du vill använda den här funktionen måste du ha CLI-tillägget för containerappar. Kör az extension add -n containerapp
för att installera den senaste versionen av CLI-tillägget för containerappar.
Följande gäller för ytterligare TCP-portar:
- Ytterligare TCP-portar kan bara vara externa om själva appen har angetts som extern och containerappen använder ett anpassat virtuellt nätverk.
- Alla externt exponerade ytterligare TCP-portar måste vara unika i hela Container Apps-miljön. Detta omfattar alla externa ytterligare TCP-portar, externa TCP-portar och 80/443-portar som används av inbyggd HTTP-ingress. Om de ytterligare portarna är interna kan samma port delas av flera appar.
- Om en exponerad port inte tillhandahålls kommer den exponerade porten som standard att matcha målporten.
- Varje målport måste vara unik och samma målport kan inte exponeras på olika exponerade portar.
- Det finns högst fem ytterligare portar per app. Om ytterligare portar krävs öppnar du en supportbegäran.
- Endast den huvudsakliga ingressporten stöder inbyggda HTTP-funktioner som CORS och sessionstillhörighet. När du kör HTTP ovanpå de ytterligare TCP-portarna stöds inte dessa inbyggda funktioner.
Domännamn
Du kan komma åt din app på följande sätt:
- Det fullständiga domännamnet (FQDN) som standard: Varje app i en Container Apps-miljö tilldelas automatiskt ett fullständigt domännamn baserat på miljöns DNS-suffix. Information om hur du anpassar en miljös DNS-suffix finns i DNS-suffix för anpassad miljö.
- Ett anpassat domännamn: Du kan konfigurera en anpassad DNS-domän för din Container Apps-miljö. Mer information finns i Anpassade domännamn och certifikat.
- Appnamnet: Du kan använda appnamnet för kommunikation mellan appar i samma miljö.
Information om hur du hämtar FQDN för din app finns i Plats.
IP-begränsningar
Container Apps stöder IP-begränsningar för ingress. Du kan skapa regler för att antingen konfigurera IP-adresser som tillåts eller nekas åtkomst till din containerapp. Mer information finns i Konfigurera IP-begränsningar.
Autentisering
Azure Container Apps tillhandahåller inbyggda funktioner för autentisering och auktorisering för att skydda din externa ingressaktiverade containerapp. Mer information finns i Autentisering och auktorisering i Azure Container Apps.
Du kan konfigurera din app så att den stöder klientcertifikat (mTLS) för autentisering och trafikkryptering. Mer information finns i Konfigurera klientcertifikat.
Mer information om hur du använder nätverkskryptering på peer-to-peer-miljönivå finns i nätverksöversikten.
Trafikdelning
Med Containers Apps kan du dela upp inkommande trafik mellan aktiva revisioner. När du definierar en delningsregel tilldelar du procentandelen inkommande trafik för att gå till olika revisioner. Mer information finns i Trafikdelning.
Sessionstillhörighet
Sessionstillhörighet, även kallat klibbiga sessioner, är en funktion som gör att du kan dirigera alla HTTP-begäranden från en klient till samma containerappreplik. Den här funktionen är användbar för tillståndskänsliga program som kräver en konsekvent anslutning till samma replik. Mer information finns i Sessionstillhörighet.
Resursdelning mellan ursprung (CORS)
Som standard blockeras alla begäranden som görs via webbläsaren från en sida till en domän som inte matchar sidans ursprungsdomän. För att undvika den här begränsningen för tjänster som distribueras till Container Apps kan du aktivera resursdelning mellan ursprung (CORS).
Mer information finns i Konfigurera CORS i Azure Container Apps.