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 Ihre Codeprojekt in einer Funktions-App bereitstellen, die auf Linux ausgeführt wird, wird das Projekt in einem automatisch für Sie erstellten Container ausgeführt. Dieser Container wird von Functions verwaltet.
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
Wenn Sie eigene Container erstellen, 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.
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. Auf diese Weise können Sie Ihre Apps mit den gleichen Functions-Tools und -Seiten im Azure-Portal verwalten. Verwenden Sie Azure Container Apps, um Ihre Funktions-App-Container zu hosten, wenn Sie Ihre ereignisgesteuerten Funktionen in Azure in der gleichen Umgebung ausführen müssen wie andere Microservices, APIs, Websites, Workflows oder containergehostete Programme. 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 Hostingmodell mit nutzungsbasierter Bezahlung bereit. Sie können mithilfe von Workloadprofilen auch dedizierte Hardware und sogar GPUs anfordern. Empfohlene Hostingoption zum Ausführen von containerisierten Funktions-Apps in 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. |
Azure-Funktionen | Sie können Ihre containerisierten Funktions-Apps in Azure Functions hosten, indem Sie den Container entweder in einem Elastic Premium-Plan oder einem Dedicated-Plan ausführen. 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. Denken Sie daran, dass das Ausführen Ihrer Container-Funktions-Apps auf Kubernetes, entweder mithilfe von KEDA oder durch direkte Bereitstellung, ein Open-Source-Angebot ist, das Sie kostenlos nutzen können, und das die bestmögliche Unterstützung durch Mitwirkende und die Community bietet. Sie sind dafür verantwortlich, Ihre eigenen Funktions-App-Container in einem Cluster zu verwalten, auch wenn die Bereitstellung in Azure Kubernetes Service (AKS) erfolgt. |
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 |
---|---|---|---|---|---|
Produktsupport | Ja | Keine | Ja | Ja. | No |
Integration in das Functions-Portal | Ja. | Ohne | Ja. | Ja. | Ohne |
Ereignisgesteuerte Skalierung | Ja5 | Ja (Skalierungsregeln) | Ja | Nr. | No |
Maximale Skalierung (Instanzen) | 1.0001 | 1.0001 | 1002 | 10–303 | Variiert je nach Cluster |
Instanzen mit Skalierung auf null | Ja. | Ja. | No | No | KEDA |
Ausführungszeitlimit | Unbegrenzt6 | Unbegrenzt6 | Unbegrenzt7 | Unbegrenzt8 | Keine |
Bereitstellung der Core-Tools | func azurecontainerapps |
No | Nr. | No | 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 kubctl ) |
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 | No | Ja |
Konfigurierbarer Arbeitsspeicher/CPU-Anzahl | Ja. | Ja. | No | Ohne | Ja. |
Kostenlose Option | Ja | Ja | Nr. | Nr. | No |
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: beschränkt auf alphanumerische Zeichen und Bindestriche Darf nicht mit einem Bindestrich beginnen oder enden. | Weniger als 64 Zeichen: beschränkt auf alphanumerische Zeichen und Bindestriche 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. |
- 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.
- 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.
- Spezifische Grenzwerte für die verschiedenen Optionen des App Service-Plans finden Sie unter App Service-Grenzwerte.
- Featureparität ist ein Ziel des integrierten Hostings in Azure Container Apps.
- 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.
- Wenn die Mindestanzahl von Replikaten auf Null festgelegt ist, hängt das Standardtimeout von den spezifischen Triggern ab, die in der App verwendet werden.
- 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.
- Hierfür muss der App Service-Plan auf Always On festgelegt werden. Während Plattformupdates wird eine Toleranzperiode von 10 Minuten gewährt.
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 |
Erstellen und Bereitstellen von Funktionen in Azure Arc-fähigen Kubernetes | Erstellen Ihrer ersten Azure Functions-Container in Azure Arc (Vorschau) |