Usługa Azure Functions na platformie Kubernetes z usługą KEDA

Środowisko uruchomieniowe usługi Azure Functions zapewnia elastyczność hostingu, gdzie i w jaki sposób chcesz. KEDA (oparte na platformie Kubernetes autoskalowanie oparte na zdarzeniach) bezproblemowo współpracuje ze środowiskiem uruchomieniowym i narzędziami usługi Azure Functions, aby zapewnić skalowanie sterowane zdarzeniami na platformie Kubernetes.

Ważne

Uruchamianie konteneryzowanych aplikacji funkcji na platformie Kubernetes przy użyciu usługi KEDA lub bezpośredniego wdrażania jest nakładem pracy typu open source, który można bezpłatnie wykorzystać. Pomoc techniczna dotycząca najlepszych wysiłków jest zapewniana przez współautorów i członków społeczności przy użyciu problemów z usługą GitHub w repozytorium usługi Azure Functions. Skorzystaj z tych problemów, aby zgłaszać usterki i zgłaszać żądania funkcji. Wdrożenia aplikacji funkcji konteneryzowanych w usłudze Azure Container Apps, które są uruchamiane w zarządzanych klastrach Kubernetes na platformie Azure, są obecnie dostępne w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Hostowanie usługi Azure Container Apps w usłudze Azure Functions.

Jak działają funkcje oparte na platformie Kubernetes

Usługa Azure Functions składa się z dwóch kluczowych składników: środowiska uruchomieniowego i kontrolera skalowania. Środowisko uruchomieniowe usługi Functions uruchamia i wykonuje kod. Środowisko uruchomieniowe zawiera logikę wyzwalania, rejestrowania i zarządzania wykonywaniami funkcji. Środowisko uruchomieniowe usługi Azure Functions może działać w dowolnym miejscu. Drugi składnik jest kontrolerem skalowania. Kontroler skalowania monitoruje szybkość zdarzeń, które są przeznaczone dla funkcji, i aktywnie skaluje liczbę wystąpień uruchomionych w aplikacji. Aby dowiedzieć się więcej, zobacz Skalowanie i hostowanie usługi Azure Functions.

Funkcje oparte na platformie Kubernetes udostępniają środowisko uruchomieniowe usługi Functions w kontenerze platformy Docker ze skalowaniem opartym na zdarzeniach za pośrednictwem usługi KEDA. KEDA może skalować do 0 wystąpień (jeśli nie występują żadne zdarzenia) i na n wystąpień. Robi to, ujawniając metryki niestandardowe dla narzędzia do automatycznego skalowania Kubernetes (Horizontal Pod Autoscaler). Używanie kontenerów usługi Functions z usługą KEDA umożliwia replikowanie funkcji bezserwerowych w dowolnym klastrze Kubernetes. Te funkcje można również wdrożyć przy użyciu funkcji węzłów wirtualnych usługi Azure Kubernetes Services (AKS) dla infrastruktury bezserwerowej.

Zarządzanie funkcją KEDA i funkcjami na platformie Kubernetes

Aby uruchomić funkcje w klastrze Kubernetes, należy zainstalować składnik KEDA. Ten składnik można zainstalować na jeden z następujących sposobów:

  • Podstawowe narzędzia usługi Azure Functions: za pomocą func kubernetes install polecenia .

  • Helm: istnieją różne sposoby instalowania usługi KEDA w dowolnym klastrze Kubernetes, w tym helm. Opcje wdrażania są udokumentowane w witrynie KEDA.

Wdrażanie aplikacji funkcji na platformie Kubernetes

Możesz wdrożyć dowolną aplikację funkcji w klastrze Kubernetes z uruchomioną usługą KEDA. Ponieważ funkcje działają w kontenerze platformy Docker, projekt wymaga pliku Dockerfile. Plik Dockerfile można utworzyć przy użyciu --docker opcji podczas wywoływania func init w celu utworzenia projektu. Jeśli zapomnisz to zrobić, zawsze func init możesz wywołać ponownie z katalogu głównego projektu usługi Functions, tym razem przy użyciu --docker-only opcji , jak pokazano w poniższym przykładzie.

func init --docker-only

Aby dowiedzieć się więcej na temat generowania pliku Dockerfile, zobacz dokumentację func init .

Aby skompilować obraz i wdrożyć funkcje na platformie Kubernetes, uruchom następujące polecenie:

func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>

W tym przykładzie zastąp <name-of-function-deployment> ciąg nazwą aplikacji funkcji.

Polecenie deploy wykonuje następujące czynności:

  1. Utworzony wcześniej plik Dockerfile służy do tworzenia obrazu lokalnego dla aplikacji funkcji.
  2. Obraz lokalny został otagowany i wypchnięty do rejestru kontenerów, w którym użytkownik jest zalogowany.
  3. Manifest jest tworzony i stosowany do klastra, który definiuje zasób Kubernetes Deployment , ScaledObject zasób i Secrets, który zawiera zmienne środowiskowe zaimportowane z pliku local.settings.json .

Aby dowiedzieć się więcej, zobacz func kubernetes deploy polecenie .

Wdrażanie aplikacji funkcji z rejestru prywatnego

Powyższy przepływ działa również w przypadku rejestrów prywatnych. Jeśli ściągasz obraz kontenera z rejestru prywatnego, dołącz flagę --pull-secret , która odwołuje się do wpisu tajnego Kubernetes zawierającego poświadczenia rejestru prywatnego podczas uruchamiania func kubernetes deploypolecenia .

Usuwanie aplikacji funkcji z platformy Kubernetes

Po wdrożeniu można usunąć funkcję przez usunięcie skojarzonego Deploymentelementu , ScaledObject, utworzonego Secrets .

kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>

Odinstalowywanie usługi KEDA z platformy Kubernetes

Możesz usunąć usługę KEDA z klastra na jeden z następujących sposobów:

Obsługiwane wyzwalacze w usłudze KEDA

Usługa KEDA obsługuje następujące wyzwalacze funkcji platformy Azure:

Obsługa wyzwalacza HTTP

Możesz użyć usługi Azure Functions, która uwidacznia wyzwalacze HTTP, ale usługa KEDA nie zarządza nimi bezpośrednio. Możesz użyć wyzwalacza prometheus KEDA, aby skalować usługę Azure Functions HTTP z 1 do n wystąpień.

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące zasoby: