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.
W przypadku w pełni obsługiwanych wdrożeń platformy Kubernetes zamiast tego rozważ 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 zera wystąpień (jeśli nie występują żadne zdarzenia) i w poziomie do 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 utworzyć plik Dockerfile, zawsze możesz wywołać func init
go ponownie z katalogu głównego projektu kodu.
(Opcjonalnie) Jeśli musisz utworzyć plik Dockerfile, użyj
func init
polecenia z opcją--docker-only
:func init --docker-only
Aby dowiedzieć się więcej na temat generowania pliku Dockerfile, zobacz dokumentację
func init
.func kubernetes deploy
Użyj polecenia , aby skompilować obraz i wdrożyć konteneryzowaną aplikację funkcji na platformie Kubernetes: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 zadania:- Utworzony wcześniej plik Dockerfile służy do tworzenia obrazu lokalnego dla aplikacji funkcji konteneryzowanej.
- Obraz lokalny został otagowany i wypchnięty do rejestru kontenerów, w którym użytkownik jest zalogowany.
- Manifest jest tworzony i stosowany do klastra, który definiuje zasób Kubernetes
Deployment
,ScaledObject
zasób iSecrets
, który zawiera zmienne środowiskowe zaimportowane z plikulocal.settings.json
.
Wdrażanie aplikacji funkcji z rejestru prywatnego
Poprzednie kroki wdrażania działają również dla prywatnych rejestrów. 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 deploy
polecenia .
Usuwanie aplikacji funkcji z platformy Kubernetes
Po wdrożeniu można usunąć funkcję przez usunięcie skojarzonego Deployment
elementu , 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:
Podstawowe narzędzia usługi Azure Functions: za pomocą
func kubernetes remove
polecenia .Helm: zobacz kroki odinstalowywania w witrynie KEDA.
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 jednego do n
wystąpień.
Następne kroki
Aby uzyskać więcej informacji, zobacz następujące zasoby: