Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Diese Inhalte sind ein Auszug aus dem E-Book „Architecting Cloud Native .NET Applications for Azure“, verfügbar in der .NET-Dokumentation oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.
Cloudnative Anwendungen implementieren in der Regel Dienste, die Container und Orchestrierung nutzen. Es gibt häufig Möglichkeiten, einige der Dienste der Anwendung als Azure Functions verfügbar zu machen. Bei einer cloudnativen App, die in Kubernetes bereitgestellt wird, wäre es jedoch wünschenswert, Azure Functions innerhalb desselben Toolsets zu nutzen. Glücklicherweise können Sie Azure Functions innerhalb von Docker-Containern umschließen und diese mithilfe der gleichen Prozesse und Tools wie die restlichen Kubernetes-basierten Apps bereitstellen.
Wann ist es sinnvoll, Container mit serverlosem Computing zu verwenden?
Ihre Azure-Funktion hat keine Kenntnis von der Plattform, auf der sie bereitgestellt wird. Für einige Szenarien haben Sie vielleicht besondere Anforderungen und müssen die Umgebung, in der Ihr Funktionscode ausgeführt wird, anpassen. Sie benötigen ein benutzerdefiniertes Image, das Abhängigkeiten unterstützt, oder eine Konfiguration, die vom Standardimage nicht unterstützt wird. In diesen Fällen ist es sinnvoll, Ihre Funktion in einem benutzerdefinierten Docker-Container bereitzustellen.
Wann sollten Sie keine Container mit Azure Functions verwenden?
Wenn Sie die Verbrauchsabrechnung verwenden möchten, können Sie Ihre Funktion nicht in einem Container ausführen. Und wenn Sie Ihre Funktion in einem Kubernetes-Cluster bereitstellen, profitieren Sie nicht mehr von der integrierten Skalierung, die Azure Functions bietet. Sie müssen die Skalierungsfeatures von Kubernetes verwenden, die weiter oben in diesem Kapitel beschrieben wurden.
Kombinieren von serverlosem Computing und Docker-Containern
Um eine Azure-Funktion in einem Docker-Container zu umschließen, installieren Sie die Azure Functions Core Tools, und führen Sie dann den folgenden Befehl aus:
func init ProjectName --worker-runtime dotnet --docker
Wenn das Projekt erstellt wird, enthält es eine Dockerfile und die auf dotnet konfigurierte Workerlaufzeit. Jetzt können Sie Ihre Funktion lokal erstellen und testen. Erstellen und aktivieren Sie sie mithilfe der Befehle docker build und docker run. Detaillierte Schritte für die Erstellung von Azure Functions mit Docker-Unterstützung finden Sie im Tutorial Erstellen einer Funktion unter Linux mit einem benutzerdefinierten Image.
Kombinieren von serverlosem Computing und Kubernetes mit KEDA
In diesem Kapitel haben Sie gesehen, dass die Plattform von Azure Functions automatisch aufskaliert wird, um der Nachfrage gerecht zu werden. Bei der Bereitstellung von containerisierten Funktionen in AKS verlieren Sie jedoch die integrierte Skalierungsfunktionalität. Zur Rettung kommt Kubernetes-based Event Driven (KEDA) (Kubernetes-basierte Ereignissteuerung). Es ermöglicht eine feinkörnige Automatische Skalierung für event-driven Kubernetes workloads, einschließlich containerisierter Funktionen.
KEDA bietet ereignisgesteuerte Skalierungsfunktionen für die Functions-Runtime in einem Docker-Container. KEDA kann basierend auf der Last von null Instanzen (wenn keine Ereignisse auftreten) auf n instances aufskaliert werden. Es ermöglicht die automatische Skalierung, indem es benutzerdefinierte Metriken für die Kubernetes-Autoskalierung (automatische horizontale Podskalierung) bereitstellt. Durch Verwendung von Functions-Container mit KEDA können serverlose Funktionen in jedem Kubernetes-Cluster repliziert werden.
Es ist erwähnenswert, dass das KEDA-Projekt jetzt von der Cloud Native Computing Foundation (CNCF) verwaltet wird.