Azure Container Apps-Hosting von Azure Functions

Azure Functions bietet integrierte Unterstützung für die Entwicklung, Bereitstellung und Verwaltung containerisierter Funktions-Apps in Azure Container Apps. 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 Kubernetes-basierten Umgebung mit integrierter Unterstützung von Open-Source-Überwachung, mTLS, Dapr und KEDA.

Wichtig

Unterstützung für das Hosten von Funktions-Apps in Azure Container Apps befindet sich derzeit in der Vorschauphase.

Mit der Integration in Container Apps können Sie das vorhandene Funktionsprogrammiermodell verwenden, um Funktionscode in Ihrer bevorzugten Programmiersprache oder ihrem bevorzugten Framework zu schreiben, das von Azure Functions unterstützt wird. Sie erhalten weiterhin die Functions-Trigger und -Bindungen mit ereignisgesteuerter Skalierung. Container Apps nutzt die Leistungsfähigkeit des zugrunde liegenden Azure Kubernetes Service (AKS) und beseitigt gleichzeitig die Komplexität des Arbeitens mit Kubernetes-APIs.

Diese Integration bedeutet auch, dass Sie vorhandene Functions-Clienttools und das Azure-Portal verwenden können, um Container zu erstellen, Funktions-App-Container in Container-Apps bereitzustellen und Continuous Deployment zu konfigurieren. Netzwerk- und Einblickkonfigurationen werden auf der Container-App-Umgebungsebene definiert und gelten für alle Microservices, die in einer Container Apps-Umgebung ausgeführt werden, einschließlich Ihrer Funktions-App. Sie erhalten auch die anderen cloudnativen Funktionen von Container Apps, einschließlich KEDA, Dapr und Envoy. Sie können weiterhin Application Insights verwenden, um die Ausführung Ihrer Funktionen zu überwachen.

Hosting und Workloadprofile

Es gibt zwei primäre Hostingpläne für Container Apps: einen serverlosen Verbrauchsplan und einen dedizierten Plan, der Workloadprofile verwendet, um Ihre Bereitstellungsressourcen besser zu steuern. Ein Workloadprofil bestimmt den Umfang von Compute- und Arbeitsspeicherressourcen, die für die in einer Umgebung bereitgestellten Container-Apps verfügbar sind. Die Konfiguration dieser Profile wird auf die unterschiedlichen Anforderungen Ihrer Anwendungen abgestimmt. Das Workloadprofil „Verbrauch“ ist das Standardprofil, das allen Workloadprofilen vom Typ Umgebung hinzugefügt wird. Sie können Ihrer Umgebung dedizierte Workloadprofile hinzufügen, während Sie eine Umgebung erstellen oder nachdem die Umgebung erstellt wurde. Weitere Informationen zu Workloadprofilen finden Sie unter Workloadprofile in Azure Container Apps.

Das Hosten containerisierter Funktions-Apps durch Container Apps wird in allen Regionen mit Container Apps-Unterstützung unterstützt.

Wenn Ihre App keine spezifischen Hardwareanforderungen hat, können Sie Ihre Umgebung entweder im Rahmen eines Verbrauchsplans oder im Rahmen eines dedizierten Plans mit dem standardmäßigen Workloadprofil „Verbrauch“ ausführen. Beim Ausführen von Funktionen in Container Apps wird Ihnen nur die Nutzung von Container Apps in Rechnung gestellt. Weitere Informationen finden Sie auf der Preisseite von Azure Container Apps.

Azure Functions in Azure Container Apps unterstützt Hosting mit GPU-Unterstützung im dedizierten Plan mit Workloadprofilen.

Informationen zum Erstellen und Bereitstellen eines Funktions-App-Containers in Container Apps unter Verwendung des Standardplans „Verbrauch“ finden Sie unter Erstellen Ihrer ersten containerisierten Funktionen in Azure Container Apps.

Informationen zum Erstellen einer Container Apps-Umgebung mit Workloadprofilen und zum Bereitstellen eines Funktions-App-Containers für eine bestimmte Workload finden Sie im Artikel Arbeiten mit Containern und Azure Functions.

Funktionen in Containern

Um Container-Apps hosten zu können, muss Ihr Funktionscode in einem von Ihnen erstellten und verwalteten Linux-Container ausgeführt werden. Functions verwaltet eine Reihe von sprachspezifischen Basisimages, mit denen Sie Ihre containerisierten Funktions-Apps generieren können.

Wenn Sie ein Functions-Projekt mit Azure Functions Core Tools erstellen und die Option --docker einschließen, generiert Core Tools das Dockerfile mit dem korrekten Basisimage, das Sie bei der Erstellung Ihres Containers als Ausgangspunkt verwenden können.

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.

Wenn Sie Änderungen am Funktionscode vornehmen, müssen Sie Ihr Containerimage neu erstellen und erneut veröffentlichen. Weitere Informationen finden Sie unter Aktualisieren eines Images in der Registrierung.

Bereitstellungsoptionen

Azure Functions unterstützt derzeit die folgenden Bereitstellungsmethoden für eine containerisierte Funktions-App in Azure Container Apps:

Konfigurieren von Skalierungsregeln

Azure Functions in Container Apps wurde zum Konfigurieren der Skalierungsparameter und -regeln gemäß dem Ereignisziel konzipiert. Sie müssen sich keine Gedanken über die Konfiguration der KEDA-skalierten Objekte machen. Sie können die minimale und maximale Replikatanzahl weiterhin festlegen, wenn Sie Ihre Funktions-App erstellen oder ändern. Der folgende Azure CLI-Befehl legt die minimale und maximale Replikatanzahl fest, wenn eine neue Funktions-App in einer Container Apps-Umgebung aus einer Azure Container Registry-Instanz erstellt wird:

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

Der folgende Befehl legt die gleiche minimale und maximale Replikatanzahl für eine vorhandene Funktions-App fest:

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

Verwaltete Ressourcengruppen

Azure Functions in Container Apps führt Ihre funktionalisierten Containerressourcen in speziell verwalteten Ressourcengruppen aus. Dies trägt dazu bei, die Konsistenz Ihrer Apps zu schützen, indem unbeabsichtigte oder nicht autorisierte Änderungen oder Löschungen von Ressourcen in der verwalteten Gruppe durch Benutzer, Gruppen oder Dienstprinzipale verhindert werden. Diese verwaltete Ressourcengruppe wird bei der ersten Erstellung von Funktions-App-Ressourcen in einer Container Apps-Umgebung erstellt. Container Apps-Ressourcen, die von Ihrer containerisierten Funktions-App benötigt werden, werden in dieser verwalteten Ressourcengruppe ausgeführt, und alle anderen Funktions-Apps, die ggf. in der gleichen Umgebung erstellt werden, verwenden diese vorhandene Gruppe. Eine verwaltete Ressourcengruppe wird automatisch entfernt, nachdem alle Funktions-App-Containerressourcen aus der Umgebung entfernt wurden. Die verwaltete Ressourcengruppe ist zwar sichtbar, Änderungs- oder Entfernungsversuche führen jedoch zu einem Fehler. Wenn Sie eine verwaltete Ressourcengruppe aus einer Umgebung entfernen möchten, müssen Sie alle Funktions-App-Containerressourcen entfernen. Daraufhin wird sie automatisch entfernt. Sollten Probleme mit diesen verwalteten Ressourcengruppen auftreten, wenden Sie sich an den Support.

Überlegungen zum Hosting von Container-Apps

Beachten Sie beim Bereitstellen Ihrer Funktions-App-Container in Container Apps die folgenden Überlegungen:

  • Während alle Trigger verwendet werden können, können nur die folgenden Trigger (von null Instanzen) dynamisch skaliert werden, wenn sie in Container Apps ausgeführt werden:
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka*
    • Timer
      * Der Protokollwert ssl wird nicht unterstützt, wenn das Hosting in Container Apps erfolgt. Verwenden Sie einen anderen Protokollwert.
  • Für die integrierten Container Apps-Richtliniendefinitionen gelten derzeit nur Richtlinien auf Umgebungsebene für Azure Functions-Container.
  • Sie können derzeit keine Bereitstellung einer gehosteten Funktions-App von Container Apps zwischen Ressourcengruppen oder zwischen Abonnements verschieben. Stattdessen müssen Sie die vorhandene containerisierte App-Bereitstellung in einer neuen Ressourcengruppe, einem neuen Abonnement oder einer neuen Region neu erstellen.
  • Wenn Sie Container Apps verwenden, besitzen Sie keinen direkten Zugriff auf die Kubernetes-APIs auf niedrigerer Ebene.
  • Die containerapp-Erweiterung steht in Konflikt mit der appservice-kube-Erweiterung in der Azure CLI. Wenn Sie Apps zuvor in Azure Arc veröffentlicht haben, führen Sie az extension list aus, und stellen Sie sicher, dass appservice-kube nicht installiert ist. Wenn dies doch der Fall ist, kann die Entfernung erfolgen, indem Sie az extension remove -n appservice-kube ausführen.
  • Die Functions-Dapr-Erweiterung befindet sich ebenfalls in der Vorschauphase. Hilfe dazu finden Sie im Repository.

Nächste Schritte