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.
Azure Functions no Aplicativos de Contêiner do Azure oferece um ambiente de hospedagem totalmente gerenciado sem servidor que reúne os recursos orientados a eventos de 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 Aplicativos de Contêiner do Azure, você pode implantar imagens do Azure Functions diretamente no Aplicativos de Contêiner do Azure usando o provedor de recursos Microsoft.App ao definir 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. Se estiver implantando por meio do portal Azure, você poderá habilitar a opção Optimize for Functions app durante a instalação. Para obter mais informações, consulte a seção de 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 orientada por eventos de Azure Functions. Ele oferece as seguintes vantagens principais:
- Execute Azure Functions como contêineres com dependências personalizadas e stacks de linguagem.
- Faça uma redução horizontal para zero e o escalonamento horizontal para mil instâncias usando o KEDA.
- Proteger a rede com integração de VNet completa.
- Recursos avançados do Aplicativo de Contêiner, como várias revisões, divisão de tráfego, integração do Dapr e componentes de observabilidade.
- Suporte de GPU dedicado e sem servidor para cargas de trabalho com uso intensivo de computação.
- Ambiente de Aplicativos de Contêiner Unificado para executar Funções junto com microsserviços, APIs e trabalhos em segundo plano.
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
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: Empacotamento de bibliotecas e APIs personalizadas com 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.
- Event-driven processing: Manipular eventos do Event Grid, Barramento de Serviço, Event Hub e outras fontes de eventos com a facilidade do modelo de programação do Azure 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, 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 em Aplicativos de Contêiner do Azure, empacote seu aplicativo do Functions como uma imagem de contêiner personalizada e implante-o como qualquer outro aplicativo de contêiner com uma diferença de chave. Você precisa definir a propriedade kind=functionapp ao usar os modelos CLI do Azure ou ARM/Bicep. 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 Azure, selecione a opção Optimize para Azure Functions durante a criação do aplicativo de contêiner para simplificar a instalação.
Há suporte para todos os métodos de implantação padrão, incluindo:
- CLI do Azure
- Azure portal
- Modelos do ARM/Bicep
- Pipelines de CI/CD (por exemplo, GitHub Actions, Azure Pipelines)
Para obter etapas e exemplos detalhados, veja a documentação de introdução oficial.
Preços e cobrança
Azure Functions em Aplicativos de Contêiner do Azure seguem o mesmo modelo de preços que 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á encargos adicionais para usar o modelo de programação Azure Functions em Aplicativos de Contêiner.
- Durable Functions e outros padrões avançados têm suporte e são cobrados no 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
Azure Functions em Aplicativos de Contêineres 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 automaticamente configuram regras de dimensionamento 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 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.
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 se mapeiam 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:
- Gatilho de Dimensionamento Automático do Armazenamento de Blobs: só funciona ao usar o Event Grid como origem. Saiba mais sobre Acionar Azure Functions em contêineres de blob usando uma assinatura de evento
- Durable Functions escalonamento automático: somente suporta provedores de armazenamento MSSQL (Microsoft SQL Server) e DTS (Agendador de Tarefas Duráveis). Veja mais diretrizes sobre como implantar funções duráveis com o MSSQL
- Não há suporte para a escala automática em:
- Cache do Azure para Redis
- SQL do Azure
Há suporte para identidades gerenciadas em gatilhos e associações que as permitem. Eles também estão disponíveis para:
- Conta de armazenamento padrão (AzureWebJobsStorage)
- Registro de Contêiner do Azure (ACR)
- Como se conectar a fontes de eventos de gatilho
Para gatilhos sem suporte, use contagens de réplica fixas (ou seja, definir minReplicas > 0) em Azure Functions em Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o Guia do desenvolvedor do Functions.
Dimensionamento e desempenho
Azure Functions em Aplicativos de Contêiner são dimensionados 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.
- 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 em Aplicativos de Contêiner se beneficiam dos robustos recursos de rede e segurança dos Aplicativos de Contêiner para implantações seguras e escalonáveis.
- Integração de VNet: acesse com segurança recursos privados por meio de pontos de extremidade internos e bancos de dados privados.
- Configuração gerenciada: autentique com serviços 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
Azure Functions em Aplicativos de Contêiner se integram 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 obter mais informações, consulte Monitor Azure Functions.
- Análise de logs: captura eventos de escala e ciclo de vida do contêiner (por exemplo, entradas de FunctionsScalerInfo). Para obter mais informações, consulte Registro de Aplicativos 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.
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 logging, correlação e depuração em cenários de múltiplas réplicas.
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 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. 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 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. 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:
- Getting started: guia passo a passo para implantar e configurar Azure Functions no Aplicativos de Contêiner do Azure.
- Aplicativos de Contêiner do Azure documentação: referência completa para recursos de Apps de Contêiner, incluindo escalabilidade, funcionalidades de rede, Dapr e perfis de carga de trabalho.
- Aplicativos de Contêiner do Azure preços e tarifas: detalhes sobre o faturamento baseado em consumo e os custos do plano dedicado.
- Azure Functions opções de hospedagem: Comparação de planos de hospedagem, incluindo Container Apps, Consumo Flex, Premium e Dedicado.
- Azure Functions guia do desenvolvedor: aprofundamento em gatilhos, associações, comportamento de runtime e configuração.