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 wdrożeń zarządzanych platformy Kubernetes zamiast tego należy rozważyć 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:
- Utworzony wcześniej plik Dockerfile służy do tworzenia obrazu lokalnego dla aplikacji funkcji.
- 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
.
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 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 1 do n wystąpień.
Następne kroki
Aby uzyskać więcej informacji, zobacz następujące zasoby: