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:

Exempel på ingresskonfiguration som visar ingressdelning mellan två revisioner:

Diagram showing an ingress configuration splitting traffic between two revisions.

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.

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å "extern".

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

Den här funktionen kräver att du använder den senaste förhandsversionen 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 5 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.

Mer information om hur du aktiverar ytterligare portar för dina containerappar finns i artikeln om ingress.

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 mTLS för nätverkskryptering på 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.

Nästa steg