Bearbeiten

Freigeben über


Bereitstellen von Microservices mit Azure Container Apps

Azure Container Apps
Azure Cosmos DB
Azure-Servicebus

Dieses Beispielszenario zeigt ein Beispiel für eine vorhandene Workload, die ursprünglich für die Ausführung auf Kubernetes konzipiert wurde, aber stattdessen in Azure Container Apps ausgeführt werden kann. Azure Container Apps eignet sich gut für Brownfield-Workloads, bei denen Teams eine komplexe Infrastruktur- und Containerorchestrierung vereinfachen möchten. Die Beispielworkload führt eine containerisierte Microserviceanwendung aus.

Im Beispiel wird die Workload, die in der Microservicearchitektur auf Azure Kubernetes Service verwendet wird, auf der Anwendungsplattform Azure Container Apps neu gehostet.

Tipp

GitHub-Logo Die Architektur stützt sich auf eine Beispielimplementierung, die einige der in diesem Artikel beschriebenen Entwurfsentscheidungen veranschaulicht.

Aufbau

Abbildung: Microservices, die mit Azure Container Apps bereitgestellt werden.

Laden Sie eine Visio-Datei dieser Architektur herunter.

In diesem Szenario stammen die Containerimages aus Azure Container Registry und werden in einer Container Apps-Umgebung bereitgestellt.

Die Dienste, die gemeinsam die gleiche Umgebung nutzen, profitieren von Folgendem:

  • Interne Eingangsdaten- und Dienstermittlung
  • Einzelner Log Analytics-Arbeitsbereich für die Runtimeprotokollierung
  • Sichere Verwaltung von Geheimnissen und Zertifikaten

Die Workflowdienstcontainer-App wird im einzelnen Überarbeitungsmodus ausgeführt. Eine Container-App, die im Einzelrevisionsmodus ausgeführt wird, weist eine einzelne Überarbeitung auf, die von 00 Replikaten unterstützt wird. Ein Replikat besteht aus dem Anwendungscontainer und allen ggf. erforderlichen Sidecarcontainern. In diesem Beispiel werden keine Sidecarcontainer verwendet. Daher stellt jedes Container-App-Replikat einen einzelnen Container dar. Da in diesem Beispiel keine Skalierung verwendet wird, wird nur ein Replikat für jede Container-App ausgeführt.

Der Workflow verwendet einen Hybridansatz zum Verwalten von Geheimnissen. In den Diensten, bei denen eine solche Implementierung keine Codeänderungen erforderlich macht, werden verwaltete Identitäten verwendet. Der Drohnenplanungsdienst und der Drohnenlieferdienst verwenden benutzerseitig zugewiesene Identitäten für die Authentifizierung bei Azure Key Vault, um auf die dort gespeicherten Geheimnisse zuzugreifen. Die restlichen Dienste speichern Geheimnisse über den Container-Apps-Dienst auf Anwendungsebene.

Abbildung: Runtimearchitektur für die Lösung.

Dieses Diagramm veranschaulicht die Runtimearchitektur für die Lösung.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Datenfluss

  1. Erfassungsdienst: Empfängt Clientanforderungen, puffert sie und sendet sie über Azure Service Bus an den Workflowdienst.
  2. Workflowdienst: Verwendet Nachrichten von Azure Service Bus und sendet sie an zugrunde liegende Dienste.
  3. Paketdienst: Dient zur Paketverwaltung.
  4. Drohnenplanungsdienst: Kümmert sich um die Zeitplanung für die Drohnen und überwacht sie während des Flugs.
  5. Lieferdienst: Verwaltet geplante oder aktuell durchgeführte Lieferungen.

Komponenten

Der Drohnenlieferdienst nutzt mehrere Azure-Dienste gemeinsam.

Azure Container Apps

Azure Container Apps ist die primäre Komponente.

Diese Features ersetzen viele der Komplexitäten der vorherigen AKS-Architektur:

  • Integrierte Dienstermittlung
  • Vollständig verwaltete HTTP- und HTTP/2-Endpunkte
  • Integrierter Lastenausgleich
  • Protokollierung und Überwachung
  • Automatische Skalierung basierend auf HTTP-Datenverkehr oder Ereignissen, die von KEDA unterstützt werden (Kubernetes-based Event Driven Autocaling)
  • Anwendungsupgrades und Versionsverwaltung

Externer Speicher und andere Komponenten

Azure Key Vault dient zum sicheren Speichern von Geheimnissen wie API-Schlüsseln, Kennwörtern und Zertifikaten sowie zum sicheren Zugreifen auf diese Geheimnisse.

Azure Container Registry dient zum Speichern privater Containerimages. Sie können auch andere Containerregistrierungen nutzen, z. B. Docker Hub.

Azure Cosmos DB speichert Daten mithilfe der Open-Source-Lösung Azure Cosmos DB for MongoDB. Microservices sind normalerweise zustandslos und schreiben ihren Zustand in externe Datenspeicher. Azure Cosmos DB is eine NoSQL-Datenbank mit Open-Source-APIs for MongoDB und Cassandra.

Azure Service Bus bietet zuverlässiges Cloud-Messaging-as-a-Service (MaaS) und einfache Hybridintegration. Service Bus unterstützt asynchrone Messagingmuster, die bei Microserviceanwendungen üblich sind.

Azure Cache for Redis fügt der Anwendungsarchitektur eine Zwischenspeicherungsebene hinzu, um die Geschwindigkeit und Leistung bei hohen Datenverkehrslasten zu verbessern.

Azure Monitor sammelt und speichert Metriken und Protokolle von der Anwendung. Nutzen Sie diese Daten zum Überwachen der Anwendung, zum Einrichten von Warnungen und Dashboards sowie zum Durchführen von Fehlerursachenanalysen. In diesem Szenario wird ein Log Analytics-Arbeitsbereich zur umfassenden Überwachung der Infrastruktur und der Anwendung verwendet.

Application Insights bietet eine erweiterbare Anwendungsleistungsverwaltung (Application Performance Management, APM) sowie Überwachungsfunktionen für die Dienste. Jeder Dienst wird mit dem Application Insights SDK instrumentiert, um die App zu überwachen und die Daten an Azure Monitor weiterzuleiten.

Bicep-Vorlagen zum Konfigurieren und Bereitstellen der Anwendungen.

Alternativen

Ein alternatives Szenario dieses Beispiels ist die Fabrikam-Drohnenlieferanwendung mit Kubernetes. Diese steht auf GitHub im Repository für Fabrikam-Drohnenlieferungen mit Azure Kubernetes Service (AKS) zur Verfügung.

Szenariodetails

Ihr Unternehmen kann die Bereitstellung und Verwaltung von Microservicecontainern mithilfe von Azure Container Apps vereinfachen. Container Apps bietet eine vollständig verwaltete serverlose Umgebung für die Erstellung und Bereitstellung moderner Anwendungen.

Fabrikam, Inc. (ein fiktives Unternehmen) implementiert eine Drohnen-Lieferanwendung, in der Benutzer eine Drohne anfordern, um Waren für die Lieferung aufzunehmen. Wenn ein Kunde einen Abholtermin festlegt, weist ein Back-End-System eine Drohne zu und teilt dem Benutzer die voraussichtliche Lieferzeit mit.

Die Microserviceanwendung wurde in einem Azure Kubernetes Service-Cluster (AKS) bereitgestellt. Das Fabrikam-Team nutzte jedoch nicht die erweiterten oder plattformspezifischen AKS-Funktionen. Schließlich wurde die Anwendung ohne viel Aufwand zu Azure Container Apps migriert. Durch die Portierung der Lösung auf Azure Container Apps konnte Fabrikam die folgenden Vorteile erreichen:

  • Migrieren der Anwendung fast ohne Änderungen: Bei der Migration der Anwendung von AKS zu Azure Container Apps waren fast keine Codeänderungen erforderlich.
  • Bereitstellen der Infrastruktur und der Workload mit Bicep-Vorlagen: Für die Bereitstellung der Anwendungscontainer waren keine Kubernetes-YAML-Manifeste erforderlich.
  • Verfügbarmachen der Anwendung über den verwalteten Eingangsdienst: Dank integrierter Unterstützung des externen, HTTPS-basierten Eingangsdienstes zum Verfügbarmachen des Datenerfassungsdienstes muss kein eigener Eingangsdienst mehr konfiguriert werden.
  • Abrufen von Containerimages aus ACR (Azure Container Registry): Azure-Container-Apps erfordern kein bestimmtes Basisimage oder eine bestimmte Registrierung.
  • Verwalten des Anwendungslebenszyklus: Die Revisionsfunktion unterstützt das Ausführen mehrerer Revisionen einer bestimmten Container-App sowie die Aufteilung des Datenverkehrs für A/B-Tests oder Blau/Grün-Bereitstellungsszenarien.
  • Verwenden einer verwalteten Identität: Das Fabrikam-Team konnte eine verwaltete Identität für die Authentifizierung mit Azure Key Vault und Azure Container Registry verwenden.

Mögliche Anwendungsfälle

  • Stellen Sie eine microservicebasierte Brownfield-Anwendung in einer Plattform as a Service (PaaS) bereit, um die Verwaltung zu vereinfachen und die Komplexität der Ausführung eines Container-Orchestrators zu vermeiden.
  • Optimieren von Vorgängen und Verwaltung durch Migrieren von Containerdiensten zu einer Plattform, die die native Skalierung auf Null unterstützt
  • Ausführen eines zeitintensiven Hintergrundprozesses – beispielsweise den Workflowdienst im Einzelrevisionsmodus

Weitere gängige Verwendungsmöglichkeiten von Azure Container Apps:

  • Ausführen von Containerworkloads auf einer serverlosen, nutzungsbasierten Plattform
  • Automatisches Skalieren von Anwendungen basierend auf HTTP/HTTPS-Datenverkehr und/oder ereignisgesteuerten Triggern mit KEDA-Unterstützung
  • Minimieren des Wartungsaufwands für Containeranwendungen
  • Bereitstellen von API-Endpunkten
  • Hosten von Hintergrundverarbeitungsanwendungen
  • Verarbeiten der ereignisgesteuerten Verarbeitung

Überlegungen

Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Verfügbarkeit

Mit Container-Apps können Sie die Anwendungen einfacher bereitstellen, verwalten, verwalten und überwachen. Sie können die Verfügbarkeit über die folgenden wichtigen Features sicherstellen:

  • Überarbeitungen helfen Ihnen bei der Bereitstellung von Anwendungsupdates ohne Downtime. Sie können Überarbeitungen verwenden, um die Bereitstellung von Anwendungsupdates zu verwalten und den Datenverkehr zwischen den Überarbeitungen zu teilen, um blaue bzw. grüne Bereitstellungen und A/B-Tests zu unterstützen (derzeit nicht in dieser Beispielworkload verwendet).
  • Die umfassenden Überwachungsfeatures von Container-Apps bieten eine ganzheitliche Ansicht Ihrer ausgeführten Anwendungen. Container Apps ist mit Azure Monitor und Log Analytics integriert, sodass Sie die Ausführung von Container-Apps nachverfolgen und Warnungen basierend auf Metriken und Ereignissen festlegen können.
  • Wenn eine App unerwartet beendet wird, wird sie vom Container Apps-Dienst automatisch neu gestartet.
  • Sie können Regeln für die automatische Skalierung aktivieren, um dem Bedarf bei zunehmendem Datenverkehr und zunehmenden Workloads gerecht zu werden.
  • Die dynamischen Lastenausgleichsfeatures von Container-Apps optimieren die Leistung (in diesem Beispielworkload werden sie jedoch nicht verwendet).

Optimaler Betrieb

Die Säule „Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Übersicht über die Säule „Optimaler Betrieb“.

Der Container Apps-Dienst bietet folgende Features für erstklassige Betriebsprozesse:

  • GitHub Actions-Integration zum Einrichten automatisierter CI/CD-Bereitstellungen
  • Modus mit mehreren Revisionen und Aufteilung des Datenverkehrs zum Testen von Änderungen am Anwendungscode und an Skalierungsregeln
  • Azure Monitor- und Log Analytics-Integration, um Erkenntnisse zu Ihrer Containeranwendung zu gewinnen

Effiziente Leistung

Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen. Weitere Informationen finden Sie unter Übersicht über die Säule „Leistungseffizienz“.

Leistungsaspekte in dieser Lösung:

  • Die Workload wird auf mehrere Microserviceanwendungen verteilt.
  • Jeder Microservice ist unabhängig und teilt sich keine Ressourcen mit den anderen Microservices, sodass sie unabhängig skaliert werden können.
  • Die automatische Skalierung kann aktiviert werden, wenn die Workload zunimmt.
  • Für Anforderungen wird ein dynamischer Lastenausgleich verwendet.
  • Metriken, einschließlich CPU- und Arbeitsspeicherauslastung, Bandbreiteninformationen und Speicherauslastung, sind über Azure Monitor verfügbar.
  • Log Analytics bietet Protokollaggregation, um Informationen in allen Container Apps-Umgebungen zu sammeln.

Zuverlässigkeit

Zuverlässigkeit stellt sicher, dass Ihre Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie in der Überblick über die Säule „Zuverlässigkeit“.

Container Apps versucht, fehlerhafte Container neu zu starten, und abstrahiert Hardware für Benutzer. Microsoft behandelt vorübergehende Fehler und stellt eine hohe Verfügbarkeit von Sicherungsberechnungsressourcen sicher.

Die Leistungsüberwachung über Log Analytics und Azure Monitor ermöglicht die Evaluierung der Anwendung unter Last. Metriken und Protokollierungsinformationen bieten Ihnen die Daten, die erforderlich sind, um Trends zu erkennen und somit Fehler zu verhindern und die Ursachenanalyse von Fehlern auszuführen, wenn diese auftreten.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Geheimnisse

  • Ihre Container-App kann vertrauliche Werte als Geheimnisse speichern und abrufen. Nachdem ein Geheimnis für die Container-App definiert wurde, kann es von der Anwendung sowie von allen zugehörigen Skalierungsregeln verwendet werden. Wenn Sie im Modus mit mehreren Überarbeitungen ausgeführt werden, teilen alle Überarbeitungen dieselben geheimen Schlüssel. Da Geheimnisse als Änderung des Anwendungsbereichs betrachtet werden, wird keine neue Revision erstellt, wenn Sie den Wert eines Geheimnisses ändern. Für alle ausgeführten Überarbeitungen zum Laden des neuen geheimen Werts müssen Sie sie jedoch neu starten. In diesem Szenario werden Anwendungs- und Umgebungsvariablenwerte verwendet.
  • Umgebungsvariablen: Vertrauliche Werte können sicher auf Anwendungsebene gespeichert werden. Wenn Umgebungsvariablen geändert werden, erstellt die Container-App eine neue Überarbeitung.

Netzwerksicherheit

  • Eingang: Um den externen Zugriff einzuschränken, wird nur der Datenerfassungsdienst für den externen Eingang konfiguriert. Auf die Back-End-Dienste kann nur über das interne virtuelle Netzwerk in der Container Apps-Umgebung zugegriffen werden. Stellen Sie Dienste nur bei Bedarf über das Internet zur Verfügung. Da diese Architektur die integrierte externe Eingangsfunktion verwendet, bietet diese Lösung nicht die Möglichkeit, Ihren Eingangspunkt hinter einer Webanwendungsfirewall (WAF) vollständig zu positionieren oder sie in DDoS-Schutzpläne einzuschließen. Alle Workloads, die über das Web zugänglich sind, sollten mit einer Web Application Firewall versehen sein.
  • Virtuelles Netzwerk: Wenn Sie eine Umgebung erstellen, können Sie ein benutzerdefiniertes virtuelles Netzwerk bereitstellen. Andernfalls wird ein virtuelles Netzwerk automatisch von Microsoft generiert und verwaltet. Sie können dieses von Microsoft verwaltete virtuelle Netzwerk nicht bearbeiten, z. B. durch Hinzufügen von Netzwerksicherheitsgruppen (NSGs) oder Erzwingen des Tunnelingdatenverkehrs zu einer Ausgangsfirewall. In diesem Beispiel wird ein automatisch generiertes virtuelles Netzwerk verwendet.

Weitere Optionen für die Netzwerktopologie finden Sie unter Netzwerkarchitektur in Azure Container Apps.

Workloadidentitäten

  • Container Apps unterstützt verwaltete Microsoft Entra-Identitäten, sodass Ihre App sich bei anderen mit Microsoft Entra ID geschützten Ressourcen wie Azure Key Vault authentifizieren kann, ohne dass Anmeldeinformationen in Ihrer Container-App verwaltet werden müssen. Eine Container-App kann vom System zugewiesene, benutzerseitig zugewiesene oder beide Arten verwalteter Identitäten verwenden. Für Dienste, die keine AD-Authentifizierung unterstützen, sollten Sie Geheimnisse in Azure Key Vault speichern und eine verwaltete Identität für den Zugriff auf die Geheimnisse verwenden.
  • Verwenden Sie verwaltete Identitäten für den Zugriff auf Azure Container Registry. Mit Azure Container-Apps können Sie eine andere verwaltete Identität für Ihre Workload verwenden als für den Containerregistrierungszugriff. Dieser Ansatz wird empfohlen, um eine präzise Zugriffssteuerung über Ihre verwalteten Identitäten zu erreichen.

Kostenoptimierung

  • Azure Container Apps besitzt ein nutzungsbasiertes Preismodell.
  • Azure Container Apps unterstützt die Skalierung auf Null. Wenn eine Container-App auf Null skaliert wird, fallen keine Gebühren an.
  • In diesem Szenario sind Azure Cosmos DB und Azure Cache for Redis die Hauptkostenfaktoren.

Bereitstellen dieses Szenarios

Führen Sie die Schritte im README.md im Beispielszenario-Repository für Azure-Container-Apps aus.

Beitragende

Microsoft pflegt diesen Artikel. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Nächste Schritte