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.
Azure Functions on Azure Container Apps bietet eine vollständig verwaltete serverlose Hostingumgebung, die die ereignisgesteuerten Funktionen von Azure-Funktionen mit den robusten Features von Container-Apps zusammenführt. Diese Integration umfasst erweiterte Funktionen wie Kubernetes-basierte Orchestrierung, integrierte automatische Skalierung, die von KEDA (Kubernetes-based Event Driven Autoscaling), Dapr (Distributed Application Runtime)-Integration, GPU-Workloadunterstützung, Sidecar-Unterstützung, VNet-Konnektivität (Virtual Network) und Revisionsmanagement unterstützt wird.
Dieser Ansatz ist nützlich, wenn Ihre Funktionen zusammen mit anderen containerisierten Apps wie Microservices, APIs oder Websites ausgeführt werden sollen. Darüber hinaus kann die Containerisierung Ihrer Funktions-Apps hilfreich sein, wenn Sie benutzerdefinierte Abhängigkeiten benötigen oder die Vorteile von Scale-to-Zero nutzen möchten, um Kosteneinsparungen zu erzielen. Wenn Sie rechenintensive Aufgaben wie KI-Ableitungen ausführen, unterstützt Container-Apps auch GPU-basiertes Hosting über serverlose GPU-Angebote und dedizierte Workloadprofile.
Als integriertes Feature in Azure Container Apps können Sie mithilfe des Ressourcenanbieters Microsoft.App Azure Functions-Images direkt für Azure Container Apps bereitstellen, indem Sie kind=functionapp festlegen, wenn Sie az containerapp create aufrufen. Auf diese Weise erstellte Apps haben Zugriff auf alle Azure-Container-Apps-Features. Wenn Sie die Bereitstellung über das Azure-Portal durchführen, können Sie die Option "Optimize für Functions-App" während des Setups aktivieren. Weitere Informationen finden Sie im Abschnitt "Bereitstellung und Einrichtung" .
Hauptvorteile
Das Container-Apps-Hostingmodell baut auf der Flexibilität von containerisierten Workloads und der ereignisgesteuerten Art von Azure Functions auf. Es bietet die folgenden wichtigsten Vorteile:
- Führen Sie Azure Functions als Container mit benutzerdefinierten Abhängigkeiten und Sprachstapeln aus.
- Skalieren Sie mit KEDA auf null und skalieren Sie auf 1000 Instanzen.Scale in to zero and scale out to 1000 instances using KEDA.
- Sicheres Netzwerk mit vollständiger VNet-Integration.
- Erweiterte Container-App-Features wie mehrere Revisionen, Traffic Splitting, Dapr-Integration und Observability-Komponenten.
- Serverlose und dedizierte GPU-Unterstützung für rechenintensive Workloads.
- Unified Container Apps-Umgebung zum Ausführen von Funktionen neben Microservices, APIs und Hintergrundaufträgen.
In der folgenden Tabelle können Sie die Funktionen in Container-Apps mit dem Flex-Verbrauchsplan vergleichen.
| Merkmal | Container-Anwendungen | Flex-Verbrauchsplan |
|---|---|---|
| Skalierung bis Null | ✅ Ja (über KEDA) | ✅ Ja |
| Max. horizontale Skalierung | 1.000 (Standard 10, konfigurierbar) | 1.000 |
| Always On-Instanzen |
✅ Ja (via minReplicas) |
✅ Ja (über jederzeit bereite Instanzen) |
| VNet-Integration | ✅ Ja | ✅ Ja |
| Benutzerdefinierte Containerunterstützung | ✅ Ja (Bringen Sie Ihr eigenes Bild) | ❌ Begrenzt (kein Eigener Container mitbringen) |
| GPU-Unterstützung | ✅ Ja (über serverloses, dediziertes GPU-Workload-Profil) | ❌ Nein |
| Integrierte Features | Container-Apps-Unterstützung. Zum Beispiel KEDA, Dapr, Multirevisionen, mTLS, Sidecars, Eingangssteuerung und mehr | Funktionenspezifische Merkmale |
| Abrechnungsmodell | Preise für Container-Apps: Verbrauchsplan (vCPU, Speicher, Anfragen) und Dedizierter Plan (auf dem Workload-Profil basierend) | Ausführungszeit + stets bereite Instanzen |
Einen vollständigen Vergleich der Funktionen für Container-Apps mit dem Flex-Verbrauchsplan und allen anderen Plan- und Hostingtypen finden Sie unter "Skalierungs- und Hostingoptionen für Funktionen".
Szenarien
Azure Functions on Container Apps sind ideal für eine vielzahl von Anwendungsfällen, insbesondere wenn Sie ereignisgesteuerte Ausführung, Containerflexibilität oder sichere Integration in andere Dienste benötigen:
- Branchen-APIs: Verpacken von benutzerdefinierten Bibliotheken, Paketen und APIs mit Azure-Funktionen für Branchenanwendungen.
- Migration und Modernisierung: Migration von lokalen Legacy- und/oder Monolithanwendungen zu cloudeigenen Microservices für Container.
- Ereignisgesteuerte Verarbeitung: Behandeln Sie Ereignisse aus Event Grid, Service Bus, Event Hubs und anderen Ereignisquellen mit dem einfachen Funktionen-Programmiermodell.
- AI - GPU-Workloads: Serverlose Workloadverarbeitung von Videos, Bildern, Transkriptionen oder anderen verarbeitungsintensiven Aufgaben, die GPU-Computeressourcen erfordern. Weitere Informationen finden Sie unter Verwenden serverloser GPUs in Azure-Container-Apps.
- Microservices: Integrieren Sie Azure-Funktionen in andere gehostete Container-Apps.
- Benutzerdefinierte Container: Paketfunktionen mit benutzerdefinierten Laufzeiten oder Sidecars.
- Privat-Apps: Sichern Sie interne Funktionen nur mithilfe von VNet und internem Ingress.
- .NET Aspire: Mit der Integration von .NET Aspire mit Azure Functions können Sie ein Azure Functions .NET-Projekt als Teil des .NET Aspire-App-Hosts entwickeln, debuggen und koordinieren. Weitere Informationen zu Azure-Funktionen mit .NET Aspire
- Allgemeine Funktionen: Führen Sie alle unterstützten Standardszenarien für Azure-Funktionen aus (z. B. Zeitgeber, Dateiverarbeitung, Datenbanktrigger).
Bereitstellung und Einrichtung
Um Azure Functions in Azure Container-Apps bereitzustellen, verpacken Sie Ihre Funktionen-App als benutzerdefiniertes Containerimage und stellen sie wie jede andere Container-App mit einem wichtigen Unterschied bereit. Sie müssen die kind=functionapp Eigenschaft festlegen, wenn Sie die Azure CLI- oder ARM/Bicep-Vorlagen verwenden. Ausführliche Schritte und Beispiele finden Sie in der offiziellen Dokumentation zu den ersten Schritten.
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CONTAINER_APP_NAME \
--environment $ENVIRONMENT_NAME \
--image mcr.microsoft.com/k8se/quickstart-functions:latest \
--ingress external \
--target-port 80 \
--kind functionapp \
--query properties.outputs.fqdn
Dieser Befehl gibt die URL Ihrer Funktionen-App zurück. Kopieren Sie diese URL, und fügen Sie sie in einen Webbrowser ein.
Wählen Sie im Azure-Portal die Option "Optimieren für Azure Functions " während der Container-App-Erstellung aus, um das Setup zu optimieren.
Alle Standardbereitstellungsmethoden werden unterstützt, einschließlich:
- Azure CLI
- Azure-Portal
- ARM-Vorlagen / Bicep
- CI/CD-Pipelines (z. B. GitHub-Aktionen, Azure-Pipelines)
Ausführliche Schritte und Beispiele finden Sie in der offiziellen Dokumentation zu den ersten Schritten.
Preise und Abrechnung
Azure Functions on Azure Container Apps folgen dem gleichen Preismodell wie Azure Container Apps. Die Abrechnung basiert auf dem Plantyp, den Sie für Ihre Umgebung auswählen, und dieser kann entweder „Verbrauch“ oder „Dediziert“ sein.
- Verbrauchsplan: Diese serverlose Berechnungsoption berechnet Sie nur für die Ressourcen, die Ihre Apps verwenden, während sie ausgeführt werden.
- Dedizierter Plan: Diese Option stellt angepasste Rechenressourcen bereit und berechnet Ihnen die Kosten für die Instanzen, die den jeweiligen Workload-Profilen zugewiesen sind.
Ihre Wahl des Plans bestimmt, wie Abrechnungsberechnungen vorgenommen werden. Unterschiedliche Anwendungen in einer Umgebung können unterschiedliche Pläne verwenden.
Wichtige Punkte zu beachten:
- Keine zusätzlichen Gebühren für die Verwendung des Azure Functions-Programmiermodells innerhalb von Container-Apps.
- Dauerhafte Funktionen und andere erweiterte Muster werden unter dem gleichen Preismodell für Container-Apps unterstützt und in Rechnung gestellt. Ausführliche Abrechnungsmechaniken und Beispiele finden Sie in der Dokumentation "Abrechnung in Azure-Container-Apps ".
Ereignisgesteuerte Skalierung
Azure Functions in Container Apps unterstützen alle wichtigen Sprachlaufzeiten, die in Azure Functions verfügbar sind, einschließlich: C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell, benutzerdefinierte Container (eigene Abbildung mitbringen).
Azure Functions, die auf Azure Container Apps laufen, konfigurieren automatisch Skalierungsregeln basierend auf der Ereignisquelle, wodurch die Notwendigkeit für manuelle KEDA-Skalierungsregeldefinitionen entfällt. Aus diesem Grund ist die Schaltfläche "Skalierungsregeln hinzufügen" im Azure-Portal für Funktionen in Container-Apps deaktiviert. Sie können jedoch weiterhin mindeste und maximale Replikatanzahl definieren, um Skalierungsgrenzen festzulegen und die Kontrolle über die Ressourcenzuordnung zu behalten.
Alle Standardmäßigen Azure Functions-Trigger und -Bindungen werden in Container-Apps mit folgenden Ausnahmen unterstützt:
- Automatische Skalierung von Blob Storage Trigger: Funktioniert nur bei Verwendung des Ereignisrasters als Quelle. Weitere Informationen zum Auslösen von Azure Functions in Blob-Containern mithilfe eines Ereignisabonnements
- Automatische Skalierung von Durable Functions: Unterstützt nur die Speicheranbieter MSSQL (Microsoft SQL Server) und DTS (Durable Task Scheduler). Weitere Anleitungen zur Bereitstellung dauerhafter Funktionen mit MSSQL
- Die automatische Skalierung wird für Folgendes nicht unterstützt:
- Azure Cache für Redis
- Azure SQL
Verwaltete Identitäten werden für Trigger und Bindungen unterstützt, die sie zulassen. Diese sind auch verfügbar für:
- Standardspeicherkonto (AzureWebJobsStorage)
- Azure Container Registry (ACR)
- Herstellen einer Verbindung mit Triggerereignisquellen
Verwenden Sie für nicht unterstützte Trigger feste Replikatanzahlen (d. h. minReplicas > 0) in Azure-Funktionen in Azure-Container-Apps. Weitere Informationen finden Sie im Entwicklerhandbuch für Funktionen.
Skalierung und Leistung
Azure Functions auf Container-Apps skalieren automatisch basierend auf Ereignissen mithilfe von KEDA, ohne dass Skalierungsregeln manuell konfiguriert werden müssen. Sie können weiterhin Min/Max-Replikate festlegen, um das Skalierungsverhalten zu steuern.
- Ereignisgesteuerte Skalierung: Skaliert automatisch basierend auf Triggern wie Event Grid, Service Bus oder HTTP.
- Skalierung auf Null: Leerlauf-Apps werden auf Null skaliert, um Kosten zu sparen.
- Kaltstartsteuerung: Erfahren Sie mehr über die Reduzierung der Kaltstartzeit in Azure-Container-Apps.
- Parallelität: Jede Instanz kann mehrere Ereignisse parallel verarbeiten.
- Hohe Skalierung: Skalieren auf 1.000 Instanzen pro App (Standard ist 10).
- GPU-Unterstützung: Führen Sie rechenintensive Workloads wie KI-Ableitungen mithilfe von GPU-unterstützten Knoten aus.
Dadurch eignen sich Container-Apps sowohl für Workloads mit Spitzenauslastung als auch für solche mit gleichbleibender Auslastung. Weitere Informationen finden Sie unter Festlegen von Skalierungsregeln in Azure-Container-Apps
Netzwerke und Sicherheit
Azure Functions on Container Apps profitieren von den robusten Netzwerkfeatures und Sicherheitsfeatures der Container-Apps für sichere, skalierbare Bereitstellungen.
- VNet-Integration: Greifen Sie über interne Endpunkte und private Datenbanken sicher auf private Ressourcen zu.
- Verwaltete Identität: Authentifizieren mit Azure-Diensten mithilfe von system-/benutzerdefinierten Identitäten – keine geheimen Schlüssel oder Verbindungszeichenfolgen erforderlich.
- Dapr-Unterstützung: Aktivieren Sie Veröffentlichen/Abonnieren, Zustandsverwaltung und sichere Dienstaufrufe über Dapr-Sidecars. Weitere Informationen finden Sie unter Microservice-APIs, die von Dapr unterstützt werden.
- Ingress und TLS: Machen Sie sichere HTTP-Endpunkte mit TLS/mTLS, benutzerdefinierten Domänen verfügbar oder halten Sie sie intern.
- Umgebungsisolation: Funktionen teilen Container-Apps-Umgebungsgrenzen für sichere, bereichsbezogene Kommunikation.
Diese Funktionen machen container-apps-gehostete Funktionen ideal für sichere serverlose Anwendungen auf Unternehmensniveau.
Überwachung und Protokollierung
Azure-Funktionen für Container-Apps lassen sich nahtlos in die Observability-Tools von Azure integrieren, um Leistungsnachverfolgung und Problemdiagnose zu ermöglichen:
- Application Insights: Stellt Telemetrie für Anforderungen, Abhängigkeiten, Ausnahmen und benutzerdefinierte Ablaufverfolgungen bereit. Weitere Informationen finden Sie unter Überwachen von Azure-Funktionen.
- Protokollanalyse: Erfasst Containerlebenszyklus- und Skalierungsereignisse (z. B. FunctionsScalerInfo-Einträge). Weitere Informationen finden Sie unter Anwendungsprotokollierung in Azure-Container-Apps.
- Benutzerdefinierte Protokollierung: Unterstützt Standardframeworks wie ILogger und Konsolenprotokollierung für strukturierte Ausgabe.
- Zentrale Überwachung: Container-Apps-Umgebung bietet einheitliche Dashboards und Warnungen für alle Apps.
Überlegungen
Beachten Sie diese anderen Überlegungen bei der Verwendung von Azure-Funktionen in Azure-Container-Apps:
- Ingressanforderung für die automatische Skalierung: Um die automatische Skalierung basierend auf Ereignissen zu aktivieren, muss der Eingang aktiviert werden – entweder öffentlich oder innerhalb der internen Container-Apps-Umgebung.
- Obligatorisches Speicherkonto: Jede in Container-Apps bereitgestellte Funktionen-App muss mit einem Speicherkonto verknüpft werden. Dies ist für die Verwaltung von Triggern, Protokollen und Zustand erforderlich. Überprüfen Sie die Richtlinien für Speicherkonten für bewährte Methoden.
- Speicher für mehrere Überarbeitungen: Weisen Sie bei der Bereitstellung mit mehreren aktiven Überarbeitungen jeder Überarbeitung ein dediziertes Speicherkonto zu. Die Verwendung eines dedizierten Speicherkontos trägt dazu bei, Konflikte zu vermeiden und eine ordnungsgemäße Isolierung zu gewährleisten. Wenn Sie keine gleichzeitigen Überarbeitungen benötigen, sollten Sie alternativ den standardmäßigen Einzelrevisionsmodus für die vereinfachte Verwaltung verwenden.
- Multirevisionstrigger: Wenn Sie den Multirevisionsmodus mit einem Pull-basierten Trigger verwenden, verwenden Sie für jede Überarbeitung eine andere Ereignisquelle, um Konflikte im Zusammenhang mit konkurrierenden Verbrauchern zu vermeiden. Funktionen, die Azure Queue Storage, Azure Event Hub, Azure Service Bus oder Dauerhafte Funktionen verwenden, sind Beispiele für Pull-basierte Trigger.
- Latenz beim Kaltstart: Wenn Ihre Container-App während Leerlaufzeiten auf null herunter skaliert wird, kommt es bei der ersten Anforderung nach Inaktivität zu einem Kaltstart. Erfahren Sie mehr über die Reduzierung der Kaltstartzeiten.
- Integration von Application Insights: Verknüpfen Sie Ihre Funktionen-App mit Application Insights, um eine robuste Überwachung und Diagnose zu ermöglichen. Weitere Informationen finden Sie unter App Insights-Integration in Funktionen.
- Funktionenproxys: Nicht unterstützt. Integrieren Sie für API-Gatewayszenarien stattdessen mit Azure API Management.
- Bereitstellungsslots: Staging- und Produktionsslots sind nicht verfügbar. Verwenden Sie blaugrüne Bereitstellungsstrategien für Veröffentlichungen ohne Ausfallzeiten.
- Funktionszugriffsschlüssel: Das Verwenden des Portals zum Generieren von Funktionszugriffsschlüsseln wird nicht unterstützt. Erwägen Sie die Verwendung von Azure Key Vault zum Speichern von Schlüsseln. Sie können auch die folgenden Optionen verwenden, um HTTP-Endpunkte in der Produktion zu sichern:
- Kontingent- und Ressourcenbeschränkungen: Container-Apps-Umgebungen haben Standardgrenzwerte für Arbeitsspeicher, CPU und Instanzenanzahl pro Region. Weitere Informationen finden Sie unter den Umgebungsgrenzwerten und Standardkontingenten. Wenn Ihre Workload mehr Ressourcen benötigt, können Sie eine Kontingenterhöhung anfordern.
- Manuelle Skalierungsregelkonfiguration: Die Schaltfläche "Skalierungsregeln hinzufügen" im Azure-Portal ist für Azure-Funktionen deaktiviert, die in Container-Apps gehostet werden, da Skalierungsregeln automatisch basierend auf der Ereignisquelle konfiguriert werden. Manuelle KEDA-Regeldefinitionen sind in diesem Setup nicht erforderlich.
Feedback senden
Senden Sie ein Problem oder eine Featureanforderung an das GitHub-Repository für Azure-Container-Apps.
Nächste Schritte / Weitere Ressourcen
Um mit Azure Functions in Container-Apps weiter zu lernen und zu erstellen, erkunden Sie die folgenden Ressourcen:
- Erste Schritte – Schritt-für-Schritt-Anleitung zum Bereitstellen und Konfigurieren von Azure Functions in Azure-Container-Apps.
- Dokumentation zu Azure Container-Apps – Vollständige Referenz zu Container-Apps-Features, einschließlich Skalierung, Netzwerk, Dapr und Workload-Profilen.
- Preise für Azure-Container-Apps – Details zu verbrauchsbasierten Abrechnungs- und dedizierten Plankosten.
- Hostingoptionen für Azure-Funktionen – Vergleich von Hostingplänen wie Container-Apps, Flex-Verbrauch, Premium und Dedicated.
- Entwicklerleitfaden für Azure-Funktionen – Umfassende Einblicke in Trigger, Bindungen, Laufzeitverhalten und Konfiguration.