Blog
Azure Container Apps - Vereinfachung der Container-Bereitstellung ohne die Komplexität von Kubernetes

Einer der Vorteile der Teilnahme am Microsoft MVP-Programm ist der Zugang zu privaten Vorabversionen von Diensten und Funktionen.
Im August 2021 erhielt ich die Zusage, einen weiteren Azure-Dienst, den Microsoft für die Ausführung von Containern entwickelte, zu testen und Feedback zu den so genannten "Azure Worker Apps" zu geben. Die erste Frage, die mir in den Sinn kam, als ich von diesem Dienst erfuhr, war: "Warum führt Microsoft einen weiteren Dienst für die Ausführung von Containern ein?"
Das war in der Tat mein Feedback an das Team: Nehmen Sie in die Dokumentation den Grund auf, warum der Dienst erstellt wurde und wann er anstelle der bestehenden Optionen verwendet werden sollte.
Dieser Dienst ist jetzt unter dem Namen Azure Container Apps bekannt. Bevor wir Azure Container Apps vorstellen, wollen wir kurz auf die Anwendungsfälle der anderen Azure Services eingehen.
Von einfach bis komplex: Vergleich der Azure-Containerdienste
Azure Container Instances (ACI) ist die einfachste und schnellste Möglichkeit, einen Container in Azure auszuführen. Sie bietet eine Lösung für alle, die Container ohne den Overhead der Orchestrierung starten müssen. Es ist ideal für einfache Anwendungen, Aufgaben oder Jobs, die einen einzelnen Container für den kurzfristigen Betrieb benötigen. ACI ist jedoch möglicherweise nicht die beste Lösung für Anwendungen, die eine automatische Skalierung, persistenten Speicher oder eine komplexere Orchestrierung benötigen, insbesondere für Webanwendungen, die von benutzerdefinierten Domainnamen, SSL-Zertifikaten und kontinuierlichen Bereitstellungspipelines profitieren könnten.
An dieser Stelle kommt Azure Web Apps for Containers ins Spiel. Er baut auf der Einfachheit des Containerbetriebs auf, indem er die Webanwendungs-Hosting-Funktionen von Azure Web Apps hinzufügt. Dieser Service eignet sich besser für das Hosting von Webanwendungen und APIs in Containern und bietet sofort einsetzbare Funktionen wie benutzerdefinierte Domains, SSL/TLS-Zertifizierungen und Skalierung. Außerdem lässt er sich nahtlos mit Azure DevOps und GitHub für kontinuierliche Integration und Bereitstellung integrieren. Azure Web Apps for Containers bietet zwar eine speziellere Umgebung für das Webhosting, aber möglicherweise nicht die Granularität der Kontrolle oder Skalierbarkeit, die für komplexere, auf Microservices basierende Architekturen oder Anwendungen mit hohen Anforderungen an die Anpassung und Skalierbarkeit erforderlich ist.
Hier kommt Azure Kubernetes Service (AKS) ins Spiel, der die Komplexität der Ausführung großer, auf Microservices basierender Anwendungen angeht. AKS bietet eine vollständige Kubernetes-Orchestrierung und eignet sich damit für die Bereitstellung, Verwaltung und Skalierung komplexer Anwendungen über mehrere Container hinweg. Mit AKS profitieren Sie von den Vorteilen von Kubernetes, ohne die Kubernetes-Infrastruktur selbst verwalten zu müssen. Dieser Service ist ideal für Szenarien, in denen Sie eine erweiterte Orchestrierung, automatische Skalierung und Koordination mehrerer Container benötigen. AKS füllt die Lücken, wenn eine Anwendung über die Möglichkeiten von ACI und Azure Web Apps for Containers hinauswächst, und bietet eine robuste Lösung für Unternehmen und Entwickler, die die volle Leistung der Kubernetes-Orchestrierung für ihre containerisierten Anwendungen benötigen.
Wann sollte ich Azure Container Apps verwenden?
Wenn Sie sich etwas mit Kubernetes auskennen, werden Sie mir vielleicht zustimmen, dass es eine erhebliche Lernkurve gibt. Es ist eine Sache, eine "Hallo Welt"-Anwendung bereitzustellen. Eine ganz andere Sache ist es, Anwendungen in der realen Welt unter Beachtung der Best Practices zu betreiben.
Stellen Sie sich nun Teams vor, die gerade erst anfangen und niemanden haben, der Erfahrung mit der Verwaltung eines Kubernetes-Clusters hat. Die Einrichtung und Verwaltung von Netzwerkrichtlinien, Cluster-Rollen, Cluster-Rollen-Bindungen, Persistent Volumes (PVs) und Persistent Volume Claims (PVCs) kann für diejenigen, die mit den operativen Details von Kubernetes nicht vertraut sind, eine entmutigende Aufgabe sein.
Hier kommt Azure Container Apps ins Spiel, ein vollständig verwalteter, serverloser Containerdienst von Microsoft Azure, der es Teams ermöglicht, containerisierte Anwendungen bereitzustellen und auszuführen, ohne sich um die Verwaltung der zugrundeliegenden Infrastruktur (z.B. Kubernetes Cluster) kümmern zu müssen.
Azure Container Apps Komponenten
Azure Container Apps besteht aus mehreren Schlüsselkomponenten, die zusammenarbeiten, um eine nahtlose und flexible serverlose Container-Hosting-Umgebung bereitzustellen. Sehen wir uns nun einige der Komponenten an, aus denen Azure Container Apps besteht:
Umwelt
Die erste Komponente von Azure Container Apps ist die Umgebung. Sie ist eine sichere und isolierte Grenze, in der Sie gemeinsame Einstellungen für Netzwerke, Protokollierung und andere Dienste definieren, die Ihre Container Apps nutzen können. Stellen Sie sich diese Umgebung als die Entwicklungs- oder Produktionsumgebung für eine Anwendung vor, die Sie ausführen möchten.
Container Apps
Als nächstes die Komponente "Container-App". Sie beginnen mit der Auswahl der zu verwendenden Container-Images. Das sind die Docker-kompatiblen Container, die Ihren Anwendungscode und seine Abhängigkeiten enthalten. Sie können Container aus öffentlichen Registraturen wie Docker Hub oder privaten Registraturen wie Azure Container Registry verwenden. Außerdem konfigurieren Sie sie mit den erforderlichen Befehlen, Ports und Umgebungsvariablen sowie mit der Menge an CPU und Speicher, die den Anforderungen der Anwendung entspricht.
Container
Dies sind die Docker-kompatiblen Container, die Ihren Anwendungscode und seine Abhängigkeiten enthalten. Sie können Container aus öffentlichen Registern wie Docker Hub oder privaten Registern wie Azure Container Registry verwenden.
Replikate
Ein Replikat ist eine einzelne Instanz einer containerisierten Anwendung. Sie können mehrere Instanzen gleichzeitig laufen lassen, um eine bessere Lasthandhabung und Verfügbarkeit zu erreichen. Wenn Dapr in Azure Container Apps integriert ist, umhüllt es jede Replik mit einem separaten Container (einem sogenannten Sidecar), der neben Ihrem Anwendungscontainer läuft. Dieser Dapr-Sidecar verbessert Ihre Anwendung, indem er einfachen Zugriff auf eine Reihe von Funktionen eines verteilten Systems wie Zustandsverwaltung, Nachrichtenübermittlung und Dienstaufrufe bietet, ohne dass Änderungen an Ihrem Anwendungscode erforderlich sind.
Wenn Sie Ihre Anwendung skalieren, indem Sie die Anzahl der Replikate entsprechend der Nachfrage erhöhen, wird jedes neue Replikat automatisch mit einem eigenen Dapr-Sidecar gepaart. Dadurch wird sichergestellt, dass alle Instanzen Ihrer Anwendung die von Dapr angebotenen Microservices-Komponenten und -Muster einheitlich nutzen können, was eine nahtlose Skalierbarkeit, Ausfallsicherheit und Interoperabilität in Ihrer Microservices-Architektur ermöglicht.
Revisionen
Revisionen sind unveränderliche Schnappschüsse der Konfiguration und des Codes Ihrer Container-App zu einem bestimmten Zeitpunkt. Jedes Mal, wenn Sie eine Container App bereitstellen oder aktualisieren, erstellt Azure Container Apps eine neue Revision. Dies unterstützt Rollback-Szenarien und die Aufteilung des Datenverkehrs zwischen verschiedenen Versionen Ihrer App für Canary-Einsätze oder A/B-Tests.
Mehr Einstellungen
Azure Container Apps unterstützt sowohl HTTP- als auch HTTPS-Ingress. Der Ingress steuert, wie der externe Datenverkehr Ihre Container Apps erreicht. Hier können Sie benutzerdefinierte Domains, SSL/TLS-Zertifikate, Authentifizierung und Autorisierung konfigurieren.
Es können auch Netzwerkregeln definiert werden. Sie helfen Ihnen bei der Verwaltung der internen Kommunikation Ihrer Anwendung und der Kommunikation mit der Außenwelt, einschließlich der Sicherung von Verbindungen und der Integration mit privaten Netzwerken für mehr Sicherheit.
Sie können auch Azure Storage-Konten als Volumes in Ihren Container einbinden, so dass Ihre Anwendung auf persistenten Speicher zugreifen kann.
Wenn die Anwendung Geheimnisse verwendet, können Sie diese entweder aus Azure Key Vault in Ihre Container injizieren oder direkt in den Einstellungen der Container-App definieren.
Es gibt viele weitere Einstellungen, die Sie für die Komponente Container App definieren können. Sie können eine verwaltete Identität für den sicheren Zugriff auf andere Azure-Dienste zuweisen, die Integration mit Azure Monitor für die Protokollierung konfigurieren, Liveness- und Readiness-Probes zur Überwachung des Zustands Ihrer Container einrichten, Bereitstellungsstrategien steuern und vieles mehr.
Erstellen Ihrer Azure Container Apps
Hier geht es in erster Linie darum, die ersten Schritte zu veranschaulichen und sie Anfängern oder allen, die die Grundlagen der Containerbereitstellung mit Azure Container Apps erkunden möchten, zugänglich zu machen. Fortgeschrittenere Szenarien und Funktionen werde ich in zukünftigen Artikeln behandeln.
Um ein Beispiel für eine Azure Container App zu erstellen, müssen wir zunächst einige Variablen definieren.
RESOURCE_GROUP='rg-aca-demo'
LOCATION='eastus'
ENVIRONMENT_NAME='aca-env'
APP_NAME='aca-app'
CONTAINER_IMAGE='mcr.microsoft.com/k8se/quickstart:latest'
Im Folgenden finden Sie den Hauptbefehl, der Azure CLI anweist, eine neue Azure Container Apps-Umgebung zu erstellen.
az containerapp env create
--name $ENVIRONMENT_NAME
--resource-group $RESOURCE_GROUP
--location $LOCATION
Als Nächstes stellen wir unsere containerisierte Anwendung bereit, indem wir eine neue Container-App innerhalb der soeben erstellten Container-App-Umgebung erstellen. Mit diesem Befehl wird die Anwendung so konfiguriert, dass sie von außen zugänglich ist, indem der externe Ingress auf Port 80 aktiviert wird.
az containerapp create
--name $APP_NAME
--resource-group $RESOURCE_GROUP
--environment $ENVIRONMENT_NAME
--image $CONTAINER_IMAGE
--target-port 80
--ingress external
--query properties.configuration.ingress.fqdn
Die Option --query am Ende unseres Befehls wird verwendet, um den Fully Qualified Domain Name (FQDN) des Ingress-Points unserer Anwendung zu extrahieren. Dadurch erhalten wir eine URL, über die unsere Anwendung für die Öffentlichkeit zugänglich ist.
Um auf unsere Anwendung zuzugreifen, müssen Sie nur noch diese URL in einem Webbrowser öffnen. Auf diese Weise gelangen wir direkt zur Oberfläche unserer laufenden Azure Container App:
PS: Vergessen Sie nicht, alles zu löschen, wenn Sie mit Ihren Tests fertig sind!
Fazit
Azure Container Apps entwickelt sich ständig weiter und bietet mehr als nur eine optimierte Bereitstellung und Verwaltung von containerisierten Anwendungen.
Es überbrückt die einst entmutigende Lücke zwischen der Komplexität der Kubernetes-Orchestrierung und der steigenden Nachfrage nach zugänglichen, serverlosen Container-Lösungen und bietet gleichzeitig die meisten Funktionen und die Leistungsfähigkeit der viel komplexeren Kubernetes-Plattform.
Seit unserer ersten Besprechung in Xpirit Magazine Ausgabe #12 hat Microsoft bemerkenswerte Verbesserungen vorgenommen, darunter die Integration von Managed Identities, die die Sicherheit erhöht und den Zugriff auf Azure-Ressourcen vereinfacht. Außerdem hat Microsoft die Erfahrung für Entwickler verbessert, indem es bessere Tools für die Untersuchung von laufenden Containern anbietet.
Die Einführung von GPU-beschleunigten Containern, die derzeit in der Vorschau zu sehen sind, öffnet die Tür zu aufregenden neuen Möglichkeiten, insbesondere für Unternehmen, die fortschrittliche KI- und maschinelle Lernmodelle, wie z.B. Generative Pre-trained Transformers (GPTs), in ihrer Cloud-Infrastruktur einsetzen möchten. Diese Fortschritte stellen nicht nur einen Sprung in den technologischen Möglichkeiten dar, sondern stehen auch im Einklang mit dem Leitbild von Microsoft, "jeden Menschen und jedes Unternehmen auf der Welt zu befähigen, mehr zu erreichen". Durch die Demokratisierung des Zugangs zu High-Performance-Computing über GPU-beschleunigte Container ermöglicht Microsoft Azure Unternehmen jeder Größe den Zugang zu fortschrittlichen Computing-Ressourcen, die zuvor unerreichbar waren. Dies ermöglicht es Unternehmen, innovativ zu sein, komplexe Probleme zu lösen und Lösungen und Dienste bereitzustellen, die einen bedeutenden Einfluss auf die Gesellschaft und die Wirtschaft haben können.
Mit Verbesserungen in Bereichen wie dem erweiterten Traffic Shaping und flexibleren Hardware-Konfigurationsoptionen kann Azure Container Apps jetzt eine breitere Palette von Anwendungsanforderungen unterstützen und spiegelt damit das Feedback und die sich entwickelnden Bedürfnisse der Benutzerbasis wider. Diese Entwicklung macht Azure Container Apps zu einer noch überzeugenderen Wahl für Teams, die sich auf die Entwicklung und den Einsatz von wirkungsvollen Anwendungen konzentrieren. Mit Azure Container Apps sind Unternehmen gut gerüstet, um im digitalen Zeitalter voranzukommen und eine Plattform zu nutzen, die sich der technologischen Landschaft anpasst und mit ihr wächst.
Dieser Artikel ist Teil von XPRT.#16. Laden Sie das Magazin hier herunter.
Verfasst von
Thiago Custodio
Thiago Custodio is a Microsoft MVP and Azure Application Modernization Consultant renowned for his passion for learning and sharing knowledge. With a talent for using creativity to solve problems, he draws inspiration from thinkers who challenge conventional norms. Central to his happiness is his family, who supports and motivates him in all his endeavors. Thiago's work continues to impact the technology community, driving innovation and growth.
Unsere Ideen
Weitere Blogs
Contact




