Freigeben über


Linux Container-Support in Azure Functions

Wenn Sie planen, Ihre individuellen Funktionen in Azure Functions zu entwickeln und auszuführen, konzentrieren Sie sich meist auf den Code selbst. Azure Functions macht es leicht, nur Ihr Codeprojekt in einer Funktions-App in Azure bereitzustellen. Wenn Sie Ihr Projekt in einer Linux-Funktions-App bereitstellen, wird Ihr Code in einem Container ausgeführt, der für Sie automatisch erstellt und nahtlos in Funktionenverwaltungstools integriert wird.

Functions unterstützt auch Funktions-App-Bereitstellungen in Containern. In einer Containerbereitstellung erstellen Sie Ihre eigene Funktions-App-Instanz in einem lokalen Docker-Container durch ein unterstütztes Basis-Image. Sie können dann diese Container -Funktions-App in einer Hosting-Umgebung in Azure bereitstellen. Die Erstellung Ihres eigenen Funktions-App-Containers ermöglicht die Personalisierung oder andernfalls die Steuerung der sofortigen Runtime-Umgebung Ihres Funktions-Codes.

Wichtig

Beim Erstellen eigener Container müssen Sie das Basisimage Ihres Containers auf das neueste unterstützte Basisimage aktualisieren. Unterstützte Basisimages für Azure Functions sind sprachspezifisch und sind unter Repositorys für Azure Functions-Basisimages verfügbar.

Das Functions-Team ist bestrebt, monatliche Updates für diese Basisimages zu veröffentlichen. Regelmäßige Updates umfassen die neuesten Updates der Nebenversion und Sicherheitskorrekturen für Functions-Runtime und -Sprachen. Sie sollten Ihren Container regelmäßig aus dem neuesten Basisimage aktualisieren und die aktualisierte Version Ihres Containers erneut bereitstellen. Weitere Informationen finden Sie unter Verwalten von benutzerdefinierten Containern.

Containerhosting-Optionen

Es gibt verschiedene Möglichkeiten, Ihre Container-Funktions-Apps in Azure zu hosten:

Hostingoption Vorteile
Azure-Container-Apps Azure Functions bietet integrierte Unterstützung für die Entwicklung, Bereitstellung und Verwaltung containerisierter Funktions-Apps in Azure Container Apps. Mit dieser Integration können Sie Ihre Apps mit den gleichen Funktionen-Tools und -Seiten im Azure-Portal verwalten. Verwenden Sie Azure Container-Apps, um Ihren Funktions-App-Container in derselben Umgebung wie andere Microservices, APIs, Websites, Workflows oder andere in Container gehostete Programme zu hosten. Container Apps-Hosting ermöglicht die Ausführung Ihrer Funktionen in einer verwalteten Kubernetes-basierten Umgebung mit integrierter Unterstützung für Open-Source-Überwachung, mTLS, Dapr und KEDA. Unterstützt die Skalierung auf null und stellt ein serverloses Hostingmodell mit nutzungsbasierter Bezahlung bereit. Sie können mithilfe von Workloadprofilen auch dedizierte Hardware und sogar GPUs anfordern. Empfohlene Hostingoption für containerisierte Funktions-Apps n Azure.
Kubernetes-Cluster mit Azure Arc-Unterstützung (Vorschau) Sie können Ihre Funktions-Apps in Azure Arc-fähigen Kubernetes-Clustern als Nur-Code-Bereitstellung oder in einem personalisierten Linux-Container hosten. Azure Arc ermöglicht den Anhang von Kubernetes-Clustern, damit Sie diese in Azure verwalten und konfigurieren können. Das Hosten von Azure Functions-Containern in Kubernetes-Clustern mit Azure Arc-Unterstützung befindet sich derzeit in der Vorschauphase. Weitere Informationen finden Sie unter Arbeiten mit Containern und Azure Functions.
Azure-Funktionen Sie können Ihre containerisierten Funktions-Apps in Azure Functions hosten, indem Sie den Container in einem Elastic Premium - oder einem App Service(Dedicated) -Plan ausführen. Verwenden Sie Container-Apps-Hosting für umfassende Containerunterstützung aus Container-Apps. Premium-Plan-Hosting bietet Ihnen die Vorteile der dynamischen Skalierung. Ziehen Sie die Verwendung des dedizierten Plan-Hostings in Betracht, um bereits vorhandene ungebrauchte App Service-Plan-Ressourcen zu nutzen.
Kubernetes Da Azure Functions-Runtime Flexibilität bzgl. des Hostings bietet, können Sie Ihre Funktions-App-Container so direkt in Kubernetes-Clustern hosten und verwalten. KEDA (Kubernetes-based Event Driven Autoscaling, [Kubernetes-basierte ereignisgesteuerte automatische Skalierung]) lässt sich nahtlos an die Azure Functions-Runtime und -Tools koppeln, um eine ereignisgesteuerte Skalierung in Kubernetes bereitzustellen. Wichtig: Kubernetes-Hosting Ihrer containerisierten Funktions-Apps, entweder durch den Einsatz von KEDA oder durch direkte Bereitstellung, ist ein Open-Source-Projekt, das Sie kostenlos nutzen können. Best-Effort-Unterstützung für dieses Hostingszenario wird nur von Mitwirkenden und der Community bereitgestellt. Sie sind dafür verantwortlich, Ihre eigenen Funktions-App-Container in einem Cluster zu verwalten, auch wenn Sie sie in Azure Kubernetes Service (AKS) bereitstellen.

Vergleich der Featureunterstützung

Wie umfassend die verschiedenen Features und Verhaltensweisen von Azure Functions unterstützt werden, wenn Ihre Funktions-App in einem Container ausgeführt wird, hängt von der ausgewählten Containerhostoption ab.

Feature/Verhalten Container Apps (integriert) Container Apps (direkt) Premium-Plan Dedizierter Plan Kubernetes (Englisch)
Produktsupport Ja Nein Ja Ja. Nein
Integration in das Functions-Portal Ja. Ohne Ja. Ja. Ohne
Ereignisgesteuerte Skalierung Ja5 Ja (Skalierungsregeln) Ja Nein Nein
Maximale Skalierung (Instanzen) 1.0001  1.0001  1002  10–303  Variiert je nach Cluster
Instanzen mit Skalierung auf null Ja. Ja. Nein Nein KEDA
Ausführungszeitlimit Unbegrenzt6 Unbegrenzt6 Unbegrenzt7 Unbegrenzt8 Keine
Bereitstellung der Core-Tools func azurecontainerapps Nein Nein Nein func kubernetes 
Revisionen Ohne Ja. Ohne Ohne Ohne
Bereitstellungsslots  Ohne Ohne Ja. Ja. Ohne
Protokollstreaming  Ja. Ja  Ja. Ja. Ohne
Konsolenzugriff  Derzeit nicht verfügbar4  Ja Ja (mit Kudu) Ja (mit Kudu) Ja (in Pods mit kubectl)
Ausgleich beim Kaltstart Maximale Anzahl Replikate Skalierungsregeln  Jederzeit bereite/Vorab aufgewärmte Instanzen  Nicht zutreffend
App Service-Authentifizierung Derzeit nicht verfügbar4  Ja. Ja. Ja. Ohne
Benutzerdefinierte Domänennamen  Derzeit nicht verfügbar4  Ja. Ja. Ja. Ohne
Zertifikate mit privaten Schlüsseln  Derzeit nicht verfügbar4  Ja. Ja. Ja. Ohne
Virtuelle Netzwerke Ja. Ja. Ja. Ja. Ja.
Verfügbarkeitszonen Ja. Ja. Ja. Ja. Ja.
Diagnostik Derzeit nicht verfügbar4  Ja Ja  Ja  Ohne
Dedizierte Hardware Ja (Workloadprofile) Ja (Workloadprofile) Ohne Ja. Ja
Dedizierte GPUs Ja (Workloadprofile) Ja (Workloadprofile) Ohne Nein Ja
Konfigurierbarer Arbeitsspeicher/CPU-Anzahl Ja. Ja. Nein Ohne Ja.
Kostenlose Option Ja Ja Nein Nein Nein
Preisübersicht Abrechnung über Container Apps Abrechnung über Container Apps Abrechnung über Premium-Plan Abrechnung über Dedicated-Plan AKS – Preise
Anforderungen an Dienstnamen 2–32 Zeichen: beschränkt auf Kleinbuchstaben, Ziffern und Bindestriche. Muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden. 2–32 Zeichen: beschränkt auf Kleinbuchstaben, Ziffern und Bindestriche. Muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden. Weniger als 64 Zeichen: auf alphanumerische Zeichen und Bindestriche beschränkt. Darf nicht mit einem Bindestrich beginnen oder enden. Weniger als 64 Zeichen: auf alphanumerische Zeichen und Bindestriche beschränkt. Darf nicht mit einem Bindestrich beginnen oder enden. Weniger als 253 Zeichen: beschränkt auf alphanumerische Zeichen und Bindestriche. Muss mit einem alphanumerischen Zeichen beginnen und enden.
  1. Bei Container-Apps ist die Standardeinstellung 10 Instanzen, Sie können jedoch die maximale Anzahl von Replikaten festlegen. Der Höchstwert beträgt 1.000. Diese Einstellung wird berücksichtigt, solange genügend Kernkontingent verfügbar ist. Wenn Sie Ihre Funktions-App im Azure-Portal erstellen, sind Sie auf 300 Instanzen beschränkt.
  2. In einigen Regionen können Linux-Apps in einem Premium-Plan auf 100 Instanzen skaliert werden. Weitere Informationen finden Sie im Artikel zum Premium-Plan.
  3. Spezifische Grenzwerte für die verschiedenen Optionen des App Service-Plans finden Sie unter App Service-Grenzwerte.
  4. Featureparität ist ein Ziel des integrierten Hostings in Azure Container Apps.
  5. Erfordert KEDA; wird von den meisten Triggern unterstützt. Weitere Informationen dazu, welche Trigger die ereignisgesteuerte Skalierung unterstützen, finden Sie unter Überlegungen zum Hosten in Container Apps.
  6. Wenn die Mindestanzahl von Replikaten auf Null festgelegt ist, hängt das Standardtimeout von den spezifischen Triggern ab, die in der App verwendet werden.
  7. Es wird kein Timeout für die maximale Ausführungsdauer erzwungen. Die Toleranzperiode für eine Funktionsausführung beträgt jedoch 60 Minuten während der Abskalierung und 10 Minuten während Plattformupdates.
  8. Hierfür muss der App Service-Plan auf Always On festgelegt werden. Während Plattformupdates wird eine Toleranzperiode von 10 Minuten gewährt.

Verwalten von benutzerdefinierten Containern

Beim Erstellen eigener Container müssen Sie das Basisimage Ihres Containers auf das neueste unterstützte Basisimage aktualisieren. Unterstützte Basisimages für Azure Functions sind sprachspezifisch und sind unter Repositorys für Azure Functions-Basisimages verfügbar.

Das Functions-Team ist bestrebt, monatliche Updates für diese Basisimages zu veröffentlichen. Regelmäßige Updates umfassen die neuesten Updates der Nebenversion und Sicherheitskorrekturen für Functions-Runtime und -Sprachen. Sie sollten Ihren Container regelmäßig aus dem neuesten Basisimage aktualisieren und die aktualisierte Version Ihres Containers erneut bereitstellen.

Wenn das Basisimage von Funktionen verwaltet wird, z. B. in einer Standardbereitstellung unter Linux, wird Ihre App automatisch von den regelmäßigen Basisimageupdates aktualisiert, die vom Funktionsteam veröffentlicht wurden. Bei solchen nicht angepassten Containern wird Ihre App aktualisiert, um sie im Basisimage mit der neuen Nebenversion oder gepatchten Version der Hostruntime auszuführen.

Wenn Sie Ihre eigene containerisierte App mit einem benutzerdefinierten Image erstellen oder bereitstellen, müssen Sie sicherstellen, dass Ihr benutzerdefiniertes Image bei den veröffentlichten Basisimages auf dem neuesten Stand bleibt. Zusätzlich zu neuen Features und Verbesserungen können diese Basisimageupdates auch Sicherheitsupdates enthalten, die für Ihre App von entscheidender Bedeutung sind. Um sicherzustellen, dass Ihre App geschützt ist, stellen Sie sicher, dass Sie auf dem neuesten Stand bleiben.

In einigen Fällen müssen wir Änderungen auf Plattformebene vornehmen, was bedeuten könnte, dass eine App in einem benutzerdefinierten Container mit einem alten Basisimage möglicherweise nicht mehr ordnungsgemäß funktioniert. Bei solchen wichtigen Änderungen werden aktualisierte Bilder bereits im Voraus bereitgestellt, sodass Apps, die regelmäßige Updates verwenden, nicht negativ beeinträchtigt werden. Um potenzielle Probleme mit Ihren Apps zu vermeiden, die in benutzerdefinierten Containern ausgeführt werden, stellen Sie sicher, dass Sie nicht zu weit hinter die neueste Nebenversion fallen. Wenn bei einem Supportfall festgestellt wird, dass Ihre App Probleme hat, da sie sich auf einer älteren oder nicht unterstützten Version befindet, fordern wir an, dass Sie Ihren Container auf die neueste Basisimageversion aktualisieren, bevor Sie den Support fortsetzen.

Erste Schritte

Verwenden Sie diese Links, um mit der Verwendung von Azure Functions in Linux-Containern loszulegen:

Ich möchte... Siehe Artikel:
Meine ersten Container-Funktionen erstellen Erstellen einer Funktions-App in einem lokalen Linux-Container
Erstellen und Bereitstellen von Funktionen in Azure Container Apps Erstellen Ihrer ersten containerisierten Funktionen in Azure Container Apps
Erstellen und Bereitstellen von Container-Funktionen in Azure Functions Erstellen Ihrer ersten containerisierten Azure Functions-Funktion