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 środowisku opartym na platformie Kubernetes z wbudowaną obsługą monitorowania typu open source, mTLS, Dapr i KEDA.

Ważne

Obsługa hostowania aplikacji funkcji w usłudze Azure Container Apps jest obecnie dostępna w wersji zapoznawczej.

Integracja z usługą Container Apps umożliwia używanie istniejącego modelu programowania funkcji do pisania kodu funkcji w preferowanym języku programowania lub strukturze obsługiwanej przez usługę Azure Functions. Nadal uzyskujesz wyzwalacze i powiązania usługi Functions ze skalowaniem opartym na zdarzeniach. Usługa Container Apps korzysta z możliwości bazowej usługi Azure Kubernetes Service (AKS) przy jednoczesnym usunięciu złożoności konieczności pracy z interfejsami API platformy Kubernetes.

Ta integracja oznacza również, że można 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. Konfiguracje sieci i możliwości obserwacji są definiowane na poziomie środowiska aplikacji kontenera i mają zastosowanie do wszystkich mikrousług działających w środowisku usługi Container Apps, w tym aplikacji funkcji. Uzyskasz również inne możliwości natywne dla chmury usługi Container Apps, w tym KEDA, Dapr, Envoy. Nadal można używać Szczegółowe informacje aplikacji do monitorowania wykonań funkcji.

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 funkcji musi być uruchamiany 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 usługi Functions 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:

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

Funkcja platformy Azure w usłudze Container Apps uruchamia zarządzane zasoby kontenerów w specjalnie zarządzanych grupach zasobów, co pomaga chronić spójność aplikacji, uniemożliwiając niezamierzone lub nieautoryzowane modyfikowanie lub usuwanie zasobów w grupie zarządzanej przez użytkowników, grupy lub zasady usługi. Ta 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 aplikację funkcji konteneryzowanej są uruchamiane w tej zarządzanej grupie zasobów, a 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 usłudze Container Apps można dynamicznie skalować tylko następujące wyzwalacze (od zera wystąpień):
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka*
    • Czasomierz
      *Wartość protokołu nie jest obsługiwana ssl w przypadku hostowania w usłudze Container Apps. Użyj innej wartości protokołu.
  • W przypadku wbudowanych definicji zasad usługi Container Apps obecnie tylko zasady na poziomie środowiska dotyczą kontenerów usługi Azure Functions.
  • 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.
  • Rozszerzenie Dapr usługi Functions jest również dostępne w wersji zapoznawczej z pomocą udostępnioną w repozytorium.

Następne kroki