Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O tempo de execução do Azure Functions fornece flexibilidade na hospedagem onde e como você deseja. O KEDA (Event Driven Autoscaling baseado em Kubernetes) combina perfeitamente com o tempo de execução e as ferramentas do Azure Functions para fornecer escala orientada a eventos no Kubernetes.
Importante
Executar seus aplicativos de função em contêineres no Kubernetes, seja usando KEDA ou por implantação direta, é um esforço de código aberto que você pode usar gratuitamente. O suporte ao melhor nível possível é fornecido por colaboradores e pela comunidade usando issues do GitHub no repositório do Azure Functions. Use estes tópicos para relatar bugs e fazer pedidos de funcionalidades.
Para implantações Kubernetes totalmente suportadas, considere o alojamento de Azure Functions através de Azure Container Apps.
Como funcionam as funções baseadas no Kubernetes
O serviço Azure Functions é composto por dois componentes principais: um tempo de execução e um controlador de escala. O runtime do Functions executa o seu código. O runtime inclui lógica sobre como ativar, registar e gerir execuções de funções. O Azure Functions runtime funciona em qualquer lugar. O outro componente é um controlador de escala. O controlador de escala monitora a taxa de eventos direcionados à sua função e dimensiona proativamente o número de instâncias que executam seu aplicativo. Para saber mais, consulte Dimensionamento e hospedagem do Azure Functions.
As funções baseadas em Kubernetes fornecem o tempo de execução das funções em um contêiner do Docker com escalonamento controlado por eventos por meio do KEDA. KEDA pode escalar até zero instâncias (quando nenhum evento está ocorrendo) e até n instâncias. Ele faz isso expondo métricas personalizadas para o autoscaler do Kubernetes (Horizontal Pod Autoscaler). O uso de contêineres do Functions com o KEDA torna possível replicar recursos de função sem servidor em qualquer cluster do Kubernetes. Essas funções também podem ser implantadas usando o recurso de nós virtuais do Azure Kubernetes Services (AKS) para infraestrutura sem servidor.
Gerenciando KEDA e funções no Kubernetes
Para executar o Functions no cluster do Kubernetes, você deve instalar o componente KEDA. Você pode instalar esse componente de uma das seguintes maneiras:
Ferramentas Principais do Azure Functions: usando o
func kubernetes installcomando.Helm: há várias maneiras de instalar o KEDA em qualquer cluster Kubernetes, incluindo o Helm. As opções de implantação estão documentadas no site da KEDA.
Implantando um aplicativo de função no Kubernetes
Você pode implantar qualquer aplicativo de função em um cluster Kubernetes executando o KEDA. Como suas funções são executadas em um contêiner do Docker, seu projeto precisa de um Dockerfile. Você pode criar um Dockerfile usando a --docker opção ao chamar func init para criar o projeto. Se você esqueceu de criar seu Dockerfile, você sempre pode chamar func init novamente a partir da raiz do seu projeto de código.
(Opcional) Se você precisar criar seu Dockerfile, use o
func initcomando com a--docker-onlyopção:func init --docker-onlyPara saber mais sobre a geração do Dockerfile, consulte a
func initreferência.Use o
func kubernetes deploycomando para criar sua imagem e implantar seu aplicativo de função em contêiner no Kubernetes:func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>Neste exemplo, substitua
<name-of-function-deployment>pelo nome do seu aplicativo de função. O comando deploy executa estas tarefas:- O Dockerfile criado anteriormente é usado para criar uma imagem local para seu aplicativo de função em contêiner.
- A imagem local é marcada e enviada por push para o registro de contêiner onde o usuário está conectado.
- Um manifesto é criado e aplicado ao cluster que define um recurso Kubernetes
Deployment, um recursoScaledObjecteSecrets, que inclui variáveis de ambiente importadas do seu arquivolocal.settings.json.
Implantando um aplicativo de função a partir de um registro privado
As etapas de implantação anteriores também funcionam para registros privados. Se estiver a extrair a sua imagem de contentor de um registo privado, inclua a opção que faz referência ao --pull-secret segredo do Kubernetes que contém as credenciais do registo privado ao executar func kubernetes deploy.
Removendo um aplicativo de função do Kubernetes
Após a implantação, pode remover uma função eliminando os elementos associados Deployment, ScaledObject, e Secrets criado.
kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>
Desinstalando o KEDA do Kubernetes
Você pode remover o KEDA do cluster de uma das seguintes maneiras:
Ferramentas Principais do Azure Functions: usando o
func kubernetes removecomando.Helm: veja as etapas de desinstalação no site da KEDA.
Os gatilhos suportados pelo KEDA
O KEDA tem suporte para os seguintes gatilhos do Azure Function:
- Filas de Armazenamento do Azure
- Barramento de Serviço do Azure
- Evento do Azure / Hubs IoT
- Apache Kafka
- Fila RabbitMQ
Suporte para HTTP Trigger
Você pode usar o Azure Functions que expõe gatilhos HTTP, mas o KEDA não os gerencia diretamente. Você pode usar o gatilho do Prometheus do KEDA para dimensionar as Funções HTTP do Azure de uma para n instâncias.
Passos Seguintes
Para obter mais informações, consulte os seguintes recursos: