Funções do Azure em Kubernetes com KEDA

O tempo de execução Funções do Azure proporciona flexibilidade no alojamento onde e como você quer. A KEDA (Event Driven Autoscaling baseada em Kubernetes) emparelha perfeitamente com o tempo de execução e ferramentas Funções do Azure para fornecer escala orientada para eventos em Kubernetes.

Como funcionam as funções baseadas em Kubernetes

O serviço Funções do Azure é composto por dois componentes-chave: um tempo de funcionamento e um controlador de escala. O tempo de execução das Funções executa e executa o seu código. O tempo de execução inclui lógica sobre como desencadear, registar e gerir execuções de funções. O tempo de execução Funções do Azure pode correr em qualquer lugar. O outro componente é um controlador de escala. O controlador de escala monitoriza a taxa de eventos que estão a direcionar a sua função e escala proativamente o número de casos que executam a sua aplicação. Para saber mais, consulte Funções do Azure escala e hospedagem.

As funções baseadas em Kubernetes proporcionam o tempo de funcionamento das funções num recipiente Docker com escalagem orientada para o evento através da KEDA. KEDA pode escalar em 0 casos (quando não ocorrerem eventos) e para n instâncias. Fá-lo expondo métricas personalizadas para o autoescalador Kubernetes (Horizontal Pod Autoscaler). A utilização de recipientes de funções com KEDA permite replicar capacidades de função sem servidor em qualquer cluster Kubernetes. Estas funções também podem ser implementadas usando a funcionalidade de nós virtuais Azure Kubernetes Services (AKS) para infraestruturas sem servidor.

Gestão da KEDA e funções em Kubernetes

Para executar funções no seu cluster Kubernetes, tem de instalar o componente KEDA. Pode instalar este componente de uma das seguintes formas:

  • Funções do Azure Ferramentas Principais: utilizar o func kubernetes install comando.

  • Helm: existem várias formas de instalar KEDA em qualquer cluster Kubernetes, incluindo Helm. As opções de implantação estão documentadas no site da KEDA.

Implementação de uma app de função para Kubernetes

Pode implementar qualquer aplicação de função num cluster Kubernetes que executa KEDA. Uma vez que as suas funções funcionam num contentor docker, o seu projeto precisa de um Dockerfile. Pode criar um Dockerfile utilizando a opção--docker ao ligar func init para criar o projeto. Se se esqueceu de o fazer, pode sempre ligar func init novamente a partir da raiz do seu projeto Funções, desta vez utilizando a opção--docker-only, como mostra o exemplo a seguir.

func init --docker-only

Para saber mais sobre a geração Dockerfile, consulte a func init referência.

Para construir uma imagem e implementar as suas funções em Kubernetes, executar o seguinte comando:

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

Neste exemplo, substitua-o pelo <name-of-function-deployment> nome da sua aplicação de função.

O comando de implantação faz o seguinte:

  1. O Dockerfile criado anteriormente é usado para construir uma imagem local para a aplicação de função.
  2. A imagem local é marcada e empurrada para o registo do contentor onde o utilizador está registado.
  3. Um manifesto é criado e aplicado ao cluster que define um recurso Kubernetes Deployment , um ScaledObject recurso, e Secrets, que inclui variáveis ambientais importadas do seu local.settings.json arquivo.

Para saber mais, consulte o func kubernetes deploy comando.

Implementação de uma aplicação de função a partir de um registo privado

O fluxo acima também funciona para registos privados. Se estiver a retirar a sua imagem de contentor de um registo privado, inclua a --pull-secret bandeira que faz referência ao segredo de Kubernetes que guarda as credenciais de registo privado durante a execução func kubernetes deploy.

Remoção de uma aplicação de função de Kubernetes

Após a implantação pode remover uma função removendo o , criado Deployment, ScaledObjectum Secrets criado.

kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>

Desinstalar KEDA de Kubernetes

Pode remover a KEDA do seu cluster de uma das seguintes formas:

Gatilhos suportados na KEDA

A KEDA tem suporte para os seguintes gatilhos da Função Azure:

SUPORTE HTTP Trigger

Pode utilizar Funções do Azure que expõem os gatilhos HTTP, mas a KEDA não os gere diretamente. Pode alavancar o gatilho KEDA prometheus para escalar HTTP Funções do Azure de 1 para n instâncias.

Passos Seguintes

Para obter mais informações, veja os seguintes recursos: