Azure Functions v Kubernetes s VYUŽITÍM KEDA

Modul runtime Azure Functions poskytuje flexibilitu hostování, kde a jak chcete. KeDA (automatické škálování řízené událostmi založené na Kubernetes) se bezproblémově spáruje s modulem runtime Azure Functions a nástroji pro zajištění škálování řízeného událostmi v Kubernetes.

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í, na kterých běží vaše aplikace. Další informace najdete v tématu Azure Functions škálování a hostování.

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 0 instancí (pokud se nedochází k žádným událostem) a odcházet do n instancí. To provede zveřejněním vlastních metrik pro automatické škálování Kubernetes (horizontální automatické škálování podů). Použití kontejnerů Functions s KEDA umožňuje replikovat funkce bezserverové funkce v libovolném 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 spustit funkce v clusteru Kubernetes, musíte nainstalovat komponentu KEDA. Tuto komponentu můžete nainstalovat jedním z následujících způsobů:

  • Azure Functions Core Tools: pomocí func kubernetes install příkazu.

  • Helm: Existují různé způsoby instalace KEDA v libovolném clusteru Kubernetes, včetně Helmu. Možnosti nasazení jsou zdokumentované na webu KEDA.

Nasazení aplikace funkcí do Kubernetes

Do clusteru Kubernetes se systémem 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 to zapomněli udělat, můžete vždy volat func init z kořenového adresáře projektu Functions, tentokrát pomocí --docker-only možnosti, jak je znázorněno v následujícím příkladu.

func init --docker-only

Další informace o generování souboru Dockerfile najdete v referenčních informacích func init .

Pokud chcete vytvořit image a nasadit funkce do Kubernetes, spusťte následující příkaz:

func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>

V tomto příkladu nahraďte <name-of-function-deployment> názvem aplikace funkcí.

Příkaz deploy provede následující:

  1. Soubor Dockerfile vytvořený dříve slouží k sestavení místní image aplikace funkcí.
  2. Místní image je označená a nasdílená do registru kontejneru, ve kterém je uživatel přihlášený.
  3. Manifest se vytvoří a použije na cluster, který definuje prostředek Kubernetes Deployment , ScaledObject prostředek a Secrets, který zahrnuje proměnné prostředí importované z vašeho local.settings.json souboru.

Další informace najdete v func kubernetes deploy příkazu.

Nasazení aplikace funkcí z privátního registru

Výše uvedený tok funguje i pro privátní registry. Pokud načítáte image kontejneru z privátního registru, uveďte --pull-secret příznak, který odkazuje na tajný kód Kubernetes, který při spuštění func kubernetes deployobsahuje přihlašovací údaje privátního registru.

Odebrání aplikace funkcí z Kubernetes

Po nasazení můžete funkci odebrat odebráním přidruženého Deploymentobjektu , ScaledObjectvytvořeného objektu 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ů:

Podporované triggery v KEDA

KeDA má podporu pro následující triggery funkce Azure Functions:

Podpora triggeru HTTP

Můžete použít Azure Functions, které zpřístupňují triggery HTTP, ale KEDA je nespravuje přímo. Trigger KEDA prometheus můžete využít k škálování http Azure Functions z 1 na n instancí.

Další kroky

Další informace naleznete v následujících zdrojích: