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

Azure Functions no Aplicativos de Contêiner do Azure oferece um ambiente de hospedagem serverless totalmente gerenciado que combina as capacidades orientadas a eventos do Azure Functions com recursos do Container Apps. Essas capacidades incluem orquestração baseada em Kubernetes, autoescalonamento integrado alimentado pelo Kubernetes Event-driven Autoscaling (KEDA), integração Dapr, suporte a carga de trabalho para GPU, suporte a sidecar, conectividade de rede virtual (VNet) e gerenciamento de revisões.

Essa abordagem é útil quando você quer que suas funções rodem junto com outros aplicativos conteinerizados, como microsserviços, APIs ou sites. Containerizar seus aplicativos de funções também pode ajudar quando você precisa de dependências personalizadas ou quer escalar para zero para reduzir custos. Para tarefas pesadas em computação, como inferência de IA, o Container Apps suporta hospedagem baseada em GPU por meio de GPUs serverless e perfis dedicados de carga de trabalho.

Como um recurso integrado no Aplicativos de Contêiner do Azure, você pode implantar imagens de contêineres do Azure Functions diretamente para o Aplicativos de Contêiner do Azure usando o Microsoft.App provedor de recursos e a configuração kind=functionapp ao chamar az containerapp create. Os aplicativos criados dessa forma têm acesso a todos os recursos Aplicativos de Contêiner do Azure. No portal do Azure, selecione a opção Otimizar para Azure Functions durante a configuração. Para mais informações, veja Implantação e configuração.

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 orientada por eventos de Azure Functions. Ele oferece as seguintes vantagens principais:

A tabela a seguir ajuda você a comparar as funcionalidades das Funções em Apps de Contêineres com o plano Flex Consumption.

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

Azure Functions em Aplicativos de Contêiner são ideais para uma ampla gama de casos de uso, especialmente quando você precisa de execução controlada por eventos, flexibilidade de contêiner ou integração segura com 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 aplicações legadas e/ou monolíticas locais para microsserviços nativos da nuvem baseados em contêineres.
  • Processamento orientado a eventos: Gerencie eventos do Event Grid, Barramento de Serviço, Event Hubs e outras fontes de eventos usando o modelo de programação do Azure Functions.
  • Cargas de trabalho de IA e GPU: Processe vídeos, imagens, transcrições e outras cargas de trabalho intensivas em computação que exigem recursos da GPU. Para obter mais informações, consulte O uso de GPUs sem servidor em Aplicativos de Contêiner do Azure.
  • Microservices: Integre Azure Functions com outros serviços hospedados dos Container Apps.
  • 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 com Azure Functions permite desenvolver, depurar e orquestrar um projeto Azure Functions .NET como parte do host do aplicativo .NET Aspire. Leia mais sobre Azure Functions com .NET Aspire
  • General Functions: Executar todos os cenários padrão Azure Functions com suporte (por exemplo, temporizadores, processamento de arquivos, gatilhos de banco de dados).

Implantação e instalação

Para implantar Azure Functions no Aplicativos de Contêiner do Azure, embale seu function app como uma imagem de contêiner personalizada e implante-o como qualquer outro app de contêiner, com uma diferença chave. Defina a kind=functionapp propriedade quando usar o CLI do Azure, os templates do Azure Resource Manager ou o Bicep. Para passos e exemplos detalhados, veja Criar um aplicativo de função.

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 seu aplicativo de função. Copie essa URL e cole-a em um navegador da Web.

No portal Azure, selecione a opção Otimizar para Azure Functions durante a criação do app de contêineres para usar a configuração do Azure Functions.

Screenshot do portal Azure ao criar um aplicativo de contêiner pré-configurado para 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.

Detalhes de faturamento:

  • Não há encargos adicionais para usar o modelo de programação Azure Functions em 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 Billing no Aplicativos de Contêiner do Azure.

Escala orientada por eventos

O Azure Functions em Aplicativos de Contêiner oferecem suporte a todos os principais runtimes de linguagem disponíveis no Azure Functions, incluindo C#, JavaScript/TypeScript (Node.js), Python, Java, PowerShell e contêineres personalizados (imagem personalizada).

Azure Functions em execução no Aplicativos de Contêiner do Azure configuram automaticamente regras de escalonamento com base na origem do evento, eliminando a necessidade de definições manuais de regras de escalonamento do KEDA na experiência padrão. É por isso que o botão "Adicionar regras de escala" no portal Azure está desabilitado para funções em 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.

Se você precisar fornecer suas próprias regras de escala, poderá recusar as regras geradas pela plataforma usando allowScalingRuleOverride. Para obter mais informações, consulte Substituir regras de escala do KEDA geradas automaticamente pelo Azure Functions em Aplicativos de Contêiner.

A plataforma converte automaticamente os parâmetros de gatilho do Functions (de configuração de host.json ou atributos de gatilho) em parâmetros apropriados para o escalador do KEDA. Para obter uma referência detalhada de como as configurações de gatilho do Azure Functions são mapeadas para os parâmetros de escalonamento do KEDA, consulte Mapeamentos de escalonamento do Azure Functions KEDA.

Todos os gatilhos e vinculações de Azure Functions padrão têm suporte em Aplicativos de Contêiner com as seguintes exceções:

Há suporte para identidades gerenciadas em gatilhos e associações que as permitem. Eles 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 informações, consulte o Guia do desenvolvedor do Functions.

Dimensionamento e desempenho

As Azure Functions no Container Apps são escaladas automaticamente com base em eventos usando o KEDA por padrão. Você ainda pode definir réplicas mínimas/máximas para controlar o comportamento de dimensionamento. Você também pode usar allowScalingRuleOverride para fornecer regras de escala personalizadas.

  • Escalo controlado por eventos: dimensiona automaticamente 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.
  • Cold start control: saiba mais sobre a redução do tempo de inicialização a frio no 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, consulte Definir regras de escalonamento no Aplicativos de Contêiner do Azure

Rede e segurança

Azure Functions no Container Apps utiliza recursos de rede e segurança do Container Apps:

  • 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 com serviços do Azure usando identidades atribuídas pelo sistema ou pelo usuário. Você não precisa gerenciar segredos ou conexões.
  • 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 do ambiente: As funções compartilham os limites do ambiente dos Apps de Contêineres para uma comunicação segura e com escopo.

Monitoramento e registro em log

Azure Functions on Container Apps integra-se com as 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 obter mais informações, consulte Monitor Azure Functions.
  • Log Analytics: Captura o ciclo de vida dos contêineres e eventos de escalabilidade, como FunctionsScalerInfo entradas. Para mais informações, veja login de aplicações no 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.

Variáveis de ambiente

Azure Functions em execução em Aplicativos de Contêiner têm acesso a variáveis de ambiente fornecidas pelo sistema. A variável de ambiente CONTAINER_NAME é automaticamente configurada para o nome da réplica do seu aplicativo de funções. Use essa variável para registros, correlação e depuração em cenários multiréplica.

Para obter uma lista completa de variáveis de ambiente fornecidas pelo sistema, consulte Variáveis de ambiente no Aplicativos de Contêiner do Azure.

Considerações

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

  • Requisito de entrada para autoescalonamento: Para habilitar o escalonamento automático baseado em eventos, ative o ingress, seja publicamente ou dentro do ambiente interno dos Apps do Container.
  • Conta de armazenamento obrigatória: Todo aplicativo de função implantado em Apps de Contêineres deve estar vinculado a uma conta de armazenamento. Essa conta de armazenamento gerencia gatilhos, logs e estados. 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. Funções que usam gatilhos Armazenamento de Filas do Azure, Hubs de Eventos do Azure, Barramento de Serviço do Azure ou 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 com o Application Insights: Para monitorar e diagnosticar seu aplicativo funcional, conecte-o ao Application Insights. Para mais informações, veja Integração do Application Insights com Funções.
  • Proxies do Functions: sem suporte. Em vez disso, para cenários de gateway de API, integre-se ao Gerenciamento de API do Azure.
  • Slots de implantação: slots de teste 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 usar o portal para gerar chaves de acesso do Functions. Considere usar 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 de regras de escala manual: o botão "Adicionar regras de escala" no portal Azure está desativado para Azure Functions hospedadas em Aplicativos de Contêiner porque as regras de dimensionamento são configuradas automaticamente com base na origem do evento. As definições de regra keda manuais não são necessárias nesta configuração.

Enviar Comentários

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

Próximas etapas/recursos adicionais

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