Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
Normalmente, aplicativos nativos de nuvem implementam serviços que aproveitam contêineres e orquestração. Geralmente, há oportunidades de expor alguns dos serviços do aplicativo como o Azure Functions. No entanto, com um aplicativo nativo de nuvem implantado no Kubernetes, seria bom aproveitar o Azure Functions dentro desse mesmo conjunto de ferramentas. Felizmente, você pode encapsular o Azure Functions dentro de contêineres do Docker e implantá-los usando os mesmos processos e ferramentas que o restante do aplicativo baseado no Kubernetes.
Quando faz sentido usar contêineres sem servidor?
Sua Azure Function não tem conhecimento da plataforma na qual foi implantada. Para alguns cenários, talvez você tenha requisitos específicos e precise personalizar o ambiente no qual o código de função será executado. Você precisará de uma imagem personalizada que dê suporte a dependências ou uma configuração sem suporte pela imagem padrão. Nesses casos, faz sentido implantar sua função em um contêiner personalizado do Docker.
Quando você deve evitar o uso de contêineres com o Azure Functions?
Se você quiser usar a cobrança de consumo, não poderá executar sua função em um contêiner. Além disso, se você implantar sua função em um cluster do Kubernetes, não se beneficiará mais do dimensionamento interno fornecido pelo Azure Functions. Você precisará usar os recursos de dimensionamento do Kubernetes, descritos anteriormente neste capítulo.
Como combinar contêineres do Docker e sem servidor
Para encapsular uma Azure Function em um contêiner do Docker, instale o Azure Functions Core Tools e execute o seguinte comando:
func init ProjectName --worker-runtime dotnet --docker
Quando o projeto for criado, ele incluirá um Dockerfile e o runtime de trabalho configurado como dotnet. Agora, você pode criar e testar sua função localmente. Compile e execute-o usando os comandos docker build e docker run. Para obter etapas detalhadas para começar a criar o Azure Functions com o suporte do Docker, confira o tutorial Criar uma função no Linux usando uma imagem personalizada.
Como combinar sem servidor e Kubernetes com KEDA
Neste capítulo, você viu que a plataforma do Azure Functions é escalada horizontalmente de forma automática para atender à demanda. No entanto, ao implantar funções em contêineres no AKS, você perde a funcionalidade de dimensionamento interna. Para o resgate vem KEDA (dimensionamento automático conduzido por evento baseado em Kubernetes). Ele permite o dimensionamento automático refinado para event-driven Kubernetes workloads, incluindo funções em contêineres.
O KEDA fornece funcionalidade de dimensionamento controlada por eventos para o runtime do Functions em um contêiner do Docker. O KEDA pode ser escalado horizontalmente de zero instâncias (quando nenhum evento está ocorrendo) para n instances, com base na carga. Ele habilita o dimensionamento automático expondo métricas personalizadas ao dimensionador automático do Kubernetes (Horizontal Pod Autoscaler). O uso de contêineres do Functions com KEDA permite replicar recursos de função sem servidor em qualquer cluster de Kubernetes.
Vale a pena observar que o projeto KEDA agora é gerenciado pela CNCF (Cloud Native Computing Foundation).