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 auf Azure Container Apps bietet eine vollständig verwaltete serverlose Hosting-Umgebung, die die ereignisgesteuerten Funktionen von Azure Functions mit den Funktionen von Container Apps kombiniert. Zu diesen Funktionen gehören Kubernetes-basierte Orchestrierung, integrierte Autoskalierung mit Kubernetes Event-gesteuertem Autoscaling (KEDA), Dapr-Integration, GPU-Workload-Unterstützung, Sidecar-Unterstützung, virtuelle Netzwerk-(VNet)-Konnektivität und Versionsmanagement.
Dieser Ansatz ist nützlich, wenn Sie möchten, dass Ihre Funktionen parallel zu anderen containerisierten Anwendungen wie Microservices, APIs oder Websites laufen. Das Containerisieren Ihrer Funktions-Apps kann auch helfen, wenn Sie benutzerdefinierte Abhängigkeiten benötigen oder auf null skalieren möchten, um Kosten zu senken. Für rechenintensive Aufgaben wie KI-Inferenz unterstützt Container Apps GPU-basiertes Hosting über serverlose GPUs und dedizierte Workload-Profile.
Als integriertes Feature in Azure Container Apps können Sie Azure Functions-Container-Images direkt in Azure Container Apps bereitstellen, indem Sie den Microsoft.App Resource Provider verwenden und beim kind=functionapp Aufruf az containerapp createvon . Auf diese Weise erstellte Apps haben Zugriff auf alle Azure Container Apps Features. Im Azure-Portal wählen Sie während der Einrichtung die Option "Optimize for Azure Functions" aus. Weitere Informationen finden Sie unter Deployment and Setup.
Hauptvorteile
Das Container-Apps-Hostingmodell basiert auf der Flexibilität von containerisierten Workloads und der ereignisgesteuerten Art von Azure Functions. Es bietet die folgenden wichtigsten Vorteile:
- Führen Sie Azure Functions als Container mit benutzerdefinierten Abhängigkeiten und Sprachumgebungen aus.
- Skaliere auf null und skaliere mit KEDA auf 1.000 Instanzen .
- Sicheres Netzwerk mit vollständiger VNet-Integration.
- Container Apps Funktionen wie mehrere Revisionen, Verkehrsaufteilung, Dapr-Integration und Observabilitätskomponenten.
- 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.
Die folgende Tabelle hilft Ihnen, die Funktionen von Funktionen in Container-Apps mit dem Flex Consumption-Plan zu 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 für Container-Apps eignen sich ideal für eine breite Palette von Anwendungsfällen, insbesondere, wenn Sie ereignisgesteuerte Ausführung, Containerflexibilität oder sichere Integration in andere Dienste benötigen:
- Line-of-Business-APIs: Verpacken benutzerdefinierter Bibliotheken, Pakete und APIs mit Azure Functions für Branchenanwendungen.
- Migration und Modernisierung: Migration von On-Premises-Legacy- und/oder Monolithenanwendungen zu cloudnativen Microservices auf Containern.
- Ereignisgesteuerte Verarbeitung: Behandle Ereignisse von Event Grid, Service Bus, Event Hubs und anderen Ereignisquellen mithilfe des Azure Functions-Programmiermodells.
- KI- und GPU-Workloads: Verarbeiten Sie Videos, Bilder, Transkripte und andere rechenintensive Arbeitslasten, die GPU-Ressourcen benötigen. Weitere Informationen finden Sie unter Using serverless GPUs in Azure Container Apps.
- Microservices: Integrieren Sie Azure Functions mit anderen in Container-Apps gehosteten Diensten.
- Benutzerdefinierte Container: Paketfunktionen mit benutzerdefinierten Laufzeiten oder Sidecars.
- Privat-Apps: Sichern Sie interne Funktionen nur mithilfe von VNet und internem Ingress.
- .NET Aspire: Durch die 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 Functions mit .NET Aspire
- General Functions: Führen Sie alle unterstützten Standardszenarien Azure Functions szenarien aus (z. B. Timer, Dateiverarbeitung, Datenbanktrigger).
Bereitstellung und Einrichtung
Um Azure Functions auf Azure Container Apps bereitzustellen, paketiere deine Funktions-App als benutzerdefiniertes Container-Image und bereite sie wie jede andere Container-App mit einem entscheidenden Unterschied aus. Setzen Sie die Eigenschaft kind=functionapp ein, wenn Sie die Azure CLI, Azure Resource Manager-Vorlagen oder Bicep verwenden. Für detaillierte Schritte und Beispiele siehe Eine Funktions-App erstellen.
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 liefert die URL deiner Funktions-App zurück. Kopieren Sie diese URL, und fügen Sie sie in einen Webbrowser ein.
Im Azure-Portal wählen Sie während der Erstellung der Container-App die Option "Optimize for Azure Functions" aus, um die Azure Functions-Konfiguration zu verwenden.
Alle Standardbereitstellungsmethoden werden unterstützt, einschließlich:
- Azure CLI
- Azure Portal
- ARM-Vorlagen /Bicep
- CI/CD-Pipelines (z. B. GitHub Actions, Azure Pipelines)
Ausführliche Schritte und Beispiele finden Sie in der offiziellen Dokumentation zu den ersten Schritten.
Preise und Abrechnung
Azure Functions in Azure Container Apps folgen demselben 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 während der Ausführung verwenden.
- 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.
Abrechnungsdetails:
- Keine zusätzlichen Gebühren für die Verwendung des Azure Functions Programmiermodells innerhalb von Container-Apps.
- Durable Functions 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 Billing in Azure Container Apps.
Ereignisgesteuerte Skalierung
Azure Functions on Container Apps unterstützt alle wichtigen Sprachlaufzeiten in Azure Functions, einschließlich C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell und benutzerdefinierte Container (bring dein eigenes Image mit).
Azure Functions, die in Azure Container Apps ausgeführt werden, konfigurieren Skalierungsregeln automatisch auf Grundlage der Ereignisquelle, sodass in der Standardkonfiguration keine manuellen KEDA-Skalierungsregeldefinitionen erforderlich sind. 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.
Wenn Sie eigene Skalierungsregeln angeben müssen, können Sie die von der Plattform generierten Regeln mit allowScalingRuleOverride deaktivieren. Weitere Informationen finden Sie unter Automatisch erzeugte KEDA-Skalierungsregeln für Azure Functions in Container Apps außer Kraft setzen.
Die Plattform übersetzt automatisch die Parameter Ihrer Functions Trigger (aus der host.json-Konfiguration oder den Trigger-Attributen) in die entsprechenden KEDA-Skalierungsparameter. Eine ausführliche Referenz zur Zuordnung von Funktionentriggerkonfigurationen zu KEDA-Skalierungsparametern finden Sie unter Azure Functions KEDA-Skalierungszuordnungen.
Alle Standard-Azure Functions Trigger und Bindungen werden unterstützt in Container-Apps mit folgenden ausnahmen:
- Blob Storage Automatische Skalierung auslösen: Funktioniert nur bei Verwendung des Ereignisrasters als Quelle. Erfahren Sie mehr über das Auslösen von Azure-Funktionen für Blob-Container durch ein Ereignisabonnement
- Durable Functions Autoscaling: Unterstützt nur Microsoft SQL Server und Durable Task Scheduler Speicheranbieter. Weitere Informationen finden Sie unter Deploy Durable Functions with SQL Server.
- Autoscaling wird nicht unterstützt für:
- Azure Cache for Redis
- Azure SQL
Verwaltete Identitäten werden für Trigger und Bindungen unterstützt, die sie zulassen. Sie stehen auch zur Verfügung 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 Functions für Azure Container Apps. Weitere Informationen finden Sie im Entwicklerhandbuch für Funktionen.
Skalierung und Leistung
Azure Functions in Container Apps werden standardmäßig mithilfe von KEDA automatisch ereignisbasiert skaliert. Sie können weiterhin Min/Max-Replikate festlegen, um das Skalierungsverhalten zu steuern. Sie können auch benutzerdefinierte allowScalingRuleOverride Skalierungsregeln bereitstellen.
- Event-gesteuerte Skalierung: Skaliert automatisch basierend auf Triggern wie Ereignisraster, Service Bus oder HTTP.
- Skalierung auf Null: Leerlauf-Apps werden auf Null skaliert, um Kosten zu sparen.
- Cold-Start-Kontrolle: Erfahren Sie mehr über die Reduzierung der Kaltstartzeit bei 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 Skalierungsregeln festlegen in Azure Container Apps.
Netzwerke und Sicherheit
Azure Functions on Container Apps verwendet Netzwerk- undSicherheitsfunktionen von Container Apps:
- VNet-Integration: Greifen Sie über interne Endpunkte und private Datenbanken sicher auf private Ressourcen zu.
- Verwaltete Identität: Authentifizieren Sie sich bei Azure-Diensten durch Verwendung von system- oder benutzerzugewiesenen Identitäten. Du musst keine Geheimnisse oder Verbindungsstränge verwalten.
- 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.
- Umweltisolation: Funktionen teilen Container-Apps Umgebungsgrenzen für sichere, gefasste Kommunikation.
Überwachung und Protokollierung
Azure Functions in Container Apps integriert sich mit Azure-Observabilitätstools zur Leistungsverfolgung und Problemdiagnose:
- Application Insights: Stellt Telemetrie für Anforderungen, Abhängigkeiten, Ausnahmen und benutzerdefinierte Ablaufverfolgungen bereit. Weitere Informationen finden Sie unter Monitor Azure Functions.
-
Log Analytics: Erfasst Containerlebenszyklus und Skalierungsereignisse, wie z. B
FunctionsScalerInfo. Einträge. Weitere Informationen finden Sie unter Application Logging 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.
Umgebungsvariablen
Azure Functions, die auf Container-Apps laufen, haben Zugriff auf vom System bereitgestellte Umgebungsvariablen. Die Umgebungsvariable CONTAINER_NAME wird automatisch auf den Replikatnamen für Ihre Funktions-App festgelegt. Verwenden Sie diese Variable für Logging, Korrelation und Debugging im Multireplika-Szenario.
Eine vollständige Liste der vom System bereitgestellten Umgebungsvariablen finden Sie unter Environment-Variablen in Azure Container Apps.
Überlegungen
Beachten Sie bei der Verwendung von Azure Functions für Azure Container Apps die folgenden anderen Überlegungen:
- Ingress-Anforderung für Autoscaling: Um eine automatische Skalierung basierend auf Ereignissen zu ermöglichen, aktivieren Sie Ingress, entweder öffentlich oder innerhalb der internen Umgebung von Container Apps.
- Pflichtspeicherkonto: Jede Funktions-App, die auf Container Apps bereitgestellt wird, muss mit einem Speicherkonto verknüpft sein. Dieses Speicherkonto verwaltet Trigger, Logs und Zustände. Ü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 Hubs, Azure Service Bus oder Durable Functions Trigger 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: Um Ihre Funktions-App zu überwachen und zu diagnostizieren, verbinden Sie sie mit Application Insights. Weitere Informationen finden Sie unter Application Insights Integration mit Functions.
- Funktionenproxys: Nicht unterstützt. Integrieren Sie für API-Gatewayszenarien stattdessen 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.
- Konfiguration manueller Skalierungsregeln: Die Schaltfläche "Skalierungsregeln hinzufügen" im Azure-Portal ist für Azure Functions, die auf Container-Apps gehostet werden, deaktiviert, 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 Azure Container Apps GitHub-Repository.
Nächste Schritte / Weitere Ressourcen
Um mit Azure Functions in Container-Apps weiter zu lernen und zu erstellen, erkunden Sie die folgenden Ressourcen:
- Getting started: Schritt-für-Schritt-Anleitung zum Bereitstellen und Konfigurieren von Azure Functions in Azure Container Apps.
- Azure Container Apps-Dokumentation: Vollständige Referenz für Container-Apps-Features wie Skalierung, Netzwerk, Dapr und Workloadprofile.
- Azure Container Apps Preise: Details zu verbrauchsbasierten Abrechnungs- und dedizierten Plankosten.
- Azure Functions Hosting-Optionen: Vergleich der Hostingpläne, einschließlich Container Apps, Flex-Verbrauch, Premium und Dedicated.
- Azure Functions Entwicklerhandbuch: Umfassende Einblicke in Trigger, Bindungen, Laufzeitverhalten und Konfiguration.