Azure Functions v Kubernetes s VYUŽITÍM KEDA
Modul runtime Azure Functions poskytuje flexibilitu při hostování, kde a jak chcete. KeDA (automatické škálování řízené událostmi založené na Kubernetes) bezproblémově s modulem runtime Azure Functions a nástroji pro zajištění škálování řízeného událostmi v Kubernetes.
Důležité
Spouštění kontejnerizovaných aplikací funkcí v Kubernetes, a to buď pomocí KEDA, nebo přímým nasazením, je opensourcové úsilí, které můžete využívat zdarma. Podporu nejlepšího úsilí poskytují přispěvatelé a z komunity s využitím problémů s GitHubem v úložišti Azure Functions. Tyto problémy použijte k hlášení chyb a k vyvolání žádostí o funkce.
Pro plně podporovaná nasazení Kubernetes místo toho zvažte hostování Azure Container Apps služby Azure Functions.
Jak fungují funkce založené na Kubernetes
Služba Azure Functions se skládá ze dvou klíčových komponent: modulu runtime a kontroleru škálování. Modul runtime Služby Functions se spustí a spustí váš kód. Modul runtime obsahuje logiku, jak aktivovat, protokolovat a spravovat spouštění funkcí. Modul runtime Azure Functions může běžet kdekoli. Druhá komponenta je kontroler škálování. Kontroler škálování monitoruje rychlost událostí, které cílí na vaši funkci, a proaktivně škáluje počet instancí spuštěných vaší aplikací. Další informace najdete v tématu Škálování a hostování azure Functions.
Funkce založené na Kubernetes poskytují modul runtime Functions v kontejneru Dockeru s škálováním řízeným událostmi prostřednictvím KEDA. KeDA se může škálovat na nula instancí (pokud nedochází k žádným událostem) a v n instancích. To dělá zveřejněním vlastních metrik pro automatické škálování Kubernetes (horizontální automatické škálování podů). Použití kontejnerů Functions se službou KEDA umožňuje replikovat funkce bez serveru v jakémkoli clusteru Kubernetes. Tyto funkce je možné nasadit také pomocí funkce virtuálních uzlů Azure Kubernetes Services (AKS) pro bezserverovou infrastrukturu.
Správa keda a funkcí v Kubernetes
Pokud chcete ve svém clusteru Kubernetes spouštět funkce, musíte nainstalovat komponentu KEDA. Tuto komponentu můžete nainstalovat jedním z následujících způsobů:
Azure Functions Core Tools: pomocí příkazu
func kubernetes install
.Helm: Existují různé způsoby instalace KEDA v jakémkoli clusteru Kubernetes, včetně Helmu. Možnosti nasazení jsou popsané na webu KEDA.
Nasazení aplikace funkcí do Kubernetes
Do clusteru Kubernetes se spuštěným KEDA můžete nasadit libovolnou aplikaci funkcí. Vzhledem k tomu, že vaše funkce běží v kontejneru Dockeru, potřebuje váš projekt soubor Dockerfile. Soubor Dockerfile můžete vytvořit pomocí --docker
možnosti při volání func init
k vytvoření projektu. Pokud jste zapomněli vytvořit soubor Dockerfile, můžete vždy volat func init
z kořenového adresáře projektu kódu.
(Volitelné) Pokud potřebujete vytvořit soubor Dockerfile, použijte
func init
příkaz s--docker-only
možností:func init --docker-only
Další informace o generování souboru Dockerfile najdete v referenčních informacích
func init
.func kubernetes deploy
Pomocí příkazu sestavte image a nasaďte kontejnerizovanou aplikaci funkcí do Kubernetes:func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>
V tomto příkladu nahraďte
<name-of-function-deployment>
názvem vaší aplikace funkcí. Příkaz deploy provádí tyto úlohy:- Soubor Dockerfile vytvořený dříve slouží k sestavení místní image pro vaši kontejnerizovanou aplikaci funkcí.
- Místní image je označená a vložena do registru kontejneru, kde je uživatel přihlášený.
- Vytvoří se manifest a použije se na cluster, který definuje prostředek Kubernetes
Deployment
,ScaledObject
prostředek aSecrets
, který zahrnuje proměnné prostředí importované z vašeholocal.settings.json
souboru.
Nasazení aplikace funkcí z privátního registru
Předchozí kroky nasazení fungují i pro privátní registry. Pokud načítáte image kontejneru z privátního registru, zahrňte --pull-secret
příznak odkazující na tajný klíč Kubernetes, který při spuštění func kubernetes deploy
obsahuje přihlašovací údaje privátního registru.
Odebrání aplikace funkcí z Kubernetes
Po nasazení můžete odebrat funkci odebráním přidruženého Deployment
objektu , ScaledObject
vytvořeného Secrets
.
kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>
Odinstalace KEDA z Kubernetes
KeDA můžete z clusteru odebrat jedním z následujících způsobů:
Azure Functions Core Tools: pomocí příkazu
func kubernetes remove
.Helm: Podívejte se na postup odinstalace na webu KEDA.
Podporované triggery v KEDA
KEDA má podporu pro následující triggery funkce Azure:
Podpora triggeru HTTP
Můžete použít Azure Functions, které zpřístupňují triggery HTTP, ale KEDA je přímo nespravuje. Pomocí triggeru KEDA prometheus můžete škálovat azure Functions HTTP z jedné na n
instance.
Další kroky
Další informace naleznete v následujících zdrojích: