Kombinování kontejnerů a bezserverových přístupů
Tip
Tento obsah je výňatek z eBooku, Architekting Cloud Native .NET Applications for Azure, který je k dispozici na webu Docs pro .NET nebo jako soubor PDF zdarma ke stažení, který si můžete přečíst offline.
Nativní cloudové aplikace obvykle implementují služby využívající kontejnery a orchestraci. Některé služby aplikace jsou často k dispozici jako Azure Functions. V případě aplikace nativní pro cloud nasazené do Kubernetes by ale bylo vhodné využít Azure Functions v rámci této stejné sady nástrojů. Azure Functions můžete naštěstí zabalit do kontejnerů Dockeru a nasadit je pomocí stejných procesů a nástrojů jako zbytek aplikace založené na Kubernetes.
Kdy má smysl používat kontejnery s bezserverovou službou?
Vaše funkce Azure Functions nemá žádné znalosti o platformě, na které je nasazená. V některých scénářích můžete mít specifické požadavky a budete muset přizpůsobit prostředí, na kterém se bude kód funkce spouštět. Budete potřebovat vlastní image, která podporuje závislosti nebo konfiguraci, kterou výchozí image nepodporuje. V těchto případech je vhodné nasadit funkci do vlastního kontejneru Dockeru.
Kdy byste se měli vyhnout používání kontejnerů se službou Azure Functions?
Pokud chcete používat fakturaci spotřeby, nemůžete funkci spustit v kontejneru. A co víc, pokud funkci nasadíte do clusteru Kubernetes, nebudete už těžit z integrovaného škálování poskytovaného službou Azure Functions. Budete muset použít funkce škálování Kubernetes popsané výše v této kapitole.
Kombinování bezserverových kontejnerů a kontejnerů Dockeru
Pokud chcete zabalit funkci Azure Functions do kontejneru Dockeru, nainstalujte nástroje Azure Functions Core Tools a spusťte následující příkaz:
func init ProjectName --worker-runtime dotnet --docker
Po vytvoření projektu bude obsahovat soubor Dockerfile a modul runtime pracovního procesu nakonfigurovaný na dotnet
. Teď můžete funkci vytvořit a otestovat místně. Sestavte a spusťte ho docker build
pomocí příkazů a docker run
příkazů. Podrobný postup, jak začít sestavovat Azure Functions s podporou Dockeru, najdete v kurzu vytvoření funkce v Linuxu pomocí vlastní image .
Jak kombinovat bezserverové prostředí a Kubernetes se službou KEDA
V této kapitole jste viděli, že platforma Azure Functions automaticky škáluje kapacitu tak, aby splňovala poptávku. Při nasazování kontejnerizovaných funkcí do AKS ale ztratíte integrované funkce škálování. K záchraně přichází Kubernetes založené na událostech (KEDA). Umožňuje jemně odstupňované automatické škálování pro event-driven Kubernetes workloads
, včetně kontejnerizovaných funkcí.
KEDA poskytuje funkce škálování řízené událostmi do modulu runtime služby Functions v kontejneru Dockeru. KEDA může škálovat z nulových instancí (pokud se nedějí žádné události) na n instances
základě zatížení. Umožňuje automatické škálování zveřejněním vlastních metrik automatického š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.
Stojí za zmínku, že projekt KEDA je nyní spravován Cloud Native Computing Foundation (CNCF).