Ciągłe wdrażanie dla usługi Azure Functions

Usługa Azure Functions umożliwia ciągłe wdrażanie zmian z repozytorium kontroli źródła do aplikacji funkcji. W tym workflow aktualizacja kodu uruchamia build, pakowanie i wdrożenie z Twojego projektu do Azure. Wspierani dostawcy wdrożeń i strategie wydania zależą od planu hostingu.

Plan hostingu Zalecany dostawca CI/CD Wytyczne dotyczące wdrażania i wydań
Zużycie elastyczne GitHub Actions lub Azure Pipelines Wykorzystuje wdrażanie pakietów. Sloty na wdrożenie nie są obsługiwane. Korzystaj z kontroli wydawnictwa CI/CD i rozważ aktualizacje ciągłe dla wdrożeń bez przestojów.
Elastic Premium, Dedykowane i Zużycie GitHub Actions lub Azure Pipelines Wykorzystuje wdrażanie ZIP. Jeśli aplikacja to obsługuje, wdróż do slotu przejściowego, zweryfikuj aktualizację, a następnie zamień go z produkcyjnym.
Azure Container Apps Workflow budowy i wdrażania kontenerów Wdraża obraz kontenera. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Functions w usłudze Azure Container Apps.

Wybierz swój plan hostingu na górze tego artykułu, aby zobaczyć instrukcje dotyczące ciągłego wdrażania dotyczące Twojej aplikacji funkcjonalnej.

W przypadku planów hostingowych, które obsługują gniazda wdrożeniowe, skonfiguruj ciągłe wdrażanie dla gniazda przejściowego zamiast gniazda produkcyjnego. Sprawdź aktualizacje w środowisku przejściowym, a następnie zamień slot środowiska przejściowego na produkcyjny. Jeśli łączysz się bezpośrednio z slotem produkcyjnym, upewnij się, że do zintegrowanej gałęzi dociera tylko kod jakości produkcyjnej.

Do Flex Consumption konfiguruj GitHub Actions lub Azure Pipelines. Ponieważ plan Flex Consumption nie obsługuje gniazd wdrożeniowych, przechowuj historię wdrożeń w systemie kontroli wersji oraz w systemie CI/CD, aby móc odzyskać sprawność po nieudanym wdrożeniu.

W przypadku usługi Functions w Azure Container Apps utwórz i wdroż obraz kontenera. Sloty na rozmieszczenie nie są dostępne. Korzystaj z wersji i rozważ strategię wdrożenia niebiesko-zielonej dla wydań bez przestojów.

Kroki Centrum Wdrożeniowego opisane w tym artykule dotyczą aplikacji funkcjonalnych wspierających integrację z kontrolą źródeł App Service. W planie Consumption ta integracja jest obsługiwana tylko na Windows. Możesz także skonfigurować integrację z kontrolą źródła, korzystając z Azure CLI.

Usługa Azure Functions obsługuje te źródła na potrzeby ciągłego wdrażania w aplikacji:

Obsługa kodu projektu w usłudze Azure Repos — jednej z usług w usłudze Azure DevOps. Obsługuje zarówno usługę Git, jak i Kontrola wersji serwera Team Foundation. Używany z dostawcą kompilacji Azure Pipelines. Aby uzyskać więcej informacji, zobacz Co to jest usługa Azure Repos?

Możesz też połączyć aplikację funkcjonalną z zewnętrznym repozytorium Gita, ale ta opcja wymaga ręcznej synchronizacji. Aby uzyskać więcej informacji na temat opcji wdrażania, zobacz Technologie wdrażania w usłudze Azure Functions.

Uwaga

Opcje ciągłego wdrażania omówione w tym artykule są specyficzne dla wdrażania wyłącznie kodu. Informacje na temat usługi Azure Functions w Azure Container Apps można znaleźć w artykule Omówienie usługi Azure Functions w Azure Container Apps. W przypadku niestandardowego kontenera hostowanego w usłudze Azure Functions w planie Premium lub Dedykowanym zobacz sekcję Włącz ciągłe wdrażanie kontenerów na platformie Azure w artykule Praca z kontenerami i usługą Azure Functions.

Flex Consumption obsługuje ciągłe wdrażanie z Azure Repos za pomocą Azure Pipelines oraz z GitHub za pomocą GitHub Actions. Integracja usługi App Service z kontrolą źródła, w tym wdrożenia Bitbucket i Local Git, nie jest obsługiwana.

Jeśli chodzi o funkcje na Azure Container Apps, utrzymuj swój kod w preferowanym repozytorium i korzystaj z workflow CI/CD do budowy i wysyłania obrazu kontenera. Następnie zaktualizuj aplikację funkcyjną, żeby używała nowego obrazu. Więcej informacji można znaleźć w artykule Wdrażanie i konfiguracja usługi Functions w usłudze Azure Container Apps.

Wymagania

Jednostką wdrożenia funkcji na platformie Azure jest aplikacja funkcji. Aby ciągłe wdrażanie zakończyło się pomyślnie, struktura katalogów projektu musi być zgodna z podstawową strukturą folderów oczekiwaną przez usługę Azure Functions. Gdy tworzysz swój projekt kodu za pomocą Azure Functions Core Tools, Visual Studio Code lub Visual Studio, szablony Azure Functions tworzą projekty kodu z odpowiednią strukturą katalogów. Wszystkie funkcje wdrażasz w aplikacji funkcjonalnej jednocześnie i w tym samym pakiecie.

Po włączeniu ciągłego wdrażania dostęp do kodu funkcji w portalu Azure jest skonfigurowany jako tylko do odczytu, ponieważ źródło prawdy znajduje się gdzie indziej.

Uwaga

Centrum wdrażania nie obsługuje włączania ciągłego wdrażania dla aplikacji funkcji z ograniczeniami sieciowymi dla ruchu przychodzącego. Zamiast tego konfiguruj workflow dostawcy buildów bezpośrednio w GitHub lub Azure Pipelines. Runner lub agent musi być w stanie dotrzeć do punktu wdrożenia aplikacji przy skonfigurowanych ograniczeniach dostępu. Gdy punkt końcowy jest prywatny, runner lub agent również potrzebuje prywatnej rozdzielczości DNS. W przypadku Azure Pipelines używaj agenta hostowanego samodzielnie w sieci połączonej lub zarządzanej puli agentów DevOps z sieciami. W przypadku GitHub Actions użyj samodzielnie hostowanego runnera w połączonej sieci lub runnera hostowanego na GitHub z prywatną siecią Azure.

Gdy Twoja aplikacja funkcyjna ma ograniczenia sieciowe przychodzące, runner workflow lub agent musi być w stanie dotrzeć do punktu wdrożenia aplikacji w ramach skonfigurowanych ograniczeń dostępu. Gdy punkt końcowy jest prywatny, runner lub agent również potrzebuje prywatnej rozdzielczości DNS. W przypadku Azure Pipelines używaj agenta hostowanego samodzielnie w sieci połączonej lub zarządzanej puli agentów DevOps z sieciami. W przypadku GitHub Actions użyj samodzielnie hostowanego runnera w połączonej sieci lub runnera hostowanego na GitHub z prywatną siecią Azure.

Twój przepływ pracy CI/CD musi zbudować prawidłowy obraz kontenera usługi Azure Functions, przesłać ten obraz do rejestru, do którego aplikacja kontenerowa ma dostęp, oraz zaktualizować aplikację funkcji, aby utworzyć rewizję na podstawie tego obrazu. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji funkcji w usłudze Azure Container Apps.

Wybieranie dostawcy kompilacji

Kompilowanie projektu kodu jest częścią procesu wdrażania. Konkretny proces kompilacji zależy od konkretnego stosu języka, systemu operacyjnego i planu hostingu. Możesz budować lokalnie lub zdalnie, w zależności od hostingu. Aby uzyskać więcej informacji, zobacz Zdalna kompilacja.

Ważne

Dla zwiększenia bezpieczeństwa korzystaj z dostawcy buildów obsługującego zarządzane tożsamości, takiego jak Azure Pipelines i GitHub Actions. Usługa kompilacji App Service wymaga od użytkownika włączenia uwierzytelniania podstawowego i używania poświadczeń opartych na tekście.

Usługa Azure Functions obsługuje następujących dostawców kompilacji:

Usługa Azure Pipelines jest jedną z usług w usłudze Azure DevOps i domyślnym dostawcą kompilacji dla projektów usługi Azure Repos. Usługi Azure Pipelines można również używać do kompilowania projektów z usługi GitHub. W usłudze Azure Pipelines istnieje AzureFunctionApp zadanie przeznaczone specjalnie do wdrażania w usłudze Azure Functions. To zadanie zapewnia kontrolę nad sposobem budowy, pakowania i wdrażania projektu. Usługa Azure Pipelines obsługuje tożsamości zarządzane.

Pamiętaj o mocnych stronach i ograniczeniach tych dostawców podczas włączania integracji z systemem kontroli wersji. Może być konieczne zmianę typu źródła repozytorium w celu skorzystania z określonego dostawcy.

Użyj Azure Pipelines lub GitHub Actions, aby zbudować i wdrożyć swój projekt. Ci dostawcy obsługują tożsamości Microsoft Entra i korzystają z procesu wdrażania pakietów Flex Consumption.

Usługa budowania App Service nie dotyczy Flex Consumption.

Użyj dostawcy kompilacji obrazów kontenerów, który może skompilować obraz Azure Functions, wypchnąć go do rejestru kontenerów i zaktualizować aplikację funkcji, aby utworzyć rewizję na podstawie nowego obrazu. Aby zapoznać się z kompletnym przepływem pracy GitHub Actions, zobacz Deploy to Azure Container Apps with GitHub Actions.

Konfigurowanie ciągłego wdrażania

Portal Azure udostępnia Centrum Wdrożenia dla Twoich aplikacji funkcyjnych, co ułatwia konfigurację ciągłego wdrażania. Konkretny sposób konfigurowania ciągłego wdrażania zależy zarówno od typu repozytorium kontroli źródła, w którym znajduje się kod, jak i wybranego dostawcy kompilacji.

W witrynie Azure Portal przejdź do strony aplikacji funkcji i wybierz pozycję Centrum wdrażania w obszarze Wdrażanie w okienku po lewej stronie.

Zrzut ekranu Function App Deployment Center w portalu Azure, gdzie wybierasz repozytorium źródłowe.

Wybierz typ repozytorium źródłowego, w którym jest obsługiwany kod projektu, z jednej z następujących obsługiwanych opcji:

Definiuj wdrożenia z Azure Repos, które używają Azure Pipelines w portalu Azure DevOps. Nie definiuj tych wdrożeń w aplikacji funkcjonalnej. Aby zapoznać się z przewodnikiem krok po kroku dotyczącym tworzenia wdrożenia opartego na usłudze Azure Pipelines na podstawie Azure Repos, zobacz Continuous delivery with Azure Pipelines.

Po zakończeniu wdrożenia usługa wdraża cały kod z określonego źródła do Twojej aplikacji. W tym etapie zmiany w źródle wdrożeniowym wyzwalają wdrożenie tych zmian w aplikacji funkcji w Azure.

Konfiguruj ciągłe wdrażanie w swoim repozytorium, korzystając z jednego z tych dostawców:

Każde udane uruchomienie workflow powoduje wdrożenie nowego pakietu aplikacji. Integracja kontroli źródeł w Deployment Center nie jest dostępna dla Flex Consumption.

Skonfiguruj przepływ pracy CI/CD, aby skompilować i opublikować obraz kontenera, a następnie wdrożyć ten obraz w aplikacji funkcji. Każda aktualizacja obrazu tworzy rewizję usługi Container Apps. Więcej informacji można znaleźć w artykule Deploy to Azure Container Apps with GitHub Actions.

Włączanie ciągłego wdrażania podczas tworzenia aplikacji

Gdy tworzysz aplikację funkcjonalną w portalu Azure, możesz skonfigurować ciągłe wdrażanie z GitHub, korzystając z GitHub Actions. Konfiguruj GitHub Actions na zakładce Deployment na stronie Create Function App.

Aby użyć innego źródła wdrożenia lub dostawcy buildów do ciągłej integracji, najpierw stwórz aplikację funkcyjną. Następnie wracaj do portalu i konfiguruj ciągłą integrację w Centrum Wdrożenia.

W przypadku Azure Pipelines najpierw stwórz aplikację funkcyjną, a następnie skonfiguruj pipeline w Azure DevOps.

Stwórz aplikację funkcyjną z obrazu kontenera, a następnie skonfiguruj workflow CI/CD, aby publikować zaktualizowane obrazy i tworzyć wersje. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji funkcji w usłudze Azure Container Apps.

Włączanie uwierzytelniania podstawowego dla wdrożeń

Ta sekcja dotyczy wyłącznie metod wdrożenia, które używają punktu końcowego wdrażania usługi App Service.

W niektórych przypadkach aplikacja funkcjonalna jest tworzona z wyłączonym dostępem do podstawowego uwierzytelniania do punktu końcowego wdrożenia. Ten warunek blokuje publikowanie wszystkimi metodami, które nie mogą użyć tożsamości Microsoft Entra do dostępu do punktu końcowego wdrożenia. Wpływ wyłączenia uwierzytelniania podstawowego na publikowanie dla punktu końcowego wdrożenia został szczegółowo opisany w Wdrażanie bez uwierzytelniania podstawowego.

Ważne

W przypadku korzystania z uwierzytelniania podstawowego poświadczenia są wysyłane w postaci zwykłego tekstu. Aby chronić te poświadczenia, należy uzyskiwać dostęp do punktu końcowego wdrażania wyłącznie za pośrednictwem szyfrowanego połączenia (HTTPS) podczas korzystania z uwierzytelniania podstawowego. Aby uzyskać więcej informacji, zobacz Bezpieczne wdrożenie.

Aby umożliwić podstawowe uwierzytelnianie dla punktu końcowego wdrożenia:

  1. W portalu Azure, przejdź do swojej aplikacji funkcji.

  2. W menu po lewej stronie aplikacji wybierz pozycję Ustawienia>Ustawienia>Ogólne ustawienia.

  3. Ustaw Poświadczenia publikowania uwierzytelniania podstawowego SCM na Włączone, a następnie wybierz Zapisz.

Podstawowe uwierzytelnianie SCM nie dotyczy wdrożeń pakietów Flex Consumption. Domyślnie usługa Azure Pipelines używa tokenu okaziciela Microsoft Entra z wymaganego połączenia usługi platformy Azure; zalecana jest federacja tożsamości obciążeń. Dla GitHub Actions użyj zalecanej autologacji OpenID Connect (OIDC). Metody te unikają publikowania danych SCM i są bezpieczniejsze niż podstawowa autoryzacja.

To podstawowe ustawienie uwierzytelniania nie dotyczy funkcji w Azure Container Apps. Zamiast tego skonfiguruj uwierzytelnianie między dostawcą CI/CD, rejestrem kontenerów i aplikacją kontenerową.

Następne kroki