Sdílet prostřednictvím


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.

Miniatura titulní miniatury nativních aplikací .NET pro Cloud Native pro Azure eBook

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 instanceszá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).