Share via


Överväganden för att använda Container Apps i en lösning med flera klienter

Du kan använda Azure Container Apps för att köra mikrotjänster och containerbaserade program på en serverlös plattform. Den här artikeln beskriver några av funktionerna i Container Apps som är användbara för lösningar med flera klientorganisationer. Den innehåller också länkar till vägledning som kan hjälpa dig under planeringsfasen.

Isoleringsmodeller

När du arbetar med ett system med flera klientorganisationer som använder Container Apps måste du fastställa vilken isoleringsnivå som krävs. Container Apps har stöd för olika modeller av flera klientorganisationer:

  • Du kan implementera betrodda flera klientorganisationer med hjälp av en delad miljö. Den här modellen kan till exempel vara lämplig när alla dina klientorganisationer är inifrån din organisation.
  • Du kan implementera fientlig multitenancy genom att distribuera separata miljöer för varje klientorganisation. Den här modellen kan till exempel vara lämplig när du inte litar på koden som dina klienter kör.

I följande tabell sammanfattas skillnaderna mellan de viktigaste modellerna för innehavarisolering för Container Apps. Modellerna beskrivs senare i den här artikeln.

Övervägande En miljö per klientorganisation Klientspecifika containerappar Delade containerappar
Dataisolering Högt Lågt Lågt
Prestandaisolering Högt Medel. Ingen nätverksisolering. Lågt
Distributionskomplexitet Medium Låg till medelhög Lågt
Driftkomplexitet Medium Lågt Lågt
Resurskostnad Högt Lågt Lågt
Exempelscenario Köra fientliga multitenantarbetsbelastningar i isolerade miljöer för säkerhet och efterlevnad Optimera kostnader, nätverksresurser och åtgärder för betrodda program med flera klienter Implementera en lösning för flera klientorganisationer på affärslogiknivå

Delade containerappar

Du kanske vill överväga att distribuera delade containerappar i en enda Container Apps-miljö som används för alla dina klientorganisationer.

Diagram that shows a shared Container Apps isolation model. All tenants share a single Container App environment and container apps.

Den här metoden är vanligtvis kostnadseffektiv och kräver minst driftkostnader eftersom det finns färre resurser att hantera.

Men om du vill använda den här isoleringsmodellen måste programkoden vara multitenancy-medveten. Den här isoleringsmodellen garanterar inte isolering på nätverks-, beräknings-, övervaknings- eller datanivå. Programkoden måste hantera klientisolering. Den här modellen är inte lämplig för fientliga multitenancy-arbetsbelastningar där du inte litar på koden som körs.

Den här modellen kan också drabbas av störningar i grannens problem: en klients arbetsbelastning kan påverka prestandan för en annan klientorganisations arbetsbelastning. Om du behöver ange ett dedikerat dataflöde för att minska det här problemet kanske modellen för delade containerappar inte är lämplig.

Kommentar

Mönstret Distributionsstämplar är användbart när klientorganisationer använder olika kostnadsmodeller. Klientorganisationer kan till exempel tilldelas till delade eller dedikerade Container Apps-miljöer beroende på prisnivån. Med den här distributionsstrategin kan du gå längre än gränserna för Container Apps för en enskild prenumeration per region och skala linjärt när antalet klienter växer.

Klientspecifika containerappar

En annan metod som du kan överväga är att isolera dina klienter genom att distribuera klientspecifika containerappar i en delad miljö.

Diagram that shows a Container Apps isolation model in which tenant-specific container apps are deployed within a shared Container Apps environment.

Den här isoleringsmodellen ger logisk isolering mellan varje klientorganisation. Det ger följande fördelar:

  • Kostnadseffektivitet. Genom att dela en Container Apps-miljö, ett virtuellt nätverk och andra anslutna resurser, till exempel en Log Analytics-arbetsyta, kan du i allmänhet minska den totala kostnaden och hanteringskomplexiteten per klientorganisation.
  • Separation av uppgraderingar och distributioner. Varje klients program binärfiler kan distribueras och uppgraderas oberoende av andra containerappar i samma miljö. Den här metoden kan vara till hjälp om du behöver uppgradera olika klientorganisationer till specifika versioner av koden vid olika tidpunkter.
  • Resursisolering. Varje containerapp i din miljö allokeras sina egna PROCESSOR- och minnesresurser. Om en specifik klientorganisation kräver mer resurser kan du allokera mer processor och minne till klientorganisationens specifika containerapp. Tänk på att det finns gränser för totala processor- och minnesallokeringar i containerappar.

Den här metoden ger dock ingen maskinvaru- eller nätverksisolering mellan klientorganisationer. Alla containerappar i en enda miljö delar samma virtuella nätverk. Du måste kunna lita på att de arbetsbelastningar som distribueras till apparna inte missbrukar de delade resurserna.

Det finns också gränser för hur många containerappar du kan distribuera till en enda miljö. Ta hänsyn till den förväntade ökningen av antalet klienter innan du implementerar den här isoleringsmodellen.

Container Apps har inbyggt stöd för Dapr, som använder en modulär design för att leverera funktioner som komponenter. I Container Apps är Dapr-komponenter resurser på miljönivå. När du delar en enskild miljö mellan flera klienter ska du se till att dapr-komponenterna omfångsbegränsas korrekt till rätt klientspecifik containerapp för att garantera isolering och undvika risken för dataläckage.

Kommentar

Använd inte revisioner för att skapa olika versioner av din app för olika klienter. Revisioner tillhandahåller inte resursisolering. De är utformade för distributionsscenarier där du måste ha flera versioner av appen igång som en del av en uppdateringsdistributionsprocess, som i blå/gröna distributioner och A/B-testning.

En miljö per klientorganisation

Du kan överväga att distribuera en Container Apps-miljö för var och en av dina klienter. En Container Apps-miljö är isoleringsgränsen runt en grupp containerappar. En miljö ger beräknings- och nätverksisolering på dataplanet. Varje miljö distribueras till sitt eget virtuella nätverk, som delas av alla appar i miljön. Varje miljö har en egen Dapr- och övervakningskonfiguration.

Diagram that shows a Container Apps isolation model in which each tenant gets its own Container App environment.

Den här metoden ger den starkaste nivån av data- och prestandaisolering eftersom varje klients data och trafik är isolerade till en viss miljö. Och när du använder den här modellen behöver dina program inte vara multitenancy-medvetna. När du använder den här metoden har du mer detaljerad kontroll över hur du allokerar resurser till containerappar i miljön. Du kan fastställa allokeringar baserat på klientorganisationens krav. Vissa klienter kan till exempel kräva mer processor- och minnesresurser än andra, så du kan tillhandahålla fler resurser till dessa klientorganisationers program samtidigt som du drar nytta av den isolering som klientspecifika miljöer tillhandahåller.

Det finns dock låga gränser för hur många miljöer du kan distribuera i en prenumeration per region. I vissa situationer kan du öka dessa kvoter genom att skapa en Azure-supportbegäran.

Se till att känna till den förväntade ökningen av antalet klienter innan du implementerar den här isoleringsmodellen. Tänk på att den här metoden ofta medför en högre total ägandekostnad och högre nivåer av distribution och driftskomplexitet, på grund av de extra resurser som du behöver för att distribuera och hantera.

Container Apps-funktioner som stöder flera klientorganisationer

Egna domännamn

Med Container Apps kan du använda jokertecken-DNS och lägga till dina egna jokertecken-TLS-certifikat. När du använder klientspecifika underdomäner gör dns- och TLS-certifikat med jokertecken att du enkelt kan skala lösningen till ett stort antal klienter utan att behöva konfigurera om varje ny klientorganisation manuellt.

I Container Apps hanterar du certifikat på miljönivå. Ingress måste också aktiveras för containerappen innan du kan binda en anpassad domän till den.

Begära autentisering och auktorisering

Container Apps kan verifiera autentiseringstoken för din app. Om en begäran inte innehåller en token, token inte är giltig eller om begäran inte är auktoriserad kan du konfigurera Container Apps att antingen blockera begäran eller omdirigera den till din identitetsprovider så att användaren kan logga in.

Om dina klienter använder Microsoft Entra-ID som identitetsprovider kan du konfigurera Container Apps att använda den /common-slutpunkten för att verifiera användartoken. Detta säkerställer att deras token verifieras och godkänns oavsett användarens Microsoft Entra-klientorganisation.

Du kan också integrera Container Apps med Azure Active Directory B2C för användarautentisering via partneridentitetsprovidrar.

Mer information finns i de här resurserna:

Kommentar

Autentiserings- och auktoriseringsfunktionerna i Container Apps liknar dem i Azure App Service. Det finns dock vissa skillnader. Mer information finns i Överväganden för att använda inbyggd autentisering.

Hanterade identiteter

Du kan använda hanterade identiteter från Microsoft Entra-ID för att göra det möjligt för din containerapp att komma åt andra resurser som autentiseras av Microsoft Entra-ID. När du använder hanterade identiteter behöver containerappen inte hantera autentiseringsuppgifter för tjänst-till-tjänst-kommunikation. Du kan bevilja specifika behörigheter till containerappens identitet för rollbaserad åtkomstkontroll.

När du använder hanterade identiteter bör du ha ditt val av isoleringsmodell i åtanke. Anta till exempel att du delar dina containerappar mellan alla dina klienter och distribuerar klientspecifika databaser. Du måste se till att en klientorganisations program inte kan komma åt en annan klientorganisations databas.

Mer information finns i Hanterade identiteter i Azure Container Apps.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Övriga medarbetare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg