Kontinuierliche Bereitstellung für Azure Functions

Azure Functions ermöglicht es Ihnen, Änderungen kontinuierlich aus einem Quellcode-Repository auf eine Funktionsanwendung zu übertragen. In diesem Workflow löst ein Code-Update den Bau, das Packaging und die Bereitstellung von Ihrem Projekt auf Azure aus. Die unterstützten Bereitstellungsanbieter und Release-Strategien hängen vom Hosting-Plan ab.

Hosting-Paket Empfohlener CI/CD-Anbieter Einführungs- und Freigabe-Leitlinien
Flex Consumption GitHub Actions oder Azure Pipelines Verwendet Paketverteilung. Deployment-Slots werden nicht unterstützt. Verwenden Sie CI/CD-Releasekontrollen und ziehen Sie Rolling Updates für Zero-Downtime-Bereitstellungen in Betracht.
Elastic Premium, Dediziert und Verbrauch GitHub Actions oder Azure Pipelines Verwendet ZIP-Deployment. Wenn deine App dies unterstützt, stelle die Bereitstellung in einem Stagingslot bereit, überprüfe das Update, und tausche dann den Slot in die Produktion.
Azure Container Apps – ein Dienst für containerbasierte Anwendungen Workflow für Containerbau und -bereitstellung Stellt ein Container-Image bereit. Weitere Informationen finden Sie unter Azure Functions on Azure Container Apps overview.

Wählen Sie Ihren Hosting-Plan oben in diesem Artikel aus, um die Continuous Deployment-Richtlinien zu sehen, die für Ihre Funktions-App gelten.

Für Hosting-Pläne, die Deployment-Slots unterstützen, konfigurieren Sie Continuous Deployment für einen Staging Slot statt für den Produktionsslot. Überprüfen Sie Updates in der Stagingumgebung, und tauschen Sie dann den Stagingslot mit der Produktion aus. Wenn du eine direkte Verbindung zu einem Produktionsslot herstellst, stelle sicher, dass nur Code in Produktionsqualität den Integrationsbranch erreicht.

Für Flex Consumption konfigurieren Sie GitHub Actions oder Azure Pipelines. Da Flex Consumption keine Bereitstellungsslots unterstützt, bewahren Sie Ihren Bereitstellungsverlauf in der Quellcodeverwaltung und in Ihrem CI/CD-System auf, damit Sie sich von einer fehlerhaften Bereitstellung erholen können.

Für Functions in Azure Container Apps bauen und deployen Sie ein Container-Image. Einsatzplätze sind nicht verfügbar. Verwenden Sie Revisionen und erwägen Sie eine blau-grüne Bereitstellungsstrategie für Releases ohne Ausfallzeit.

Die Schritte des Deployment Center in diesem Artikel gelten für Funktions-Apps, die die Integration der App Service-Quellkontrolle unterstützen. Im Verbrauchsplan wird diese Integration nur unter Windows unterstützt. Sie können auch die Integration der Quellcode-Kontrolle über Azure CLI konfigurieren.

Azure Functions unterstützt diese Quellen für die kontinuierliche Bereitstellung für Ihre App:

Verwalten Sie Ihren Projektcode in Azure Repos, einem der Dienste in Azure DevOps. Unterstützt die Git und Team Foundation-Versionskontrolle. Wird mit dem Azure Pipelines-Buildanbieter verwendet. Weitere Informationen finden Sie unter Was ist Azure Repos?

Du kannst deine Funktions-App auch mit einem externen Git-Repository verbinden, aber diese Option erfordert eine manuelle Synchronisation. Weitere Informationen zu Bereitstellungsoptionen finden Sie unter Bereitstellungstechnologien in Azure Functions.

Hinweis

Die in diesem Artikel behandelten Optionen für das Continuous Deployment sind spezifisch für Nur-Code-Bereitstellungen. Für Azure Functions on Azure Container Apps siehe Azure Functions on Azure Container Apps overview. Für einen benutzerdefinierten Container, der von Azure Functions in einem Premium- oder Dedizierten Plan gehostet wird, siehe den Abschnitt Enable continuous deployment of containers to Azure in Work with containers and Azure Functions.

Flex Consumption unterstützt kontinuierliche Bereitstellung aus Azure Repos mittels Azure Pipelines und von GitHub über GitHub Actions. Die Integration der Quellcodeverwaltung in App Service, einschließlich Bereitstellungen mit Bitbucket und lokalem Git, wird nicht unterstützt.

Für Functions in Azure Container Apps pflegen Sie Ihren Quellcode in Ihrem bevorzugten Repository und verwenden Sie einen CI/CD-Workflow, um ein Container-Image zu erstellen und zu pushen. Dann aktualisiere deine Funktions-App, um das neue Image zu verwenden. Weitere Informationen finden Sie unter Bereitstellung und Einrichtung von Funktionen in Azure Container Apps.

Anforderungen

Die Bereitstellungseinheit für Funktionen in Azure ist die Funktions-App. Damit Continuous Deployment erfolgreich ausgeführt werden kann, muss die Verzeichnisstruktur Ihres Projekts mit der Basisordnerstruktur kompatibel sein, die von Azure Functions erwartet wird. Wenn Sie Ihr Codeprojekt mit Azure Functions Core Tools, Visual Studio Code oder Visual Studio erstellen, erstellen die Azure Functions-Vorlagen Codeprojekte mit der richtigen Verzeichnisstruktur. Du bereitest alle Funktionen gleichzeitig in einer Funktions-App und im selben Paket bereit.

Nachdem du die kontinuierliche Bereitstellung aktiviert hast, wird der Zugriff auf den Funktionscode im Azure-Portal als schreibgeschützt konfiguriert, da die Wahrheitsquelle woanders liegt.

Hinweis

Das Bereitstellungscenter unterstützt kein Continuous Deployment für eine Funktions-App mit eingehenden Netzwerkeinschränkungen. Stattdessen konfigurieren Sie den Workflow des Build-Providers direkt in GitHub oder Azure Pipelines. Der Runner oder Agent muss unter den konfigurierten Zugriffsbeschränkungen das Deployment-Endpunkt der App erreichen können. Wenn der Endpunkt privat ist, benötigt auch der Runner oder Agent eine private DNS-Auflösung. Für Azure Pipelines verwenden Sie einen selbstgehosteten Agenten in einem verbundenen Netzwerk oder einen verwalteten DevOps-Agentenpool mit Netzwerk. Für GitHub Actions verwenden Sie einen selbstgehosteten Runner in einem verbundenen Netzwerk oder einen von GitHub gehosteten Runner mit Azure Private Networking.

Wenn Ihre Funktions-App eingehende Netzwerkbeschränkungen hat, muss der Workflow-Runner oder Agent unter den konfigurierten Zugriffsbeschränkungen den Deployment-Endpunkt der App erreichen können. Wenn der Endpunkt privat ist, benötigt auch der Runner oder Agent eine private DNS-Auflösung. Für Azure Pipelines verwenden Sie einen selbstgehosteten Agenten in einem verbundenen Netzwerk oder einen verwalteten DevOps-Agentenpool mit Netzwerk. Für GitHub Actions verwenden Sie einen selbstgehosteten Runner in einem verbundenen Netzwerk oder einen von GitHub gehosteten Runner mit Azure Private Networking.

Dein CI/CD-Workflow muss ein gültiges Azure Functions-Container-Image erstellen, das Image in eine Registry pushen, auf die deine Container-App zugreifen kann, und die Funktions-App aktualisieren, um eine Version aus diesem Image zu erstellen. Weitere Informationen finden Sie unter Erstellen einer Funktions-App in Azure Container Apps.

Wählen Sie einen Buildanbieter aus

Das Erstellen Ihres Codeprojekts ist Teil des Bereitstellungsprozesses. Der spezifische Buildprozess hängt von Ihrem spezifischen Sprachstapel, Betriebssystem und Hostingplan ab. Du kannst lokal oder remote bauen, je nach deinem Hosting. Weitere Informationen finden Sie unter Remotebuild.

Wichtig

Für erhöhte Sicherheit verwenden Sie einen Build-Provider, der verwaltete Identitäten unterstützt, wie Azure Pipelines und GitHub Actions. Der App Service Build-Service verlangt, dass Sie eine grundlegende Authentifizierung aktivieren und textbasierte Zugangsdaten verwenden.

Azure Functions unterstützt diese Buildanbieter:

Azure Pipelines ist einer der Dienste in Azure DevOps und der Standardbuildanbieter für Azure Repos-Projekte. Sie können Auch Azure Pipelines verwenden, um Projekte von GitHub zu erstellen. In Azure-Pipelines gibt es eine AzureFunctionApp Aufgabe, die speziell für die Bereitstellung in Azure-Funktionen entwickelt wurde. Mit dieser Aufgabe können Sie steuern, wie das Projekt erstellt, gepackt und bereitgestellt wird. Azure Pipelines unterstützt verwaltete Identitäten.

Beachten Sie die Stärken und Einschränkungen dieser Anbieter, wenn Sie die Integration der Quellcodeverwaltung aktivieren. Möglicherweise müssen Sie ihren Quelltyp Ihres Repositorys ändern, um einen bestimmten Anbieter nutzen zu können.

Verwenden Sie Azure Pipelines oder GitHub Actions, um Ihr Projekt zu erstellen und bereitzustellen. Diese Anbieter unterstützen Microsoft Entra-Identitäten und nutzen den Flex-Consumption-Paket-Bereitstellungsprozess.

Der App Service Build-Service gilt nicht für Flex Consumption.

Nutze einen Container-Build-Provider, der dein Azure Functions-Image erstellen kann, pushe es in eine Container-Registry und aktualisiere deine Funktions-App, um eine Version aus dem neuen Image zu erstellen. Für einen End-to-End-GitHub Actions-Workflow siehe Deploy to Azure Container Apps with GitHub Actions.

Konfigurieren von Continuous Deployment

Das Azure-Portal bietet ein Deployment Center für Ihre Funktionsanwendungen, was die Konfiguration der kontinuierlichen Bereitstellung erleichtert. Die spezifische Art und Weise, wie Sie Continuous Deployment konfigurieren, hängt sowohl von der Art des Repositorys für die Quellcodeverwaltung ab, in der sich Ihr Code befindet, als auch vom Buildanbieter, den Sie auswählen.

Navigieren Sie im Azure-Portal zur Seite Ihrer Funktions-App und wählen Sie im linken Bereich unter Bereitstellung das Bereitstellungscenter aus.

Screenshot des Funktions-App-Deployment-Zentrums im Azure-Portal, wo Sie Ihr Quellrepository auswählen.

Wählen Sie den Quell-Repositorytyp aus, in dem Ihr Projektcode aus einer der folgenden unterstützten Optionen verwaltet wird:

Definieren Sie Bereitstellungen aus Azure Repos, die im Azure DevOps-Portal Azure Pipelines verwenden. Definieren Sie diese Bereitstellungen nicht in Ihrer Funktions-App. Eine Schritt-für-Schritt-Anleitung zur Erstellung einer auf Azure Pipelines basierenden Bereitstellung aus Azure Repos finden Sie unter Continuous Delivery with Azure Pipelines.

Nach Abschluss der Bereitstellung stellt der Dienst den gesamten Code aus der angegebenen Quelle für Ihre App bereit. An diesem Punkt lösen Änderungen in der Bereitstellungsquelle eine Bereitstellung dieser Änderungen in Ihrer Funktions-App in Azure aus.

Konfigurieren Sie die kontinuierliche Bereitstellung in Ihrem Repository, indem Sie einen dieser Anbieter verwenden:

Jeder erfolgreiche Workflow-Lauf bereitet ein neues Anwendungspaket aus. Die Integration der Quellcodeverwaltung im Deployment Center ist für Flex Consumption nicht verfügbar.

Konfigurieren Sie Ihren CI/CD-Workflow, um das Container-Image zu erstellen und zu pushen, und deployen Sie das Image dann in Ihrer Funktions-App. Jedes Image-Update erstellt eine Container Apps-Revision. Weitere Informationen finden Sie unter Deploy to Azure Container Apps with GitHub Actions.

Aktivieren von Continuous Deployment während der App-Erstellung

Wenn du eine Funktions-App im Azure-Portal erstellst, kannst du die kontinuierliche Bereitstellung von GitHub aus mit GitHub Actions konfigurieren. Konfigurieren Sie GitHub Actions auf der Registerkarte Deployment auf der Seite Funktion-App erstellen.

Um eine andere Bereitstellungsquelle oder einen anderen Build-Anbieter für kontinuierliche Integration zu verwenden, erstellen Sie zunächst Ihre Funktions-App. Dann kehren Sie zum Portal zurück und richten Sie die kontinuierliche Integration im Deployment Center ein.

Für Azure Pipelines erstellen Sie zunächst Ihre Funktions-App und konfigurieren Sie dann die Pipeline in Azure DevOps.

Erstellen Sie die Funktions-App aus einem Container-Image und konfigurieren Sie dann Ihren CI/CD-Workflow, um aktualisierte Images zu veröffentlichen und Revisionen zu erstellen. Weitere Informationen finden Sie unter Erstellen einer Funktions-App in Azure Container Apps.

Aktivieren der Standardauthentifizierung für Bereitstellungen

Dieser Abschnitt gilt nur für Bereitstellungsmethoden, die den App Service Deployment-Endpunkt verwenden.

In manchen Fällen wird Ihre Funktions-App mit deaktiviertem Basis-Authentifizierungszugriff auf den Deployment-Endpunkt erstellt. Diese Bedingung blockiert die Veröffentlichung durch alle Methoden, die keine Microsoft Entra-Identitäten nutzen können, um auf den Deployment-Endpunkt zuzugreifen. Die Auswirkungen der Veröffentlichung durch das Deaktivieren der Basisauthentifizierung für den Deployment-Endpunkt sind in Deploy ohne grundlegende Authentifizierung detailliert beschrieben.

Wichtig

Wenn Sie die Standardauthentifizierung verwenden, werden Anmeldeinformationen als Klartext gesendet. Um diese Zugangsdaten zu schützen, dürfen Sie bei der Verwendung der einfachen Authentifizierung nur über eine verschlüsselte Verbindung (HTTPS) auf den Deployment-Endpunkt zugreifen. Weitere Informationen finden Sie unter Sichere Bereitstellung.

Um die grundlegende Authentifizierung für den Deployment-Endpunkt zu ermöglichen:

  1. Wechseln Sie im Azure-Portal zu Ihrer Funktions-App.

  2. Wählen Sie im linken Menü der App Einstellungen>, Konfiguration> und Allgemeine Einstellungen aus.

  3. Legen Sie Veröffentlichungsanmeldeinformationen für die SCM-Standardauthentifizierung auf Ein fest, und wählen Sie dann Speichern aus.

Die SCM-Basisauthentifizierung gilt nicht für die Bereitstellung von Flex Consumption-Paketen. Standardmäßig verwendet Azure Pipelines ein Microsoft Entra-Trägertoken aus der erforderlichen Azure-Serviceverbindung; eine Workload-Identitätsfederation wird empfohlen. Für GitHub Actions verwenden Sie die empfohlene OpenID Connect (OIDC)-Authentifizierung. Diese Methoden vermeiden die Veröffentlichung von SCM-Zugangsdaten und sind sicherer als einfache Authentifizierung.

Diese grundlegende Authentifizierungseinstellung gilt nicht für Functions in Azure Container Apps. Konfigurieren Sie stattdessen die Authentifizierung zwischen Ihrem CI/CD-Anbieter, der Container-Registry und der Container-App.

Nächste Schritte