Partilhar via


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

O Azure Functions em Aplicativos de Contêiner do Azure oferece um ambiente de hospedagem sem servidor totalmente gerenciado que reúne os recursos orientados a eventos do Azure Functions com os recursos robustos dos Aplicativos de Contêiner. Essa integração inclui recursos avançados, como orquestração baseada em Kubernetes, dimensionamento automático integrado alimentado por KEDA (Kubernetes-based Event Driven Autoscaling), integração Dapr (Distributed Application Runtime), suporte à carga de trabalho GPU, suporte a sidecar, conectividade de rede virtual (VNet) e gerenciamento de revisão.

Essa abordagem é útil quando você deseja que suas funções sejam executadas ao lado de outros aplicativos em contêineres, como microsserviços, APIs ou sites. Além disso, a criação de contêineres em seus aplicativos de função pode ajudar quando você precisar de dependências personalizadas ou quiser aproveitar a escala até zero para economizar custos. Se você estiver executando tarefas pesadas de computação, como inferência de IA, o Container Apps também suporta hospedagem baseada em GPU por meio de oferta de GPU sem servidor e perfis de carga de trabalho dedicados.

Como um recurso integrado nos Aplicativos de Contêiner do Azure, você pode implantar imagens do Azure Functions diretamente nos Aplicativos de Contêiner do Azure 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 implantando por meio do portal do Azure, você poderá habilitar a opção do aplicativo Otimizar para Funções durante a instalação. Consulte a seção de implantação e configuração para obter mais detalhes.

Principais benefícios

O modelo de hospedagem de Aplicativos de Contêiner se baseia na flexibilidade de cargas de trabalho em contêineres e na natureza orientada a eventos do Azure Functions. 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 do Flex.

Característica Container Apps Plano de Consumo Flex
Reduzir para zero ✅ Sim (via KEDA) ✅ Sim
Expansão máxima 1.000 (padrão 10, configurável) 1,000
Instâncias permanentemente ativas ✅ Sim (via minReplicas) ✅ Sim (através de instâncias sempre prontas)
Integração da VNet ✅ Sim ✅ Sim
Suporte de contêiner personalizado ✅ Sim (traga a sua própria imagem) ❌ Limitado (não traga o seu próprio contentor)
Suporte de GPU ✅ Sim (através do perfil de carga de trabalho dedicado GPU sem servidor) ❌ Não
Funcionalidades incorporadas Suporte ao recurso Container Apps. Por exemplo, KEDA, Dapr, multi-revisões, mTLS, sidecars, controle de entrada e muito mais Funcionalidades apenas para funções
Modelo de faturação Preços de aplicativos de contêiner: Plano de consumo (vCPU, memória, solicitações) & Plano dedicado (baseado em perfil de carga de trabalho) Tempo de execução + instâncias sempre prontas

Para obter uma comparação completa das funções em aplicativos de contêiner com o plano Flex Consumption e todos os outros tipos de plano e hospedagem, consulte Escala de funções e opções de hospedagem.

Cenários

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

  • APIs de linha de negócios: Empacote bibliotecas, pacotes e APIs personalizados com o Azure Functions para aplicativos de linha de negócios.
  • Migração e modernização: Migração de aplicativos legados e/ou monólitos locais para microsserviços nativos da nuvem em contêineres.
  • Processamento orientado a eventos: Manipule eventos de Grade de Eventos, Service Bus, Hubs de Eventos e outras fontes de eventos com facilidade de modelo de programação de Funções.
  • Cargas de trabalho AI & GPU: Processamento de carga de trabalho sem servidor de vídeos, imagens, transcrições ou quaisquer outras tarefas intensivas de processamento que exigiam recursos de computação da GPU. Para obter mais informações, consulte Usando GPUs sem servidor em aplicativos de contêiner do Azure.
  • Microsserviços: Integre o Azure Functions com outros serviços hospedados de Aplicativos de Contêiner.
  • Contentores personalizados: Funções de pacote com tempos de execução personalizados ou sidecars.
  • Aplicações privadas: Proteja funções apenas internas usando VNet e entrada interna.
  • .NET Aspire: A integração do .NET Aspire com o Azure Functions permite desenvolver, depurar e orquestrar um projeto .NET do Azure Functions como parte do host do aplicativo .NET Aspire . Leia mais sobre o Azure Functions com o .NET Aspire
  • Funções Gerais: Execute quaisquer cenários padrão suportados do Azure Functions (por exemplo, temporizadores, processamento de ficheiros, gatilhos de base de dados).

Implantação e configuração

Para implantar o Azure Functions em Aplicativos de Contêiner do Azure, empacote seu aplicativo Functions como uma imagem de contêiner personalizada e implante-o como qualquer outro aplicativo de contêiner com uma diferença fundamental. Você precisa definir a kind=functionapp propriedade ao usar os modelos CLI ou ARM/Bicep do Azure. Para obter etapas e exemplos detalhados, consulte a documentação oficial de introduçã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

Este comando devolve o URL da aplicação Funções. Copie este URL e cole-o num navegador da Web.

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

Captura de ecrã do portal do Azure quando cria uma aplicação de contentor pré-configurada para o Azure Functions.

Todos os métodos de implantação padrão são suportados, incluindo:

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

Preços e faturação

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. O faturamento é baseado no tipo de plano selecionado para seu ambiente, que pode ser Consumo ou Dedicado.

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

Sua escolha de plano determina como os cálculos de faturamento são feitos. Diferentes aplicações dentro de um ambiente podem usar planos diferentes.

Pontos principais a observar:

  • Sem encargos adicionais para usar o modelo de programação do Azure Functions em Aplicativos de Contêiner.
  • Funções duráveis e outros padrões avançados são suportados e cobrados sob o mesmo modelo de preços de aplicativos de contêiner. Para obter exemplos e mecanismos de cobrança detalhados, consulte a documentação Cobrança em Aplicativos de Contêiner do Azure .

Dimensionamento baseado em eventos

O Azure Functions em Aplicativos de Contêiner dá suporte a todos os principais tempos de execução 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 em execução nos Aplicativos de Contêiner do Azure configura automaticamente as regras de dimensionamento com base na origem do evento, eliminando a necessidade de definições manuais de regras de escala KEDA. É por isso que o botão "Adicionar regras de escala" no portal do 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éplicas para estabelecer limites de dimensionamento e manter o controle sobre a alocação de recursos.

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

As identidades gerenciadas são suportadas para gatilhos e associações que permitem isso. Estão também disponíveis para:

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

Dimensionamento e desempenho

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

  • Dimensionamento controlado por eventos: dimensiona automaticamente com base em gatilhos como Grade de Eventos, Service Bus ou HTTP.
  • Escala até zero: as aplicações inativas são reduzidas a zero para reduzir custos.
  • Controlo de arranque a frio: saiba como reduzir o tempo de arranque a frio nas Aplicações de Contentor do Azure.
  • Simultaneidade: Cada instância pode processar vários eventos em paralelo.
  • Alta escala: escale até 1.000 instâncias por aplicação (o padrão é 10).
  • Suporte a GPU: execute cargas de trabalho pesadas em termos de computação, como inferência de IA, usando nós suportados por GPU.

Isso torna as Aplicações de Contêiner ideais para cargas de trabalho intermitentes e constantes. Para saber mais, consulte Definir regras de dimensionamento em Aplicativos de Contêiner do Azure

Redes e segurança

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

  • Integração VNet: Aceda a recursos privados de forma segura através de terminais internos e bases de dados privadas.
  • Identidade gerenciada: autentique-se com os serviços do Azure usando identidades atribuídas ao sistema/usuário — sem necessidade de segredos ou cadeias de conexão.
  • Suporte a Dapr: habilite pub/sub, gerenciamento de estado e invocação de serviço seguro por meio de sidecars Dapr. Para obter mais informações, consulte APIs de microsserviço com tecnologia Dapr.
  • Ingress e TLS: exponha endpoints HTTP seguros com TLS/mTLS, domínios personalizados ou mantenha-os internos.
  • Isolamento do ambiente: As funções partilham os limites do ambiente das Aplicações de Contentores para uma comunicação segura e bem definida.

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

Monitorização e registo

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

  • Informações sobre o aplicativo: Fornece telemetria para solicitações, dependências, exceções e rastreamentos personalizados. Para obter mais informações, consulte Monitorizar Azure Functions.
  • Análise de logs: Captura o ciclo de vida do contêiner e eventos de dimensionamento (por exemplo, entradas FunctionsScalerInfo). Para obter mais informações, consulte Registo de Aplicações em Aplicações de Contentores do Azure.
  • Registo personalizado: Suporta estruturas padrão como ILogger e log de console para saída estruturada.
  • Monitorização centralizada: O ambiente Container Apps oferece painéis e alertas unificados em todos os aplicativos.

Considerações

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

  • Requisito de entrada para dimensionamento automático: para habilitar o dimensionamento automático com base em eventos, a entrada deve ser habilitada — publicamente ou no ambiente interno dos Aplicativos de Contêiner.
  • Conta de armazenamento obrigatória: cada aplicativo do Functions implantado em aplicativos de contêiner deve estar vinculado a uma conta de armazenamento. Isso é necessário para gerenciar gatilhos, logs e estado. Analise as diretrizes da conta de armazenamento para obter as práticas recomendadas.
  • Armazenamento com várias revisões: ao implantar 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 usar o modo de revisão única padrão para 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 eventos diferente para cada revisão para 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 de inicialização a frio: quando seu aplicativo de contêiner é dimensionado para zero durante períodos ociosos, a primeira solicitação após a inatividade experimenta um início a frio. Saiba mais sobre como reduzir os tempos de arranque a frio.
  • Integração de insights de aplicativos: para monitoramento e diagnóstico robustos, vincule seu aplicativo Functions ao Application Insights. Para obter mais informações, consulte Integração do App Insights com o Functions.
  • Proxies de funções: Não suportado. Para cenários de gateway de API, integre-se ao Gerenciamento de API do Azure.
  • Slots de implantação: os slots de preparação e produção não estão disponíveis. Use estratégias de implantação azul-verde para lançamentos sem tempo de inatividade.
  • Teclas de acesso de funções: Não há suporte para o uso do portal para gerar chaves de acesso de funções. Considere usar o Azure Key Vault para armazenar chaves. Você também pode usar as seguintes opções para proteger pontos de extremidade HTTP na 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, consulte os limites de ambiente e as cotas padrão. Se sua carga de trabalho exigir mais recursos, você poderá solicitar um aumento de cota.
  • Configuração manual de regra de escala: o botão "Adicionar regras de escala" no portal do Azure está desabilitado para o Azure Functions hospedado em Aplicativos de Contêiner porque as regras de dimensionamento são configuradas automaticamente com base na fonte do evento. As definições manuais de regras KEDA 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 GitHub de Aplicativos de Contêiner do Azure.

Próximas etapas / Outros recursos

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