Share via


Überlegungen zur Verwendung von Container Apps in einer mehrinstanzenfähigen Lösung

Sie können Azure Container Apps verwenden, um Microservices und containerisierten Anwendungen auf einer serverlosen Plattform auszuführen. In diesem Artikel werden einige der Features von Container Apps beschrieben, die für mehrinstanzenfähige Lösungen nützlich sind. Außerdem werden Links zu Anleitungen bereitgestellt, die Ihnen während Ihrer Planungsphase helfen können.

Isolationsmodelle

Wenn Sie mit einem mehrinstanzenfähigen System arbeiten, das Container Apps verwendet, müssen Sie die erforderliche Isolationsebene bestimmen. Container Apps unterstützt verschiedene Modelle der Mehrinstanzenfähigkeit:

  • Sie können die vertrauenswürdige Mehrinstanzenfähigkeit mithilfe einer freigegebenen Umgebung implementieren. Dieses Modell ist beispielsweise geeignet, wenn Ihre Mandanten alle aus Ihrer Organisation stammen.
  • Sie können eine feindselige Mehrinstanzenfähigkeit implementieren, indem Sie separate Umgebungen für jeden Mandanten bereitstellen. Dieses Modell kann beispielsweise geeignet sein, wenn Sie dem Code, den Ihre Mandanten ausführen, nicht vertrauen.

In der folgenden Tabelle werden die Unterschiede der wichtigsten Mandantenisolationsmodelle für Container Apps erläutert. Die Modelle werden weiter unten in diesem Artikel beschrieben.

Aspekt Eine Umgebung pro Mandant Mandantenspezifische Container-Apps Freigegebene Container-Apps
Datenisolation High Niedrig Niedrig
Leistungsisolation Hoch Mittel. Keine Netzwerkisolation. Niedrig
Bereitstellungskomplexität Medium Niedrig bis mittel Niedrig
Komplexität des Betriebs Medium Niedrig Niedrig
Ressourcenkosten Hoch Niedrig Niedrig
Beispielszenario Ausführen von feindlichen mehrinstanzenfähigen Workloads in isolierten Umgebungen für Sicherheit und Compliance Optimieren von Kosten, Netzwerkressourcen und Vorgängen für vertrauenswürdige mehrinstanzenfähige Anwendungen Implementieren einer mehrinstanzenfähigen Lösung auf Geschäftslogikebene

Freigegebene Container-Apps

Sie sollten die Bereitstellung freigegebener Container-Apps in einer einzelnen Container Apps-Umgebung in Betracht ziehen, die für alle Ihre Mandanten verwendet wird.

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

Dies ist in der Regel der kosteneffizienteste Ansatz und erfordert den geringsten betrieblichen Mehraufwand, da weniger Ressourcen verwaltet werden müssen.

Wenn Sie dieses Isolationsmodell verwenden möchten, muss Ihr Anwendungscode jedoch mehrinstanzenfähig sein. Dieses Isolationsmodell garantiert keine Isolation auf Netzwerk-, Compute-, Überwachungs- oder Datenebene. Ihr Anwendungscode muss die Mandantenisolation verarbeiten. Dieses Modell eignet sich nicht für feindselige Mehrinstanzenworkloads, bei denen Sie dem ausgeführten Code nicht vertrauen.

Zudem unterliegt dieses Modell möglicherweise auch Noisy Neighbor-Problemen: Die Workload eines Mandanten kann sich auf die Leistung der Workload eines anderen Mandanten auswirken. Wenn Sie dedizierten Durchsatz bereitstellen müssen, um dieses Problem zu entschärfen, ist das Modell für freigegebene Container-Apps möglicherweise nicht geeignet.

Hinweis

Das Muster „Bereitstellungsstempel“ ist nützlich, wenn Mandanten verschiedene Kostenmodelle verwenden. Mandanten können z. B. freigegebenen oder dedizierten Container Apps-Umgebungen je nach Tarif zugewiesen werden. Diese Bereitstellungsstrategie ermöglicht es Ihnen, die Grenzen von Container Apps für ein einzelnes Abonnement pro Region zu überschreiten und linear zu skalieren, wenn die Anzahl der Mandanten zunimmt.

Mandantenspezifische Container-Apps

Ein weiterer Ansatz, den Sie in Betracht ziehen können, ist die Isolierung Ihrer Mandanten durch die Bereitstellung mandantenspezifischer Container-Apps in einer freigegebenen Umgebung.

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

Dieses Isolationsmodell bietet eine logische Isolation zwischen jedem Mandanten. Dies bietet folgende Vorteile:

  • Kosteneffizienz. Indem Sie eine Container Apps-Umgebung, ein virtuelles Netzwerk und andere angefügte Ressourcen wie einen Log Analytics-Arbeitsbereich freigeben, können Sie Ihre Gesamtkosten und die Verwaltungskomplexität pro Mandant generell reduzieren.
  • Trennung von Upgrades und Bereitstellungen. Die Anwendungsbinärdateien jedes Mandanten können unabhängig von denen anderer Container-Apps in derselben Umgebung bereitgestellt und upgegradet werden. Dieser Ansatz kann hilfreich sein, wenn Sie verschiedene Mandanten zu unterschiedlichen Zeiten auf bestimmte Versionen Ihres Codes upgraden müssen.
  • Ressourcenisolierung: Jeder Container-App in Ihrer Umgebung werden eigene CPU-Ressourcen und Arbeitsspeicherressourcen zugewiesen. Wenn ein bestimmter Mandant mehr Ressourcen benötigt, können Sie der spezifischen Container-App dieses Mandanten mehr CPU und Arbeitsspeicher zuweisen. Beachten Sie, dass es für Container-Apps Grenzwerte für die gesamte CPU-Belegung und Arbeitsspeicherbelegung gibt.

Dieser Ansatz bietet jedoch keine Hardware- oder Netzwerkisolation zwischen Mandanten. Alle Container-Apps in einer einzelnen Umgebung nutzen dasselbe virtuelle Netzwerk. Sie müssen darauf vertrauen können, dass die in den Apps bereitgestellten Workloads die freigegebenen Ressourcen nicht missbrauchen.

Es gibt auch Grenzwerte für die Anzahl von Container-Apps, die Sie in einer einzelnen Umgebung bereitstellen können. Berücksichtigen Sie die erwartete Zunahme der Anzahl von Mandanten, bevor Sie dieses Isolationsmodell implementieren.

Container Apps verfügt über integrierte Unterstützung für Dapr. Diese Runtime verfügt über einen modularen Entwurf, um Funktionen als Komponenten bereitzustellen. In Container Apps sind Dapr-Komponenten Ressourcen auf Umgebungsebene. Wenn Sie eine einzelne Umgebung über mehrere Mandanten freigeben, stellen Sie sicher, dass Sie die Dapr-Komponenten ordnungsgemäß auf die richtige mandantenspezifische Container-App festlegen, um die Isolation zu gewährleisten und das Risiko von Datenlecks zu vermeiden.

Hinweis

Verwenden Sie keine Revisionen, um unterschiedliche Versionen Ihrer App für verschiedene Mandanten zu erstellen. Revisionen bieten keine Ressourcenisolation. Sie sind für Bereitstellungsszenarios konzipiert, in denen mehrere Versionen Ihrer App als Teil eines Updaterolloutprozesses ausgeführt werden müssen, z. B. bei Blaugrün-Bereitstellungen und A/B-Tests.

Eine Umgebung pro Mandant

Sie können erwägen, für jeden Ihrer Mandanten eine Container Apps-Umgebung bereitzustellen. Eine Container Apps-Umgebung fungiert als Isolationsgrenze um eine Gruppe von Container-Apps. Eine Umgebung bietet Compute- und Netzwerkisolation auf Datenebene. Jede Umgebung wird in einem eigenen virtuellen Netzwerk bereitgestellt, das von allen Apps innerhalb der Umgebung gemeinsam genutzt wird. Jede Umgebung verfügt über eine eigene Dapr und Überwachungskonfiguration.

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

Dieser Ansatz bietet das höchste Maß an Daten- und Leistungsisolation, da die Daten und der Datenverkehr jedes Mandanten in einer bestimmten Umgebung isoliert werden. Wenn Sie dieses Modell verwenden, müssen Ihre Anwendungen nicht mehrinstanzenfähig sein. Wenn Sie diesen Ansatz verwenden, verfügen Sie über präzisere Kontrolle darüber, wie Sie Container-Apps innerhalb der Umgebung Ressourcen zuordnen. Sie können Zuordnungen basierend auf den Anforderungen Ihres Mandanten bestimmen. Beispielsweise benötigen einige Mandanten möglicherweise mehr CPU-Ressourcen und Arbeitsspeicherressourcen als andere, sodass Sie mehr Ressourcen für die Anwendungen dieser Mandanten bereitstellen und gleichzeitig von der Isolation profitieren können, die mandantenspezifische Umgebungen bieten.

Es gibt jedoch niedrige Grenzwerte für die Anzahl von Umgebungen, die Sie innerhalb eines Abonnements pro Region bereitstellen können. In einigen Situationen können Sie diese Kontingente erhöhen, indem Sie ein Azure-Supportticket erstellen.

Achten Sie darauf, dass Sie die erwartete Zunahme der Anzahl von Mandanten kennen, bevor Sie dieses Isolationsmodell implementieren. Beachten Sie, dass dieser Ansatz aufgrund der zusätzlichen Ressourcen, die Sie bereitstellen und verwalten müssen, häufig zu höheren Gesamtkosten und zu höherer Bereitstellungs- und Betriebskomplexität führen.

Container Apps-Features, die Mehrinstanzenfähigkeit unterstützen

Benutzerdefinierte Domänennamen

Mit Container Apps können Sie Platzhalter-DNS-Einträge verwenden und Ihre eigenen Platzhalter-TLS-Zertifikate hinzufügen. Wenn Sie mandantenspezifische Unterdomänen verwenden, können Sie mit Platzhalter-DNS-Einträgen und TLS-Zertifikaten Ihre Lösung problemlos auf eine große Anzahl von Mandanten skalieren, ohne dass für jeden neuen Mandanten eine manuelle Neukonfiguration erforderlich ist.

In Container Apps verwalten Sie Zertifikate auf Umgebungsebene. Eingehende Daten müssen auch für die Container-App aktiviert sein, bevor Sie eine benutzerdefinierte Domäne an sie binden können.

Anfordern der Authentifizierung und Autorisierung

Container Apps kann Authentifizierungstoken für Ihre App überprüfen. Wenn eine Anforderung kein Token enthält, das Token ungültig oder die Anforderung nicht autorisiert ist, können Sie Container Apps so konfigurieren, dass die Anforderung entweder blockiert oder an Ihren Identitätsanbieter umgeleitet wird, damit sich Benutzer*innen anmelden können.

Wenn Ihre Mandanten Microsoft Entra ID als Identitätsanbieter verwenden, können Sie Container Apps so konfigurieren, dass der /common-Endpunkt zum Überprüfen von Benutzertoken verwendet wird. Dadurch wird sichergestellt, dass Token unabhängig vom Microsoft Entra-Mandanten der Benutzer*innen überprüft und akzeptiert werden.

Sie können Container Apps auch mit Azure Active Directory B2C für die Benutzerauthentifizierung über Partneridentitätsanbieter integrieren.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Hinweis

Die Authentifizierungs- und Autorisierungsfeatures in Container-Apps ähneln denen in Azure App Service. Es gibt aber einige Unterschiede. Weitere Informationen finden Sie unter Überlegungen zur Verwendung der integrierten Authentifizierung.

Verwaltete Identitäten

Sie können verwaltete Identitäten aus Microsoft Entra ID verwenden, um Ihrer Container-App den Zugriff auf andere Ressourcen zu ermöglichen, die von Microsoft Entra ID authentifiziert werden. Wenn Sie verwaltete Identitäten verwenden, muss Ihre Container-App keine Anmeldeinformationen für die Dienst-zu-Dienst-Kommunikation verwalten. Sie können der Identität Ihrer Container-App bestimmte Berechtigungen für die rollenbasierte Zugriffssteuerung erteilen.

Wenn Sie verwaltete Identitäten verwenden, sollten Sie Ihre Wahl des Isolationsmodells berücksichtigen. Angenommen, Sie geben Ihre Container-Apps für alle Ihre Mandanten frei und stellen mandantenspezifische Datenbanken bereit. Sie müssen sicherstellen, dass die Anwendung eines Mandanten nicht auf die Datenbank eines anderen Mandanten zugreifen kann.

Weitere Informationen finden Sie unter Verwaltete Identitäten in Azure Container Apps.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

  • Daniel Larsen | Principal Customer Engineer, FastTrack for Azure
  • Will Velida | Customer Engineer 2, FastTrack for Azure

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte