Technologie wdrażania w Azure Functions

Aby wdrożyć kod projektu Azure Functions na platformie Azure, możesz użyć kilku różnych technologii. Ten artykuł zawiera omówienie dostępnych metod wdrażania i rekomendacji dotyczących najlepszej metody do użycia w różnych scenariuszach. Zawiera również wyczerpującą listę i kluczowe szczegóły dotyczące podstawowych technologii wdrażania.

Metody wdrażania

Technologia wdrażania używana do publikowania kodu na platformie Azure jest zwykle określana przez sposób publikowania aplikacji. Odpowiednia metoda wdrażania jest określana przez określone potrzeby i punkt w cyklu programowania. Na przykład podczas programowania i testowania można wdrożyć bezpośrednio z poziomu narzędzia programistycznego, takiego jak Visual Studio Code. Gdy aplikacja jest w środowisku produkcyjnym, bardziej prawdopodobne jest ciągłe publikowanie z kontroli źródła lub przy użyciu zautomatyzowanego potoku publikowania, który obejmuje dodatkową walidację i testowanie.

W poniższej tabeli opisano dostępne metody wdrażania dla projektu funkcji.

Typ wdrożenia Metody Najlepsze dla...
Oparte na narzędziach publikowanie Visual Studio Code
Publikowanie w programie Visual Studio
Publikowanie podstawowych narzędzi
Wdrożenia podczas programowania i innych wdrożeń ad hoc. Wdrożenia są zarządzane lokalnie przez narzędzia.
App Service zarządzane Centrum wdrażania (ciągła integracja/ciągłe wdrażanie)
Wdrożenia kontenerów
Ciągłe wdrażanie (CI/CD) z kontroli źródła lub z rejestru kontenerów. Wdrożenia są zarządzane przez platformę App Service (Kudu).
Potoki zewnętrzne Azure Pipelines
GitHub Actions
Potoki produkcyjne i DevOps, które obejmują dodatkową walidację, testowanie i inne akcje, są uruchamiane w ramach zautomatyzowanego wdrażania. Wdrożenia są zarządzane przez potok.

Chociaż konkretne wdrożenia usługi Functions korzystają z najlepszej technologii na podstawie ich kontekstu, większość metod wdrażania opiera się na wdrożeniu zip.

Dostępność technologii wdrażania

Azure Functions obsługuje lokalne programowanie i hosting na wielu platformach w systemach Windows i Linux. Obecnie dostępne są trzy plany hostingu:

Każdy plan ma różne zachowania. Nie wszystkie technologie wdrażania są dostępne dla każdego smaku Azure Functions. Na poniższym wykresie przedstawiono, które technologie wdrażania są obsługiwane dla każdej kombinacji systemu operacyjnego i planu hostingu:

Technologia wdrażania Użycie systemu Windows Windows Premium Windows Dedicated Użycie systemu Linux Linux Premium Dedykowany system Linux
Adres URL pakietu zewnętrznego1
Wdrażanie zip
Kontener platformy Docker
Web Deploy
Kontrola źródła
Lokalne narzędzie Git1
Synchronizacja chmury1
FTP1
Edytowanie portalu 2 2

1 Technologia wdrażania, która wymaga ręcznej synchronizacji wyzwalacza. 2 Edytowanie portalu jest włączone tylko dla wyzwalaczy HTTP i Timer dla funkcji w systemie Linux przy użyciu planów Premium i Dedykowane.

Kluczowe pojęcia

Niektóre kluczowe pojęcia mają kluczowe znaczenie dla zrozumienia sposobu działania wdrożeń w Azure Functions.

Wyzwalanie synchronizacji

Po zmianie dowolnego wyzwalacza infrastruktura usługi Functions musi mieć świadomość zmian. Synchronizacja odbywa się automatycznie w przypadku wielu technologii wdrażania. Jednak w niektórych przypadkach należy ręcznie zsynchronizować wyzwalacze. Podczas wdrażania aktualizacji przez odwołanie się do zewnętrznego adresu URL pakietu, lokalnego narzędzia Git, synchronizacji w chmurze lub protokołu FTP należy ręcznie zsynchronizować wyzwalacze. Wyzwalacze synchronizacji można synchronizować na jeden z trzech sposobów:

  • Uruchom ponownie aplikację funkcji w Azure Portal.
  • Wyślij żądanie HTTP POST do https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> przy użyciu klucza głównego.
  • Wyślij żądanie HTTP POST do adresu https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Zastąp symbole zastępcze identyfikatorem subskrypcji, nazwą grupy zasobów i nazwą aplikacji funkcji.

W przypadku wdrażania przy użyciu zewnętrznego adresu URL pakietu i zmiany zawartości pakietu, ale sam adres URL nie ulega zmianie, należy ręcznie ponownie uruchomić aplikację funkcji, aby w pełni zsynchronizować aktualizacje.

Kompilacja zdalna

Azure Functions może automatycznie wykonywać kompilacje na kodzie, który otrzymuje po wdrożeniu zip. Kompilacje te działają nieco inaczej w zależności od tego, czy aplikacja jest uruchomiona w systemie Windows, czy Linux. Kompilacje zdalne nie są wykonywane, gdy aplikacja została wcześniej ustawiona do uruchomienia w trybie Uruchom z pakietu . Aby dowiedzieć się, jak używać kompilacji zdalnej, przejdź do polecenia zip deploy.

Uwaga

Jeśli masz problemy z kompilacją zdalną, może to być spowodowane tym, że aplikacja została utworzona przed udostępnieniem funkcji (1 sierpnia 2019 r.). Spróbuj utworzyć nową aplikację funkcji lub uruchomić az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> polecenie , aby zaktualizować aplikację funkcji. Wykonanie tego polecenia może potrwać dwie próby pomyślne.

Kompilacja zdalna w systemie Windows

Wszystkie aplikacje funkcji działające w systemie Windows mają małą aplikację do zarządzania, witrynę SCM (lub Kudu). Ta witryna obsługuje większość logiki wdrażania i kompilacji dla Azure Functions.

Po wdrożeniu aplikacji w systemie Windows są uruchamiane polecenia specyficzne dla języka, takie jak dotnet restore (C#) lub npm install (JavaScript).

Kompilacja zdalna w systemie Linux

Aby włączyć zdalną kompilację w systemie Linux, należy ustawić następujące ustawienia aplikacji :

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

Domyślnie zarówno Azure Functions Core Tools, jak i rozszerzenie Azure Functions dla Visual Studio Code wykonywać kompilacje zdalne podczas wdrażania w systemie Linux. W związku z tym oba narzędzia automatycznie tworzą te ustawienia na platformie Azure.

Gdy aplikacje są tworzone zdalnie w systemie Linux, są uruchamiane z pakietu wdrożeniowego.

Plan Zużycie

Aplikacje funkcji systemu Linux uruchomione w planie Zużycie nie mają witryny SCM/Kudu, która ogranicza opcje wdrażania. Jednak aplikacje funkcji w systemie Linux uruchomione w planie Zużycie obsługują kompilacje zdalne.

Plany dedykowane i Premium

Aplikacje funkcji działające w systemie Linux w ramach planu dedykowanego (App Service) i planu Premium mają również ograniczoną witrynę SCM/Kudu.

Szczegóły technologii wdrażania

Następujące metody wdrażania są dostępne w Azure Functions.

Adres URL pakietu zewnętrznego

Możesz użyć zewnętrznego adresu URL pakietu, aby odwołać się do pliku pakietu zdalnego (.zip), który zawiera aplikację funkcji. Plik jest pobierany z podanego adresu URL, a aplikacja działa w trybie Uruchom z pakietu .

Jak go używać: Dodaj WEBSITE_RUN_FROM_PACKAGE do ustawień aplikacji. Wartość tego ustawienia powinna być adresem URL (lokalizacją określonego pliku pakietu, który chcesz uruchomić). Ustawienia można dodać w portalu lub przy użyciu interfejsu wiersza polecenia platformy Azure.

Jeśli używasz usługi Azure Blob Storage, użyj kontenera prywatnego z sygnaturą dostępu współdzielonego (SAS), aby przyznać usłudze Functions dostęp do pakietu. Za każdym razem, gdy aplikacja zostanie ponownie uruchomiona, pobiera kopię zawartości. Odwołanie musi być prawidłowe przez okres istnienia aplikacji.

Kiedy należy go używać: Adres URL pakietu zewnętrznego jest jedyną obsługiwaną metodą wdrażania dla Azure Functions uruchomionych w systemie Linux w planie Zużycie, jeśli użytkownik nie chce, aby kompilacja zdalna wystąpiła. Po zaktualizowaniu pliku pakietu, do którego odwołuje się aplikacja funkcji, należy ręcznie zsynchronizować wyzwalacze , aby poinformować platformę Azure o zmianie aplikacji. Po zmianie zawartości pliku pakietu, a nie samego adresu URL, należy również ręcznie uruchomić ponownie aplikację funkcji.

Wdrażanie z pliku zip

Użyj narzędzia zip deploy, aby wypchnąć plik .zip zawierający aplikację funkcji na platformę Azure. Opcjonalnie możesz ustawić aplikację tak, aby uruchamiała się z pakietu, lub określić, że ma miejsce kompilacja zdalna .

Jak go używać: Wdróż przy użyciu ulubionego narzędzia klienckiego: Visual Studio Code, Visual Studio lub z poziomu wiersza polecenia przy użyciu narzędzi Azure Functions Core Tools. Domyślnie te narzędzia używają wdrożenia zip i uruchamiania z pakietu. Narzędzia Core Tools i rozszerzenie Visual Studio Code umożliwiają kompilowanie zdalne podczas wdrażania w systemie Linux. Aby ręcznie wdrożyć plik .zip w aplikacji funkcji, postępuj zgodnie z instrukcjami w temacie Wdrażanie z pliku lub adresu URL .zip.

Podczas wdrażania przy użyciu narzędzia zip deploy możesz ustawić aplikację do uruchamiania z pakietu. Aby uruchomić polecenie z pakietu, ustaw WEBSITE_RUN_FROM_PACKAGE wartość ustawienia aplikacji na 1wartość . Zalecamy wdrożenie zip. Zapewnia szybsze czasy ładowania aplikacji i jest to ustawienie domyślne dla programu VS Code, programu Visual Studio i interfejsu wiersza polecenia platformy Azure.

Kiedy należy go używać: Wdrażanie zip to zalecana technologia wdrażania dla Azure Functions.

Kontener platformy Docker

Możesz wdrożyć obraz kontenera systemu Linux, który zawiera aplikację funkcji.

Jak go używać: Utwórz aplikację funkcji systemu Linux w planie Premium lub Dedykowany i określ obraz kontenera do uruchomienia. Możesz to zrobić na dwa sposoby:

  • Utwórz aplikację funkcji systemu Linux w planie Azure App Service w Azure Portal. W obszarze Publikowanie wybierz pozycję Obraz platformy Docker, a następnie skonfiguruj kontener. Wprowadź lokalizację, w której jest hostowany obraz.
  • Tworzenie aplikacji funkcji systemu Linux w planie App Service przy użyciu interfejsu wiersza polecenia platformy Azure. Aby dowiedzieć się, jak to zrobić, zobacz Tworzenie funkcji w systemie Linux przy użyciu obrazu niestandardowego.

Aby wdrożyć w klastrze Kubernetes jako kontener niestandardowy, w narzędziach Azure Functions Core Tools użyj func kubernetes deploy polecenia .

Kiedy należy go używać: Użyj opcji Kontener platformy Docker, jeśli potrzebujesz większej kontroli nad środowiskiem systemu Linux, w którym działa aplikacja funkcji. Ten mechanizm wdrażania jest dostępny tylko dla funkcji działających w systemie Linux.

Web Deploy (MSDeploy)

Narzędzie Web Deploy pakuje i wdraża aplikacje systemu Windows na dowolnym serwerze usług IIS, w tym na aplikacjach funkcji działających w systemie Windows na platformie Azure.

Jak go używać: Użyj narzędzi programu Visual Studio dla Azure Functions. Wyczyść pole wyboru Uruchom z pliku pakietu (zalecane).

Możesz również pobrać narzędzie Web Deploy 3.6 i wywołać je MSDeploy.exe bezpośrednio.

Kiedy należy go używać: Narzędzie Web Deploy jest obsługiwane i nie ma problemów, ale preferowanym mechanizmem jest wdrażanie zip z włączonym uruchamianiem z pakietu. Aby dowiedzieć się więcej, zobacz Przewodnik programowania programu Visual Studio.

Kontrola źródła

Użyj kontroli źródła, aby połączyć aplikację funkcji z repozytorium Git. Aktualizacja kodu w tym repozytorium wyzwala wdrożenie. Aby uzyskać więcej informacji, zobacz witrynę Typu Wiki Kudu.

Jak go używać: Użyj Centrum wdrażania w obszarze Funkcje portalu, aby skonfigurować publikowanie z poziomu kontroli źródła. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla Azure Functions.

Kiedy należy go używać: Używanie kontroli źródła jest najlepszym rozwiązaniem dla zespołów, które współpracują nad aplikacjami funkcji. Kontrola źródła to dobra opcja wdrażania, która umożliwia korzystanie z bardziej zaawansowanych potoków wdrażania.

Lokalna usługa Git

Możesz użyć lokalnego narzędzia Git do wypychania kodu z komputera lokalnego do Azure Functions przy użyciu narzędzia Git.

Jak go używać: Postępuj zgodnie z instrukcjami w temacie Lokalne wdrożenie usługi Git, aby Azure App Service.

Kiedy należy go używać: Ogólnie rzecz biorąc, zalecamy użycie innej metody wdrażania. Podczas publikowania z lokalnego narzędzia Git należy ręcznie zsynchronizować wyzwalacze.

Synchronizacja z chmurą

Synchronizacja w chmurze umożliwia synchronizowanie zawartości z usług Dropbox i OneDrive w celu Azure Functions.

Jak go używać: Postępuj zgodnie z instrukcjami w temacie Synchronizowanie zawartości z folderu w chmurze.

Kiedy należy go używać: Ogólnie rzecz biorąc, zalecamy inne metody wdrażania. Podczas publikowania przy użyciu synchronizacji w chmurze należy ręcznie synchronizować wyzwalacze.

FTP

Za pomocą protokołu FTP można bezpośrednio przesyłać pliki do Azure Functions.

Jak go używać: Postępuj zgodnie z instrukcjami w temacie Wdrażanie zawartości przy użyciu protokołu FTP/s.

Kiedy należy go używać: Ogólnie rzecz biorąc, zalecamy inne metody wdrażania. Podczas publikowania przy użyciu protokołu FTP należy ręcznie synchronizować wyzwalacze.

Edytowanie portalu

W edytorze opartym na portalu można bezpośrednio edytować pliki, które znajdują się w aplikacji funkcji (zasadniczo wdrażane za każdym razem, gdy zapisujesz zmiany).

Jak go używać: Aby móc edytować funkcje w Azure Portal, musisz utworzyć funkcje w portalu. Aby zachować pojedyncze źródło prawdy, użycie dowolnej innej metody wdrażania sprawia, że funkcja jest tylko do odczytu i zapobiega ciągłej edycji portalu. Aby powrócić do stanu, w którym można edytować pliki w Azure Portal, możesz ręcznie przywrócić tryb Read/Write edycji i usunąć wszystkie ustawienia aplikacji związane z wdrażaniem (na przykład WEBSITE_RUN_FROM_PACKAGE.

Kiedy należy go używać: Portal to dobry sposób na rozpoczęcie pracy z Azure Functions. W przypadku bardziej intensywnych prac programistycznych zalecamy użycie jednego z następujących narzędzi klienckich:

W poniższej tabeli przedstawiono systemy operacyjne i języki, które obsługują edycję portalu:

Język Użycie systemu Windows Windows Premium Windows Dedicated Użycie systemu Linux Linux Premium Linux Dedicated
C#
Skrypt języka C# * *
F#
Java
JavaScript (Node.js) * *
Python
PowerShell
TypeScript (Node.js)

* Edytowanie portalu jest włączone tylko dla wyzwalaczy HTTP i Timer dla funkcji w systemie Linux przy użyciu planów Premium i Dedykowane.

Zachowania związane z wdrażaniem

Podczas wdrażania aktualizacji w kodzie aplikacji funkcji obecnie wykonywane funkcje są przerywane. Po zakończeniu wdrażania zostanie załadowany nowy kod w celu rozpoczęcia przetwarzania żądań. Zapoznaj się z artykułem Zwiększanie wydajności i niezawodności Azure Functions, aby dowiedzieć się, jak pisać funkcje bezstanowe i defensywne.

Jeśli potrzebujesz większej kontroli nad tym przejściem, należy użyć miejsc wdrożenia.

Miejsca wdrożenia

Podczas wdrażania aplikacji funkcji na platformie Azure można wdrożyć w osobnym miejscu wdrożenia zamiast bezpośrednio w środowisku produkcyjnym. Aby uzyskać więcej informacji na temat miejsc wdrożenia, zobacz dokumentację Azure Functions Miejsca wdrożenia, aby uzyskać szczegółowe informacje.

Następne kroki

Przeczytaj następujące artykuły, aby dowiedzieć się więcej o wdrażaniu aplikacji funkcji: