Continuous Deployment für Azure Functions

Mit Azure Functions können Sie Ihren Code mithilfe der Integration der Quellcodeverwaltung kontinuierlich bereitstellen. Die Integration der Quellcodeverwaltung ermöglicht einen Workflow, in dem ein Codeaktualisierung Build, Packen und Bereitstellen von Ihrem Projekt in Azure auslöst.

Continuous Deployment eignet sich hervorragend für Projekte mit häufiger Integration zahlreicher Beiträge. Bei Verwendung von Continuous Deployment wird für Ihren Code eine einzelne alleingültige Quelle (Single Source Of Truth, SSOT) gepflegt, wodurch Teams problemlos zusammenarbeiten können.

Die Schritte in diesem Artikel zeigen, wie Sie fortlaufende Codebereitstellungen für Ihre Funktions-App in Azure mithilfe des Bereitstellungscenters im Azure-Portal konfigurieren. Sie können die kontinuierliche Integration auch mithilfe der Azure CLI konfigurieren.

Funktionen unterstützen diese Quellen für das Continuous Deployment 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?

Sie können Ihre Funktions-App auch mit einem externen Git-Repository verbinden, dies erfordert jedoch eine manuelle Synchronisierung. 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. Informationen zu Bereitstellungen containerisierter Funktionen finden Sie unter Aktivieren des Continuous Deployment von Containern in Azure.

Anforderungen

Damit Continuous Deployment erfolgreich ausgeführt werden kann, muss Ihre Verzeichnisstruktur mit der grundlegenden Ordnerstruktur kompatibel sein, die von Azure Functions erwartet wird.

Der Code für alle Funktionen in einer bestimmten Funktions-App befindet sich in einem Stammprojektordner, der eine Hostkonfigurationsdatei enthält. Die Datei host.json enthält die runtimespezifische Konfiguration und befindet sich im Stammordner der Funktions-App. Ein Ordner bin enthält Pakete und andere Bibliotheksdateien, die von der Funktions-App benötigt werden. Bestimmte Ordnerstrukturen, die von der Funktions-App benötigt werden, sind von der Sprache abhängig:

Alle Funktionen in einer Funktions-App müssen den gleichen Sprachstapel verwenden.

Buildanbieter

Das Erstellen Ihres Codeprojekts ist Teil des Bereitstellungsprozesses. Der spezifische Buildprozess hängt von Ihrem spezifischen Sprachstapel, Betriebssystem und Hostingplan ab. Builds können lokal oder remote durchgeführt werden, je nach Ihrem spezifischen Hosting. Weitere Informationen finden Sie unter Remotebuild.

Funktionen unterstützen diese Buildanbieter:

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

Ihre Optionen für welche dieser Buildanbieter Sie verwenden können, hängen von der spezifischen Codebereitstellungsquelle ab.

Bereitstellungscenter

Das Azure-Portal bietet ein Bereitstellungscenter für Ihre Funktions-Apps, wodurch die Konfiguration der kontinuierlichen Bereitstellung vereinfacht wird. Die Art und Weise, wie Sie die Continuous Deployment konfigurieren, hängt sowohl von der spezifischen Quellcodeverwaltung ab, in der sich Ihr Code befindet, als auch vom von Ihnen ausgewählten Buildanbieter.

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

Screenshot des Bereitstellungscenters für Funktionen-Apps im Azure-Portal, in dem Sie Ihr Quell-Repository auswählen.

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

Bereitstellungen von Azure Repos, die Azure-Pipelines verwenden, werden im Azure DevOps-Portal und nicht aus Ihrer Funktions-App definiert. Eine schrittweise Anleitung zum Erstellen einer Pipeline-basierten Bereitstellung aus Azure Repos finden Sie unter Continuous Delivery mit Azure Pipelines.

Wenn die Bereitstellung abgeschlossen ist, wird der gesamte Code aus der angegebenen Quelle Ihrer App bereitgestellt. An diesem Punkt lösen Änderungen in der Bereitstellungsquelle eine Bereitstellung dieser Änderungen in Ihrer Funktions-App in Azure aus.

Überlegungen

Beachten Sie diese Überlegungen bei der Planung einer kontinuierlichen Bereitstellungsstrategie:

  • GitHub ist die einzige Quelle, die derzeit die kontinuierliche Bereitstellung für Linux-Apps unterstützt, die auf einem Verbrauchsplan ausgeführt werden, was eine beliebte Hostingoption für Python-Apps ist.

  • Die Bereitstellungseinheit für Funktionen in Azure ist die Funktions-App. Alle Funktionen in einer Funktions-App werden gleichzeitig und im selben Paket bereitgestellt.

  • Nach Aktivierung von Continuous Deployment wird der Zugriff auf Funktionscode im Azure-Portal als schreibgeschützt konfiguriert, da die Source of Truth auf einen anderen Ort festgelegt ist.

  • Sie sollten die kontinuierliche Bereitstellung für einen Stagingslot und nicht für den Produktionsplatz konfigurieren. Wenn Sie den Produktionsslot verwenden, werden Codeupdates direkt an die Produktion übertragen, ohne in Azure überprüft zu werden. Aktivieren Sie stattdessen die kontinuierliche Bereitstellung für einen Stagingslot, überprüfen Sie Updates im Staging-Slot, und nachdem alles ordnungsgemäß ausgeführt wurde, können Sie den Stagingslot-Code in die Produktion vertauschen.

  • Das Bereitstellungscenter unterstützt keine kontinuierliche Bereitstellung für eine Funktions-App mit eingehenden Netzwerkeinschränkungen. Stattdessen müssen Sie den Buildanbieter-Workflow direkt in GitHub oder Azure Pipelines konfigurieren. Diese Workflows erfordern auch, dass Sie einen virtuellen Computer im selben virtuellen Netzwerk wie die Funktions-App als selbst gehosteter Agent (Pipelines) oder einen selbst gehosteten Runner (GitHub)verwenden.

Continuous Deployment während der App-Erstellung

Derzeit können Sie Continuous Deployment über GitHub mithilfe von GitHub Actions konfigurieren, wenn Sie Ihre Funktions-App im Azure-Portal erstellen. Dazu können Sie die Registerkarte Bereitstellung auf der Seite Funktions-App erstellen verwenden.

Wenn Sie eine andere Bereitstellungsquelle oder einen anderen Buildanbieter für Continuous Integration verwenden möchten, erstellen Sie zuerst Ihre Funktions-App, kehren Sie dann zum Portal zurück, und richten Sie Continuous Integration im Bereitstellungscenter ein.

Aktivieren der Standardauthentifizierung für Bereitstellungen

Standardmäßig wird Ihre Funktions-App mit deaktiviertem Standardauthentifizierungszugriff auf den scm-Endpunkt erstellt. Dadurch wird die Veröffentlichung von allen Methoden blockiert, die keine verwalteten Identitäten verwenden können, um auf den scm-Endpunkt zuzugreifen. Die Auswirkungen der Veröffentlichung bei deaktiviertem scm-Endpunkt sind unter Bereitstellung ohne Standardauthentifizierung ausführlich beschrieben.

Wichtig

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

So aktivieren Sie die Standardauthentifizierung für den scm-Endpunkt

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

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

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

Nächste Schritte