Udostępnij za pomocą


Hostowanie funkcji Azure w Azure Container Apps

Ważne

Nowa metoda hostingu do uruchamiania usługi Azure Functions bezpośrednio w usłudze Azure Container Apps jest teraz dostępna (zobacz ogłoszenie) i zalecana dla większości nowych obciążeń. Ta integracja umożliwia korzystanie z pełnych funkcji i możliwości usługi Azure Container Apps przy jednoczesnym korzyść z modelu programowania funkcji i prostoty automatycznego skalowania udostępnianego przez usługę Azure Functions.

Aby uzyskać więcej informacji, zobacz Natywna obsługa usługi Azure Functions w usłudze Azure Container Apps

Usługa Azure Functions zapewnia zintegrowaną obsługę tworzenia, wdrażania i zarządzania konteneryzowanymi aplikacjami funkcji w usłudze Azure Container Apps. Usługa Azure Container Apps umożliwia hostowanie kontenerów aplikacji funkcji, gdy musisz uruchamiać funkcje sterowane zdarzeniami na platformie Azure w tym samym środowisku co inne mikrousługi, interfejsy API, witryny internetowe, przepływy pracy lub dowolne programy hostowane w kontenerze. Hosting Container Apps umożliwia uruchamianie funkcji w pełni zarządzanym środowisku opartym na Kubernetes z wbudowaną obsługą monitorowania open source, mTLS, Dapr i autoskalowania opartego na Kubernetes (KEDA).

Kod funkcji można napisać w dowolnym stosie języka obsługiwanym przez usługę Functions. Możesz użyć tych samych wyzwalaczy i powiązań usługi Functions ze skalowaniem opartym na zdarzeniach. Możesz również użyć istniejących narzędzi klienckich usługi Functions i witryny Azure Portal do tworzenia kontenerów, wdrażania kontenerów aplikacji funkcji w usłudze Container Apps i konfigurowania ciągłego wdrażania.

Integracja usługi Container Apps oznacza również, że konfiguracje sieci i możliwości obserwowania, które są zdefiniowane na poziomie środowiska aplikacji kontenera, mają zastosowanie do aplikacji funkcji tak samo jak w przypadku wszystkich mikrousług uruchomionych w środowisku usługi Container Apps. Otrzymujesz również inne natywne funkcje chmurowe w usłudze Container Apps, w tym KEDA, Dapr, Envoy. Nadal możesz używać usługi Application Insights do monitorowania wykonań funkcji, a aplikacja funkcji może uzyskiwać dostęp do tych samych zasobów sieci wirtualnych udostępnianych przez środowisko.

Aby zapoznać się z ogólnym omówieniem opcji hostingu kontenerów dla usługi Azure Functions, zobacz Obsługa kontenerów systemu Linux w usłudze Azure Functions.

Profile hostingu i obciążeń

Istnieją dwa podstawowe plany dotyczące usługi Container Apps: plan użycia bezserwerowego i plan dedykowany. Oba te elementy mogą być używane w typach środowisk profilów obciążeń, a profile obciążeń określają zasoby obliczeniowe i zasoby pamięci dostępne dla aplikacji. Profil obciążenia określa ilość zasobów obliczeniowych i pamięci dostępnych dla aplikacji kontenera wdrożonych w środowisku. Te profile są skonfigurowane tak, aby odpowiadały różnym potrzebom aplikacji.

Profil obciążenia o nazwie "Zużycie" jest domyślnym profilem dodawanym do każdego rodzaju środowiska profilów obciążeń. Profile dedykowanego obciążenia można dodawać do środowiska podczas tworzenia środowiska lub po jego utworzeniu. Aby dowiedzieć się więcej na temat profilów obciążeń, zobacz Profile obciążeń w usłudze Azure Container Apps.

Usługa Container Apps hostująca aplikacje funkcji konteneryzowanych jest obsługiwana we wszystkich regionach obsługujących usługę Container Apps.

Jeśli aplikacja nie ma określonych wymagań sprzętowych, możesz uruchomić środowisko w planie konsumpcyjnym lub w planie dedykowanym przy użyciu domyślnego profilu obciążenia konsumpcyjnego. W przypadku uruchamiania funkcji w usłudze Container Apps opłaty są naliczane tylko za użycie usługi Container Apps. Aby uzyskać więcej informacji, zobacz stronę cennika usługi Azure Container Apps.

Usługa Azure Functions w usłudze Azure Container Apps obsługuje hosting z obsługą procesora GPU w planie dedykowanym z profilami obciążeń.

Aby dowiedzieć się, jak utworzyć i wdrożyć funkcję aplikacji w formie kontenera do usługi Container Apps w domyślnym planie konsumpcji, zobacz Tworzenie pierwszych konteneryzowanych funkcji w usłudze Azure Container Apps.

Aby dowiedzieć się, jak utworzyć środowisko usługi Container Apps z profilami obciążeń i wdrożyć kontener aplikacji funkcji do określonego profilu obciążeń, sprawdź profile obciążeń usługi Container Apps.

Funkcje w kontenerach

Aby korzystać z hostingu usługi Container Apps, kod musi być uruchamiany w aplikacji funkcji w kontenerze systemu Linux, który tworzysz i konserwujesz. Usługa Functions utrzymuje zestaw obrazów bazowych specyficznych dla języka, których można użyć do generowania konteneryzowanych aplikacji funkcji.

Podczas tworzenia projektu kodu przy użyciu narzędzi Azure Functions Core Tools i dołączania --docker opcji narzędzia Core Tools generuje plik Dockerfile z poprawnym obrazem podstawowym, którego można użyć jako punktu wyjścia podczas tworzenia kontenera.

Ważne

Podczas tworzenia własnych kontenerów musisz zachować obraz bazowy kontenera zaktualizowany do najnowszej obsługiwanej wersji. Obsługiwane obrazy podstawowe dla usługi Azure Functions są specyficzne dla języka i znajdują się w repozytoriach obrazów podstawowych usługi Azure Functions.

Zespół odpowiedzialny za funkcje zobowiązuje się do publikowania comiesięcznych aktualizacji dla tych bazowych obrazów. Regularne aktualizacje obejmują najnowsze aktualizacje wersji pomocniczej i poprawki zabezpieczeń dla środowiska uruchomieniowego i języków usługi Functions. Należy regularnie aktualizować kontener z najnowszego obrazu podstawowego i ponownie wdrożyć zaktualizowaną wersję kontenera. Aby uzyskać więcej informacji, zobacz Obsługa kontenerów niestandardowych.

Po wprowadzeniu zmian w kodzie funkcji należy ponownie skompilować i ponownie opublikować obraz kontenera. Aby uzyskać więcej informacji, zobacz Aktualizowanie obrazu w rejestrze.

Opcje wdrażania

Usługa Azure Functions obsługuje obecnie następujące metody wdrażania konteneryzowanej aplikacji funkcji w usłudze Azure Container Apps:

Aplikacje konteneryzowane można stale wdrażać z poziomu kodu źródłowego przy użyciu usługi Azure Pipelines lub GitHub Actions. Funkcja ciągłego wdrażania usługi Functions nie jest obecnie obsługiwana podczas wdrażania w usłudze Container Apps.

Autoryzacja tożsamości zarządzanej

Aby uzyskać najlepsze zabezpieczenia, należy połączyć się z usługami zdalnymi przy użyciu uwierzytelniania firmy Microsoft Entra i autoryzacji tożsamości zarządzanej. Dla tych połączeń można użyć tożsamości zarządzanych:

Podczas uruchamiania aplikacji kontenerowych możesz korzystać z Entra ID firmy Microsoft z tożsamościami zarządzanymi dla wszystkich rozszerzeń powiązań, które obsługują tożsamości zarządzane. Obecnie tylko te rozszerzenia powiązań obsługują skalowanie oparte na zdarzeniach podczas korzystania z uwierzytelniania tożsamości zarządzanej:

  • Azure Event Hubs
  • Azure Queue Storage (kolejka magazynowa w Azure)
  • Usługa Azure Service Bus

W przypadku innych powiązań użyj replik statycznych podczas korzystania z uwierzytelniania tożsamości zarządzanej. Aby uzyskać więcej informacji, zobacz Przewodnik dla deweloperów usługi Functions.

Integracja sieci wirtualnej

W przypadku hostowania aplikacji funkcji w środowisku usługi Container Apps, funkcje mogą korzystać zarówno z wewnętrznie, jak i zewnętrznie dostępnych sieci wirtualnych. Aby dowiedzieć się więcej o sieciach środowiskowych, zobacz Networking in Azure Container Apps environment (Sieć w środowisku aplikacji kontenerowych w usłudze Azure).

Skalowanie oparte na zdarzeniach

Wszystkie wyzwalacze funkcji mogą być używane w konteneryzowanej aplikacji funkcji. Jednak tylko te wyzwalacze mogą dynamicznie skalować (od zera instancji) na podstawie odebranych zdarzeń podczas działania w środowisku Container Apps.

  • Azure Cosmos DB (połączenie KEDA)
  • Azure Event Grid
  • Azure Event Hubs
  • Azure Blob Storage (oparta na usłudze Event Grid)
  • Azure Queue Storage (kolejka magazynowa w Azure)
  • Usługa Azure Service Bus
  • Durable Functions (dostawca magazynu MSSQL)
  • HTTP
  • Kafka
  • Czasomierz

Usługa Azure Functions w usłudze Container Apps została zaprojektowana w celu skonfigurowania parametrów i reguł skalowania zgodnie z docelowym zdarzeniem. Nie musisz martwić się o konfigurowanie skalowanych obiektów KEDA. Nadal można ustawić minimalną i maksymalną liczbę replik podczas tworzenia lub modyfikowania aplikacji funkcji. Polecenie interfejsu wiersza polecenia Azure pokazane poniżej ustawia minimalną i maksymalną liczbę replik podczas tworzenia nowej aplikacji funkcjonalnej w środowisku Azure Container Apps z rejestru Azure Container Registry.

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

Następujące polecenie ustawia tę samą minimalną i maksymalną liczbę replik w istniejącej aplikacji funkcji:

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

Zarządzane grupy zasobów

Usługa Azure Functions na platformie Container Apps uruchamia konteneryzowane aplikacje funkcji w specjalnie zarządzanych grupach zasobów. Te zarządzane grupy zasobów pomagają chronić spójność aplikacji, uniemożliwiając niezamierzone lub nieautoryzowane modyfikacje lub usunięcie zasobów w grupie zarządzanej, nawet przez jednostki usługi.

Przy pierwszym tworzeniu zasobów aplikacji funkcji w środowisku aplikacji kontenerowych, automatycznie tworzona jest dla Ciebie zarządzana grupa zasobów. Zasoby aplikacji funkcji Container Apps, wymagane przez Twoją konteneryzowaną aplikację, działają w tej zarządzanej grupie zasobów. Wszystkie inne aplikacje funkcji utworzone w tym samym środowisku używają tej istniejącej grupy.

Zarządzana grupa zasobów zostanie automatycznie usunięta po usunięciu wszystkich zasobów kontenera aplikacji funkcji ze środowiska. Gdy zarządzana grupa zasobów jest widoczna, wszelkie próby zmodyfikowania lub usunięcia zarządzanej grupy zasobów spowodują błąd. Aby usunąć zarządzaną grupę zasobów ze środowiska, usuń wszystkie zasoby kontenerów aplikacji funkcji, a zostanie ona automatycznie usunięta.

Jeśli wystąpią problemy z tymi zarządzanymi grupami zasobów, skontaktuj się z pomocą techniczną.

Rejestrowanie aplikacji

Możesz monitorować konteneryzowaną aplikację funkcji hostowaną w usłudze Container Apps przy użyciu usługi Azure Monitor Application Insights w taki sam sposób, jak w przypadku aplikacji hostowanych przez usługę Azure Functions. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions.

W przypadku powiązań, które wspierają skalowanie sterowane zdarzeniami, zdarzenia skalowania są rejestrowane jako zdarzenia FunctionsScalerInfo oraz FunctionsScalerError w obszarze roboczym usługi Log Analytics. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji w usłudze Azure Container Apps.

Zagadnienia dotyczące hostowania usługi Container Apps

Podczas wdrażania kontenerów aplikacji funkcji do Container Apps należy pamiętać o następujących kwestiach:

  • Te ograniczenia dotyczą wyzwalaczy platformy Kafka:
    • Wartość protokołu ssl nie jest obsługiwana w przypadku hostowania w usłudze Container Apps. Użyj innej wartości protokołu.
    • Aby wyzwalacz Kafka był dynamicznie skalowany w przypadku połączenia z usługą Event Hubs, username właściwość musi odnosić się do ustawienia aplikacji zawierającego rzeczywistą wartość nazwy użytkownika. Gdy jest używana wartość domyślna $ConnectionString , wyzwalacz platformy Kafka nie może spowodować dynamicznego skalowania aplikacji.
  • W przypadku wbudowanych definicji zasad usługi Container Apps obecnie tylko zasady na poziomie środowiska dotyczą kontenerów usługi Azure Functions.
  • Domyślnie konteneryzowana aplikacja funkcji monitoruje port 80 dla żądań przychodzących. Jeśli aplikacja musi używać innego portu, użyj WEBSITES_PORT ustawienia aplikacji, aby zmienić ten port domyślny.
  • Obecnie nie można używać wbudowanych funkcji ciągłego wdrażania podczas hostowania w usłudze Container Apps. Zamiast tego należy wdrożyć z kodu źródłowego przy użyciu usługi Azure Pipelines lub GitHub Actions.
  • Obecnie nie można przenieść wdrożenia aplikacji funkcji hostowanej przez usługę Container Apps między grupami zasobów lub między subskrypcjami. Zamiast tego należy ponownie utworzyć istniejące konteneryzowane wdrożenie aplikacji w nowej grupie zasobów, subskrypcji lub regionie.
  • W przypadku korzystania z usługi Container Apps nie masz bezpośredniego dostępu do interfejsów API platformy Kubernetes niższego poziomu.
  • Rozszerzenie containerapp powoduje konflikt z rozszerzeniem appservice-kube w Azure CLI. Jeśli wcześniej opublikowałeś aplikacje w usłudze Azure Arc, uruchom polecenie az extension list i upewnij się, że appservice-kube nie jest zainstalowany. Jeśli tak jest, możesz go usunąć, uruchamiając polecenie az extension remove -n appservice-kube.