Technologie wdrażania w usłudze Azure Functions
Aby wdrożyć kod projektu usługi Azure Functions na platformie Azure, możesz użyć kilku różnych technologii. Ten artykuł zawiera omówienie dostępnych metod wdrażania i zaleceń dotyczących najlepszej metody użycia w różnych scenariuszach. Zawiera również wyczerpującą listę kluczowych informacji na temat podstawowych technologii wdrażania.
Metody wdrażania
Technologia wdrażania używana do publikowania kodu w aplikacji funkcji na platformie Azure zależy od konkretnych potrzeb i punktu w cyklu programowania. Na przykład podczas programowania i testowania można wdrażać bezpośrednio z poziomu narzędzia programistycznego, takiego jak Visual Studio Code. Gdy aplikacja jest w środowisku produkcyjnym, częściej publikujesz ciągłe publikowanie z kontroli źródła lub przy użyciu zautomatyzowanego potoku publikowania, który może obejmować walidację i testowanie.
W poniższej tabeli opisano dostępne metody wdrażania dla projektu kodu.
Typ wdrożenia | Metody | Najlepsze dla... |
---|---|---|
Oparte na narzędziach | • Interfejs wiersza polecenia platformy Azure • Publikowanie w programie Visual Studio Code • Publikowanie w programie Visual Studio • Publikowanie podstawowych narzędzi |
Wdrożenia podczas programowania i innych improwizowanych wdrożeń. Wdrażanie kodu na żądanie przy użyciu lokalnych narzędzi programistycznych. |
Zarządzane przez usługę App Service | • 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, które obejmują walidację, testowanie i inne akcje, które muszą być uruchamiane w ramach zautomatyzowanego wdrażania. Wdrożenia są zarządzane przez potok. |
Konkretne wdrożenia powinny korzystać z najlepszej technologii na podstawie konkretnego scenariusza. Wiele metod wdrażania jest opartych na wdrożeniu zip, które jest zalecane do wdrożenia.
Dostępność technologii wdrażania
Metoda wdrażania zależy również od planu hostingu i systemu operacyjnego, na którym jest uruchamiana aplikacja funkcji.
Obecnie usługa Functions oferuje pięć opcji hostowania aplikacji funkcji:
- Plan Flex Consumption
- Zużycie
- Elastyczny plan Premium
- Plan dedykowany (App Service)
- Azure Container Apps
Każdy plan ma różne zachowania. Nie wszystkie technologie wdrażania są dostępne dla każdego planu hostingu i systemu operacyjnego. Ten wykres zawiera informacje na temat obsługiwanych technologii wdrażania:
Technologia wdrażania | Zużycie elastyczne | Zużycie | Elastic Premium | Dedykowane | Aplikacje kontenera |
---|---|---|---|---|---|
Jedno wdrożenie | ✔ | ||||
Wdrażanie zip | ✔ | ✔ | ✔ | ||
Adres URLpakietu zewnętrznego 1 | ✔ | ✔ | ✔ | ||
Kontener platformy Docker | Tylko system Linux | Tylko system Linux | Tylko system Linux | ✔ | |
Kontrola źródła | Tylko system Windows | ✔ | ✔ | ||
Lokalne narzędzie Git1 | Tylko system Windows | ✔ | ✔ | ||
FTPS1 | Tylko system Windows | ✔ | ✔ | ||
Edytowanie w portalu2 | ✔ | ✔ | ✔ |
1 Technologie wdrażania, które wymagają ręcznej synchronizacji wyzwalaczy , nie są zalecane.
2 Edytowanie w portalu jest wyłączone, gdy kod jest wdrażany w aplikacji funkcji spoza portalu. Aby uzyskać więcej informacji, w tym szczegóły obsługi języka do edycji w portalu, zobacz Szczegóły obsługi języka.
Najważniejsze pojęcia
Niektóre kluczowe pojęcia mają kluczowe znaczenie dla zrozumienia sposobu działania wdrożeń w usłudze Azure Functions.
Synchronizacja wyzwalacza
Po zmianie dowolnego z wyzwalaczy 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.
W przypadku korzystania z tych opcji wdrażania należy ręcznie zsynchronizować wyzwalacze:
Wyzwalacze synchronizacji można synchronizować na jeden z następujących sposobów:
Uruchom ponownie aplikację funkcji w witrynie Azure Portal.
az rest
Użyj polecenia , aby wysłać żądanie HTTP POST, które wywołujesyncfunctiontriggers
interfejs API, jak w tym przykładzie:az rest --method post --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Web/sites/<APP_NAME>/syncfunctiontriggers?api-version=2016-08-01
Po wdrożeniu zaktualizowanej wersji pakietu wdrożeniowego i zachowaniu tego samego adresu URL pakietu zewnętrznego należy ręcznie ponownie uruchomić aplikację funkcji. Oznacza to, że host powinien synchronizować i ponownie wdrażać aktualizacje z tego samego adresu URL pakietu. Host usługi Functions wykonuje również synchronizację wyzwalacza w tle po uruchomieniu aplikacji. Jednak w przypadku planów hostingu Consumption i Elastic Premium należy również ręcznie zsynchronizować wyzwalacze w następujących scenariuszach:
- Wdrożenia korzystające z zewnętrznego adresu URL pakietu z szablonami usługi ARM lub narzędziem Terraform.
- Podczas aktualizowania pakietu wdrożeniowego pod tym samym adresem URL pakietu zewnętrznego.
Kompilacja zdalna
Podczas wdrażania możesz poprosić usługę Azure Functions o wykonanie zdalnej kompilacji projektu kodu. W tych scenariuszach należy zażądać kompilacji zdalnej zamiast kompilować lokalnie:
- Wdrażasz aplikację w aplikacji funkcji opartej na systemie Linux, która została opracowana na komputerze z systemem Windows. Jest to często przypadek tworzenia aplikacji w języku Python. W przypadku kompilowania pakietu wdrożeniowego lokalnie w systemie Windows można korzystać z nieprawidłowych bibliotek.
- Projekt ma zależności od niestandardowego indeksu pakietów.
- Chcesz zmniejszyć rozmiar pakietu wdrożeniowego.
Sposób żądania kompilacji zdalnej zależy od tego, czy aplikacja działa na platformie Azure w systemie Windows, czy Linux.
Wszystkie aplikacje funkcji działające w systemie Windows mają małą aplikację do zarządzania, witrynę scm
udostępnioną przez kudu. Ta witryna obsługuje większość logiki wdrażania i kompilacji dla usługi Azure Functions.
Po wdrożeniu aplikacji w systemie Windows uruchamiane są polecenia specyficzne dla języka, takie jak dotnet restore
(C#) lub npm install
(JavaScript).
Podczas wdrażania przy użyciu kompilacji zdalnych należy wziąć pod uwagę następujące kwestie:
- Kompilacje zdalne są obsługiwane w przypadku aplikacji funkcji działających w systemie Linux w planie Zużycie. Jednak opcje wdrażania są ograniczone dla tych aplikacji, ponieważ nie mają
scm
witryny (Kudu). - Aplikacje funkcji działające w systemie Linux w planie Premium lub w planie dedykowanej usługi (App Service) mają witrynę
scm
(Kudu), ale jest ograniczona w porównaniu z systemem Windows. - Kompilacje zdalne nie są wykonywane, gdy aplikacja korzysta z polecenia run-from-package. Aby dowiedzieć się, jak używać zdalnej kompilacji w tych przypadkach, zobacz Wdrażanie zip.
- Problemy z kompilacją zdalną mogą wystąpić podczas tworzenia aplikacji przed udostępnieniem funkcji (1 sierpnia 2019 r.). W przypadku starszych aplikacji utwórz nową aplikację funkcji lub uruchom
az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME>
polecenie , aby zaktualizować aplikację funkcji. To polecenie może podjąć dwie próby pomyślne.
Magazyn zawartości aplikacji
Metody wdrażania oparte na pakietach przechowują pakiet na koncie magazynu skojarzonym z aplikacją funkcji, która jest zdefiniowana w ustawieniu AzureWebJobsStorage . Jeśli są dostępne, aplikacje planu Consumption i Elastic Premium próbują użyć udziału zawartości usługi Azure Files z tego konta, ale możesz również zachować pakiet w innej lokalizacji. Aplikacje planu Flex Consumption zamiast tego używają kontenera magazynu na domyślnym koncie magazynu, chyba że skonfigurujesz inne konto magazynu do użycia na potrzeby wdrożenia. Aby uzyskać więcej informacji, zapoznaj się ze szczegółami w temacie Gdzie zawartość aplikacji jest przechowywana w każdej technologii wdrażania omówionej w następnej sekcji.
Ważne
Konto magazynu służy do przechowywania ważnych danych aplikacji, czasami w tym samego kodu aplikacji. Należy ograniczyć dostęp z innych aplikacji i użytkowników do konta magazynu.
Szczegóły technologii wdrażania
Następujące metody wdrażania są dostępne w usłudze Azure Functions. Zapoznaj się z tabelą dostępności technologii wdrażania, aby określić, które technologie obsługuje każdy plan hostingu.
Jedno wdrożenie
Jednym z wdrożeń jest jedyna technologia wdrażania obsługiwana w przypadku aplikacji w planie Flex Consumption. Wynikiem końcowym jest gotowy do uruchomienia pakiet .zip uruchamiany przez aplikację funkcji.
Jak go używać: wdrażanie za pomocą funkcji publikowania programu Visual Studio Code lub z poziomu wiersza polecenia przy użyciu narzędzi Azure Functions Core Tools lub interfejsu wiersza polecenia platformy Azure. Nasze zadanie dev ops platformy Azure i akcja usługi GitHub podobnie wykorzystują jedno wdrożenie, gdy wykryje, że aplikacja Flex Consumption jest wdrażana.
Podczas tworzenia aplikacji Flex Consumption należy określić kontener magazynu wdrożenia (blob), a także metodę uwierzytelniania. Domyślnie to samo konto magazynu co
AzureWebJobsStorage
połączenie jest używane z parametry połączenia co metoda uwierzytelniania. W związku z tym ustawienia wdrożenia są konfigurowane w czasie tworzenia aplikacji bez konieczności używania ustawień aplikacji.
Kiedy go używać: Jednym z wdrożeń jest jedyna technologia wdrażania dostępna dla aplikacji funkcji działających w planie Flex Consumption.
Gdzie jest przechowywana zawartość aplikacji: podczas tworzenia aplikacji funkcji Flex Consumption należy określić kontener magazynu wdrożenia. Jest to kontener obiektów blob, w którym platforma przekaże wdrożona zawartość aplikacji. Aby zmienić lokalizację, możesz odwiedzić blok Ustawienia wdrożenia w witrynie Azure Portal lub użyć interfejsu wiersza polecenia platformy Azure.
Wdrażanie zip
Wdrażanie zip to domyślna i zalecana technologia wdrażania dla aplikacji funkcji w planach Zużycie, Elastic Premium i App Service (dedykowana). Wynikiem końcowym jest gotowy do uruchomienia pakiet .zip uruchamiany przez aplikację funkcji. Różni się on od zewnętrznego adresu URL pakietu, ponieważ nasza platforma jest odpowiedzialna za zdalne kompilowanie i przechowywanie zawartości aplikacji.
Jak go używać: wdróż przy użyciu ulubionego narzędzia klienckiego: Visual Studio Code, Visual Studio lub z wiersza polecenia przy użyciu narzędzi Azure Functions Core Tools lub interfejsu wiersza polecenia platformy Azure. Nasze zadanie dev ops platformy Azure i akcja usługi GitHub podobnie wykorzystują wdrożenie zip.
Podczas wdrażania przy użyciu narzędzia zip deploy możesz ustawić aplikację do uruchomienia z pakietu. Aby uruchomić z pakietu, ustaw
WEBSITE_RUN_FROM_PACKAGE
wartość ustawienia aplikacji na1
wartość . 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 go używać: Wdrażanie zip jest domyślną i zalecaną technologią wdrażania dla aplikacji funkcji w planach Zużycie systemu Windows, Windows i Linux Elastic Premium oraz Windows i Linux App Service (dedykowane).
Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji z pliku zip jest domyślnie przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji. W przypadku użycia systemu Linux zawartość aplikacji jest zamiast tego utrwalana na obiekcie blob na koncie magazynu określonym przez
AzureWebJobsStorage
ustawienie aplikacji, a ustawienieWEBSITE_RUN_FROM_PACKAGE
aplikacji będzie przyjmować wartość adresu URL obiektu blob.
Adres URL pakietu zewnętrznego
Adres URL pakietu zewnętrznego to opcja, jeśli chcesz ręcznie kontrolować sposób wykonywania wdrożeń. Ponosisz odpowiedzialność za przekazanie gotowego do uruchomienia pakietu .zip zawierającego utworzoną zawartość aplikacji do magazynu obiektów blob i odwoływanie się do tego zewnętrznego adresu URL jako ustawienia aplikacji w aplikacji funkcji. Za każdym razem, gdy aplikacja zostanie ponownie uruchomiona, pobiera pakiet, instaluje go i uruchamia w trybie Uruchom z pakietu .
Jak go używać: Dodaj
WEBSITE_RUN_FROM_PACKAGE
do ustawień aplikacji. Wartość tego ustawienia powinna być adresem URL obiektu blob wskazującym lokalizację określonego pakietu, który ma zostać uruchomiony przez aplikację. Ustawienia można dodać w portalu lub przy użyciu interfejsu wiersza polecenia platformy Azure.Jeśli używasz usługi Azure Blob Storage, aplikacja funkcji może uzyskać dostęp do kontenera przy użyciu połączenia opartego na tożsamości zarządzanej lub sygnatury dostępu współdzielonego (SAS). Wybrana opcja ma wpływ na rodzaj adresu URL, którego używasz jako wartości dla WEBSITE_RUN_FROM_PACKAGE. Tożsamość zarządzana jest zalecana w przypadku ogólnych zabezpieczeń, ponieważ tokeny SYGNATURy dostępu współdzielonego wygasają i muszą być obsługiwane ręcznie.
Za każdym razem, gdy wdrażasz plik pakietu, do którego odwołuje się aplikacja funkcji, należy ręcznie zsynchronizować wyzwalacze, w tym początkowe wdrożenie. Jeśli zmienisz zawartość pliku pakietu, a nie sam adres URL, musisz również ponownie uruchomić aplikację funkcji, aby zsynchronizować wyzwalacze. Zapoznaj się z naszym przewodnikiem z instrukcjami dotyczącymi konfigurowania tej technologii wdrażania.
Kiedy go używać: Zewnętrzny adres URL pakietu jest jedyną obsługiwaną metodą wdrażania dla aplikacji działających w planie Zużycie systemu Linux, gdy nie chcesz, aby kompilacja zdalna wystąpiła. Ta metoda jest również zalecaną technologią wdrażania podczas tworzenia aplikacji bez usługi Azure Files. W przypadku skalowalnych aplikacji działających w systemie Linux należy rozważyć hosting planu Flex Consumption.
Gdzie jest przechowywana zawartość aplikacji: odpowiadasz za przekazywanie zawartości aplikacji do magazynu obiektów blob. Możesz użyć dowolnego konta magazynu obiektów blob, chociaż zaleca się korzystanie z usługi Azure Blob Storage.
Kontener platformy Docker
Aplikację funkcji uruchomioną w kontenerze systemu Linux można wdrożyć.
Jak go używać: Tworzenie funkcji w kontenerze systemu Linux, a następnie wdrażanie kontenera w planie Premium lub Dedykowanym w usłudze Azure Functions lub innym hoście kontenera. Użyj narzędzi Azure Functions Core Tools , aby utworzyć dostosowany plik Dockerfile dla projektu, którego używasz do kompilowania konteneryzowanej aplikacji funkcji. Kontener można używać w następujących wdrożeniach:
- Wdróż w zasobach usługi Azure Functions utworzonych w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz Tworzenie w witrynie Azure Portal przy użyciu kontenerów.
- Wdróż w zasobach usługi Azure Functions utworzonych z poziomu wiersza polecenia. Wymaga planu Premium lub Dedykowanego (App Service). Aby dowiedzieć się, jak to zrobić, zobacz Tworzenie pierwszej konteneryzowanej usługi Azure Functions.
- Wdrażanie w usłudze Azure Container Apps. Aby dowiedzieć się, jak to zrobić, zobacz Tworzenie pierwszej konteneryzowanej usługi Azure Functions w usłudze Azure Container Apps.
- Wdrażanie w usłudze Azure Arc (wersja zapoznawcza). Aby dowiedzieć się, jak to zrobić, zobacz Tworzenie pierwszej konteneryzowanej usługi Azure Functions w usłudze Azure Arc (wersja zapoznawcza).
- Wdrażanie w klastrze Kubernetes. Wdrożenie w klastrze można wdrożyć przy użyciu narzędzi Azure Functions Core Tools. Użyj polecenia
func kubernetes deploy
.
Kiedy go używać: użyj opcji kontenera platformy Docker, jeśli potrzebujesz większej kontroli nad środowiskiem systemu Linux, w którym działa aplikacja funkcji i gdzie jest hostowany kontener. Ten mechanizm wdrażania jest dostępny tylko dla funkcji działających w systemie Linux.
Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w określonym rejestrze kontenerów w ramach obrazu.
Kontrola źródła
Możesz włączyć ciągłą integrację między aplikacją funkcji a repozytorium kodu źródłowego. Po włączeniu kontroli źródła aktualizacja kodu w połączonym repozytorium źródłowym wyzwala wdrożenie najnowszego kodu z repozytorium. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla usługi Azure Functions.
Jak go używać: najprostszym sposobem skonfigurowania publikowania z kontroli źródła jest centrum wdrażania w obszarze Funkcje portalu. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla usługi Azure Functions.
Kiedy go używać: Korzystanie z kontroli źródła jest najlepszym rozwiązaniem dla zespołów, które współpracują ze swoimi aplikacjami funkcji. Kontrola źródła to dobra opcja wdrożenia, która umożliwia bardziej zaawansowane potoki wdrażania. Kontrola źródła jest zwykle włączona w miejscu przejściowym, które można zamienić na środowisko produkcyjne po weryfikacji aktualizacji z repozytorium. Aby uzyskać więcej informacji, zobacz Miejsca wdrożenia usługi Azure Functions.
Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji znajduje się w systemie kontroli źródła, ale lokalnie sklonowana i skompilowana zawartość aplikacji jest przechowywana w systemie plików aplikacji, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.
Lokalna usługa Git
Możesz użyć lokalnego narzędzia Git do wypychania kodu z komputera lokalnego do usługi Azure Functions przy użyciu usługi Git.
Jak go używać: postępuj zgodnie z instrukcjami w temacie Wdrażanie lokalne usługi Git, aby aplikacja systemu Azure Service.
Kiedy go używać: aby zmniejszyć prawdopodobieństwo wystąpienia błędów, należy unikać używania metod wdrażania, które wymagają dodatkowego kroku ręcznego synchronizowania wyzwalaczy. Jeśli to możliwe, użyj wdrożenia zip.
Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.
FTP/S
Za pomocą protokołu FTP/S można bezpośrednio przesyłać pliki do usługi Azure Functions, chociaż ta metoda wdrażania nie jest zalecana. Jeśli nie planujesz korzystania z protokołu FTP, należy go wyłączyć. Jeśli zdecydujesz się używać protokołu FTP, należy wymusić usługę FTPS. Aby dowiedzieć się, jak w witrynie Azure Portal, zobacz Wymuszanie protokołu FTPS.
Jak go używać: postępuj zgodnie z instrukcjami w ustawieniach wdrażania FTPS, aby uzyskać adres URL i poświadczenia, których można użyć do wdrożenia w aplikacji funkcji przy użyciu usługi FTPS.
Kiedy go używać: aby zmniejszyć prawdopodobieństwo wystąpienia błędów, należy unikać używania metod wdrażania, które wymagają dodatkowego kroku ręcznego synchronizowania wyzwalaczy. Jeśli to możliwe, użyj wdrożenia zip.
Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.
Edytowanie portalu
W edytorze opartym na portalu można bezpośrednio edytować pliki, które znajdują się w aplikacji funkcji (zasadniczo wdrażane przy każdym zapisywaniu zmian).
Jak go używać: aby móc edytować funkcje w witrynie 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 uniemożliwia ciągłą edycję portalu. Aby powrócić do stanu, w którym można edytować pliki w witrynie Azure Portal, możesz ręcznie przywrócić tryb
Read/Write
edycji i usunąć wszystkie ustawienia aplikacji związane z wdrażaniem (na przykładWEBSITE_RUN_FROM_PACKAGE
).
Kiedy go używać: portal to dobry sposób na rozpoczęcie pracy z usługą Azure Functions. Ze względu na ograniczenia programistyczne w witrynie Azure Portal należy użyć jednego z następujących narzędzi klienckich bardziej zaawansowanych prac programistycznych:
Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.
Zachowania wdrożenia
Po wdrożeniu aktualizacji w kodzie aplikacji funkcji funkcje są obecnie przerywane. Po zakończeniu wdrażania nowy kod zostanie załadowany w celu rozpoczęcia przetwarzania żądań. Zapoznaj się z artykułem Zwiększanie wydajności i niezawodności usługi Azure Functions , aby dowiedzieć się, jak pisać funkcje bezstanowe i obronne.
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. Wdrażanie w miejscu wdrożenia, a następnie zamiana na środowisko produkcyjne po weryfikacji jest zalecanym sposobem konfigurowania ciągłego wdrażania.
Sposób wdrażania w miejscu zależy od określonego narzędzia wdrażania, którego używasz. Na przykład w przypadku korzystania z narzędzi Azure Functions Core Tools należy dołączyć--slot
opcję wskazania nazwy określonego miejsca dla func azure functionapp publish
polecenia.
Aby uzyskać więcej informacji na temat miejsc wdrożenia, zobacz dokumentację miejsc wdrożenia usługi Azure Functions, aby uzyskać szczegółowe informacje.
Następne kroki
Przeczytaj następujące artykuły, aby dowiedzieć się więcej na temat wdrażania aplikacji funkcji: