Compartilhar via


Visão geral do Azure Functions nos Aplicativos de Contêiner do Azure

O Azure Functions nos Aplicativos de Contêiner do Azure oferece um ambiente de hospedagem totalmente gerenciado sem servidor que combina as funcionalidades controladas por eventos do Azure Functions com os recursos robustos dos Aplicativos de Contêiner. Essa integração inclui funcionalidades avançadas, como orquestração baseada em Kubernetes, escala automática interna ativada pelo KEDA (escala automática controlada por eventos baseada em Kubernetes), integração do Dapr (Distributed Application Runtime), suporte à carga de trabalho de GPU, suporte a sidecar, conectividade de VNet (rede virtual) e gerenciamento de revisão.

Essa abordagem é útil quando você deseja que suas funções sejam executadas junto com outros aplicativos conteinerizados, como microsserviços, APIs ou sites. Além disso, colocar seus aplicativos de funções em contêineres pode ser útil quando você precisa de dependências personalizadas ou quer aproveitar a escala para zero para economizar em custos. Se você executa tarefas com uso intensivo de computação, como inferência de IA, os Aplicativos de Contêiner também dão suporte à hospedagem baseada em GPU por meio da oferta de GPU sem servidor e perfis de carga de trabalho Dedicados.

Como um recurso integrado no Azure Container Apps, você pode implantar imagens do Azure Functions diretamente no Azure Container Apps usando o Microsoft.App provedor de recursos definindo kind=functionapp ao chamar az containerapp create. Os aplicativos criados dessa forma têm acesso a todos os recursos dos Aplicativos de Contêiner do Azure. Se estiver fazendo a implantação pelo portal do Azure, habilite a opção Otimizar aplicativo de funções durante a instalação. Veja a seção Implantação e instalação para obter mais detalhes.

Principais benefícios

O modelo de hospedagem de Aplicativos de Contêiner baseia-se na flexibilidade de cargas de trabalho em contêineres e na natureza controlada por eventos do Azure Functions. Ele oferece as seguintes vantagens principais:

A tabela a seguir ajuda você a comparar os recursos do Functions on Container Apps com o plano de consumo Flex.

Característica Aplicativos de Contêiner Plano de consumo Flex
Escala para zero ✅ Sim (usando KEDA) ✅ Sim
Expansão máxima 1.000 (padrão 10, configurável) 1,000
Instâncias always-on ✅ Sim (usando minReplicas) ✅ Sim (usando instâncias sempre prontas)
Integração de VNet ✅ Sim ✅ Sim
Suporte a contêiner personalizado ✅ Sim (traga sua própria imagem) ❌ Limitado (sem trazer seu próprio contêiner)
Suporte de GPU ✅ Sim (por meio do perfil de carga de trabalho dedicado de GPU sem servidor) ❌ Não
Recursos integrados Suporte de funcionalidades para Aplicativos Contêiner. Por exemplo, KEDA, Dapr, diversas revisões, mTLS, sidecars, controle de entrada etc. Recursos exclusivos de funções
Modelo de cobrança Preços dos Aplicativos de Contêiner: Plano de consumo (vCPU, memória, solicitações) e plano dedicado (baseado em perfil de carga de trabalho) Tempo de execução + instâncias sempre prontas

Para conferir uma comparação completa entre o Functions nos Aplicativos de Contêiner e o plano de Consumo Flexível e todos os outros tipos de planos e hospedagens, confira Opções de escala e hospedagem do Functions.

Cenários

O Azure Functions nos Aplicativos de Contêiner é ideal para uma ampla variedade de casos de uso, especialmente quando você precisa de execução controlada por eventos, flexibilidade de contêiner ou integração segura a outros serviços:

  • APIs de linha de negócios: empacote bibliotecas personalizadas, pacotes e APIs com o Azure Functions para aplicativos de linha de negócios.
  • Migração e modernização: migração de aplicativos monolíticos e/ou herdados locais para microsserviços nativos de nuvem em contêineres.
  • Processamento controlado por eventos: processe eventos da Grade de Eventos, do Barramento de Serviço, dos Hubs de Eventos e outras fontes de eventos com facilidade do modelo de programação do Functions.
  • Cargas de trabalho de IA e GPU: processamento de carga de trabalho sem servidor de vídeos, imagens, transcrições ou outras tarefas com uso intensivo de processamento que exigiam recursos de computação de GPU. Para obter mais informações, veja Como usar GPUs sem servidor nos Aplicativos de Contêiner do Azure.
  • Microsserviços: integre o Azure Functions a outros serviços hospedados pelos Aplicativos de Contêiner.
  • Contêineres personalizados: empacote funções com runtimes ou sidecars personalizados.
  • Aplicativos particulares: proteja funções somente internas usando a VNet e a entrada interna.
  • .NET Aspire: a integração do .NET Aspire ao Azure Functions permite desenvolver, depurar e orquestrar um projeto do .NET do Azure Functions como parte do host de aplicativo .NET Aspire. Leia mais sobre o Azure Functions com o .NET Aspire
  • Funções gerais: execute todos os cenários padrão do Azure Functions com suporte (por exemplo, temporizadores, processamento de arquivos e gatilhos de banco de dados).

Implantação e instalação

Para implantar o Azure Functions nos Aplicativos de Contêiner do Azure, você empacota seu aplicativo do Functions como uma imagem de contêiner personalizada e o implanta como qualquer outro aplicativo de contêiner com uma diferença fundamental. Você precisa definir a propriedade kind=functionapp ao usar os modelos do ARM/Bicep ou da CLI do Azure. Para obter etapas e exemplos detalhados, veja a documentação de introdução oficial.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Esse comando retorna a URL do aplicativo de funções. Copie essa URL e cole-a em um navegador da Web.

No portal do Azure, selecione a opção Otimizar para o Azure Functions durante a criação do aplicativo de contêiner para simplificar a instalação.

Captura de tela do portal do Azure ao criar um aplicativo de contêiner pré-configurado para o Azure Functions.

Há suporte para todos os métodos de implantação padrão, incluindo:

Para obter etapas e exemplos detalhados, veja a documentação de introdução oficial.

Preços e cobrança

O Azure Functions nos Aplicativos de Contêiner do Azure segue o mesmo modelo de preços que os Aplicativos de Contêiner do Azure. A cobrança é baseada no tipo de plano selecionado para seu ambiente, que pode ser Consumo ou Dedicado.

  • Plano de consumo: essa opção de computação sem servidor cobra apenas os recursos que seus aplicativos usam enquanto estão em execução.
  • Plano dedicado: essa opção fornece recursos de computação personalizados, cobrando pelas instâncias alocadas para cada perfil de trabalho.

Sua escolha de plano determina como os cálculos de cobrança são feitos. Aplicativos diferentes em um ambiente podem usar planos diferentes.

Pontos-chave a serem observados:

  • Não há custos extras para uso do modelo de programação do Azure Functions nos Aplicativos de Contêiner.
  • O Durable Functions e outros padrões avançados são compatíveis e cobrados de acordo com o mesmo modelo de preços dos Aplicativos de Contêiner. Para obter exemplos e mecânicas de cobrança detalhadas, consulte a documentação de Cobrança nos Aplicativos de Contêiner do Azure .

Escala orientada por eventos

O Azure Functions nos Aplicativos de Contêiner dá suporte a todos os principais runtimes de linguagem disponíveis no Azure Functions, incluindo C#, JavaScript/TypeScript (Node.js), Python, Java, PowerShell, contêineres personalizados (traga sua própria imagem).

O Azure Functions nos execução nos Aplicativos de Contêiner do Azure configura automaticamente regras de escala com base na origem do evento, eliminando a necessidade de definições de regra de escala KEDA manuais. É por isso que o botão “Adicionar regras de escala” no portal do Azure está desabilitado para funções nos Aplicativos de Contêiner. No entanto, você ainda pode definir contagens mínimas e máximas de réplica para estabelecer limites de escala e manter o controle sobre a alocação de recursos.

Há suporte para todos os gatilhos e todas as associações padrão do Azure Functions nos Aplicativos de Contêiner com as seguintes exceções:

Há suporte para identidades gerenciadas em gatilhos e associações que as permitem. Também estão disponíveis para:

Para gatilhos sem suporte, use contagens de réplica fixas (ou seja, defina minReplicas > 0) no Azure Functions nos Aplicativos de Contêiner do Azure. Para obter mais detalhes, veja o guia de desenvolvedores do Functions.

Dimensionamento e desempenho

O Azure Functions em Aplicativos de Contêiner é dimensionado automaticamente com base em eventos usando KEDA, sem a necessidade de configurar regras de escala manualmente. Você ainda pode definir réplicas mínimas/máximas para controlar o comportamento de dimensionamento.

  • Dimensionamento baseado em eventos: dimensionamento automático com base em gatilhos como Grade de Eventos, Barramento de Serviço ou HTTP.
  • Escala para zero: os aplicativos ociosos são reduzidos a zero para reduzir custos.
  • Controle da inicialização a frio: saiba mais sobre como reduzir os horários de inicialização a frio nos Aplicativos de Contêiner do Azure.
  • Simultaneidade: cada instância pode processar vários eventos em paralelo.
  • Alta escala: escalar horizontalmente para 1.000 instâncias por aplicativo (o padrão é 10).
  • Suporte à GPU: execute cargas de trabalho pesadas de computação, como inferência de IA usando nós com suporte de GPU.

Devido a isso, os Aplicativos de Contêiner são ideais para cargas de trabalho de estado estável e com intermitência. Para saber mais, confira Definir regras de dimensionamento nos Aplicativos de Contêiner do Azure

Rede e segurança

O Azure Functions em Aplicativos de Contêiner se beneficia dos robustos recursos de rede e segurança dos Aplicativos de Contêiner para implantações seguras e escaláveis.

  • Integração de VNet: acesse com segurança recursos privados por meio de pontos de extremidade internos e bancos de dados privados.
  • Identidade gerenciada: autentique-se com os serviços do Azure usando identidades atribuídas pelo sistema/pelo usuário, sem necessidade de segredos ou cadeias de conexão.
  • Suporte ao Dapr: habilite o Pub/Sub, o gerenciamento de estado e a invocação de serviço seguro usando sidecars do Dapr. Para obter mais informações, consulte as APIs de microsserviço impulsionadas pelo Dapr.
  • Ingress e TLS: Exponha endpoints HTTP seguros com TLS/mTLS, domínios personalizados ou mantenha-os internos.
  • Isolamento de ambiente: o Functions compartilha os limites de ambiente dos Aplicativos de Contêiner para uma comunicação com escopo segura.

Esses recursos tornam as Funções hospedadas em Aplicativos de Contêiner ideais para aplicativos sem servidor seguros e de nível empresarial.

Monitoramento e registro em log

O Azure Functions nos Aplicativos de Contêiner integra-se perfeitamente às ferramentas de observabilidade do Azure para acompanhamento de desempenho e diagnóstico de problemas:

  • Application Insights: fornece telemetria para solicitações, dependências, exceções e rastreamentos personalizados. Para saber mais, consulte Monitorar Azure Functions.
  • Análise de logs: captura eventos de escala e ciclo de vida do contêiner (por exemplo, entradas de FunctionsScalerInfo). Para saber mais, veja Application Logging nos Aplicativos de Contêiner do Azure.
  • Log personalizado: dá suporte a estruturas padrão, como o iLogger e o log de console para uma saída estruturada.
  • Monitoramento centralizado: o ambiente dos Aplicativos de Contêiner oferece painéis e alertas unificados em todos os aplicativos.

Considerações

Tenha essas outras considerações em mente ao usar o Azure Functions nos Aplicativos de Contêiner do Azure:

  • Requisito de entrada para escala automática: para habilitar o escala automática baseada em eventos, a entrada precisa ser habilitada publicamente ou no ambiente interno dos Aplicativos de Contêiner.
  • Conta de armazenamento obrigatória: cada aplicativo de funções implantado nos Aplicativos de Contêiner precisa estar vinculado a uma conta de armazenamento. Isso é necessário para gerenciar os gatilhos, os logs e o estado. Leia as diretrizes da conta de armazenamento para ver as melhores práticas.
  • Armazenamento de várias revisões: na implantação com várias revisões ativas, atribua uma conta de armazenamento dedicada a cada revisão. O uso de uma conta de armazenamento dedicada ajuda a evitar conflitos e garante o isolamento adequado. Como alternativa, se você não precisar de revisões simultâneas, considere o uso do modo de revisão única padrão para o gerenciamento simplificado.
  • Gatilhos de várias revisões: se você estiver usando o modo de várias revisões com um gatilho baseado em pull, use uma fonte de evento diferente para cada revisão a fim de evitar conflitos relacionados a consumidores concorrentes. As funções que usam o Armazenamento de Filas do Azure, o Hub de Eventos do Azure, o Barramento de Serviço do Azure ou os gatilhos do Durable Functions são exemplos de gatilhos baseados em pull.
  • Latência da inicialização a frio: quando seu aplicativo de contêiner é escalado como zero durante períodos ociosos, a primeira solicitação após a inatividade experimenta uma inicialização a frio. Saiba mais sobre como reduzir os horários de inicialização a frio.
  • Integração do Application Insights: para monitoramento e diagnóstico robustos, vincule o aplicativo de funções ao Application Insights. Para obter mais informações, veja Integração do App Insights ao Functions.
  • Proxies do Functions: sem suporte. Para cenários do gateway de API, use a integração ao Gerenciamento de API do Azure.
  • Slots de implantação: slots de preparo e produção não estão disponíveis. Use estratégias de implantação azul/verde para versões com tempo de inatividade zero.
  • Chaves de acesso do Functions: não há suporte para o uso do portal para gerar chaves de acesso do Functions. Considere o uso do Azure Key Vault para armazenar chaves. Use também as seguintes opções para proteger os pontos de extremidade HTTP em produção:
  • Limites de cota e recursos: os ambientes de Aplicativos de Contêiner têm limites padrão de memória, CPU e contagens de instâncias por região. Para obter mais informações, veja os limites de ambiente e as cotas padrão. Se a sua carga de trabalho exigir mais recursos, você poderá solicitar um aumento de cota.
  • Configuração manual da regra de escala: o botão “Adicionar regras de escala” no portal do Azure está desabilitado para o Azure Functions hospedado nos Aplicativos de Contêiner porque as regras de escala são configuradas automaticamente com base na origem do evento. As definições manuais da regra do KEDA não são necessárias nessa configuração.

Enviar Comentários

Envie um problema ou uma solicitação de recurso para o repositório GitHub dos Aplicativos de Contêiner do Azure.

Próximas etapas/recursos adicionais

Para continuar aprendendo e criando com o Azure Functions nos Aplicativos de Contêiner, explore os seguintes recursos: