Udostępnij za pośrednictwem


Hostowanie usługi Azure Container Apps w usłudze Azure Functions

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 usługi Container Apps umożliwia uruchamianie funkcji w w pełni zarządzanym środowisku opartym na platformie Kubernetes z wbudowaną obsługą monitorowania typu open source, mTLS, Dapr i Kubernetes opartego na autoskalowaniu (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. Uzyskasz również inne możliwości natywne dla chmury usługi 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 hostingu dla usługi Container Apps, plan użycia bezserwerowego i plan dedykowany, który korzysta z profilów obciążeń w celu lepszego kontrolowania zasobów wdrażania. 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 Zużycie jest domyślnym profilem dodanym do każdego typu ś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 Zużycie lub w planie dedykowanym przy użyciu domyślnego profilu obciążenia Zużycie. 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ć kontener aplikacji funkcji w usłudze Container Apps w domyślnym planie Zużycie, 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 w określonym obciążeniu, zobacz Container Apps workload profiles (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 obsługuje zestaw obrazów podstawowych specyficznych dla języka, których można użyć do generowania aplikacji funkcji konteneryzowanych.

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 należy zachować obraz podstawowy kontenera zaktualizowany do najnowszego obsługiwanego obrazu podstawowego. 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ół usługi Functions zobowiązuje się do publikowania comiesięcznych aktualizacji dla tych obrazów podstawowych. 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.

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:

Integracja sieci wirtualnej

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

Konfigurowanie reguł skalowania

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. Następujące polecenie interfejsu wiersza polecenia platformy Azure ustawia minimalną i maksymalną liczbę replik podczas tworzenia nowej aplikacji funkcji w środowisku usługi Container Apps z usługi 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 w usłudze Container Apps uruchamia konteneryzowane zasoby aplikacji 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.

Zarządzana grupa zasobów jest tworzona po raz pierwszy podczas tworzenia zasobów aplikacji funkcji w środowisku usługi Container Apps. Zasoby usługi Container Apps wymagane przez konteneryzowaną aplikację funkcji są uruchamiane 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 kontenera aplikacji funkcji i zostaną usunięte.

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

Zagadnienia dotyczące hostowania usługi Container Apps

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

  • Chociaż wszystkie wyzwalacze mogą być używane, podczas uruchamiania w środowisku usługi Container Apps można dynamicznie skalować tylko następujące wyzwalacze (od zera wystąpień):
    • Azure Event Grid
    • Azure Event Hubs
    • Azure Blob Storage (oparta na zdarzeniach)
    • Azure Queue Storage
    • Azure Service Bus
    • Durable Functions (dostawca magazynu MSSQL)
    • HTTP
    • Kafka
    • Czasomierz
  • Te ograniczenia dotyczą wyzwalaczy platformy Kafka:
    • Wartość protokołu nie jest obsługiwana ssl w przypadku hostowania w usłudze Container Apps. Użyj innej wartości protokołu.
    • Aby wyzwalacz platformy Kafka był dynamicznie skalowany w przypadku połączenia z usługą Event Hubs, username właściwość musi być rozpoznawana jako ustawienie aplikacji zawierające rzeczywistą wartość nazwy użytkownika. Gdy zostanie użyta wartość domyślna $ConnectionString , wyzwalacz platformy Kafka nie będzie mógł 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.
  • Dla tych połączeń można użyć tożsamości zarządzanych:
  • 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 w interfejsie appservice-kube wiersza polecenia platformy Azure. Jeśli wcześniej opublikowano aplikacje w usłudze Azure Arc, uruchom polecenie az extension list i upewnij się, że appservice-kube nie zainstalowano. Jeśli tak jest, możesz go usunąć, uruchamiając polecenie az extension remove -n appservice-kube.

Następne kroki