Compartilhar via


Hospedagem de Aplicativos de Contêiner do Azure Functions

O Azure Functions fornece suporte integrado para desenvolver, implantar e gerenciar aplicativos de funções conteinerizadas nos Aplicativos de Contêiner do Azure. Use os Aplicativos de Contêiner do Azure para hospedar seus contêineres de aplicativo de funções quando precisar executar suas funções controladas por eventos no Azure no mesmo ambiente que outros microsserviços, APIs, sites, fluxos de trabalho ou programas hospedados em contêiner. A hospedagem de Aplicativos de Contêiner permite que você execute suas funções em um ambiente totalmente gerenciado e baseado em Kubernetes com suporte interno para monitoramento de software livre, mTLS, Dapr e Escalonamento automático orientado a eventos do Kubernetes (KEDA).

Você pode escrever seu código de função em qualquer pilha de linguagem compatível com o Functions. Você pode usar os mesmos gatilhos e associações do Functions com o dimensionamento controlado por eventos. Você também pode usar as ferramentas de cliente do Functions existentes e o portal do Azure para criar contêineres, implantar contêineres de aplicativo de funções em Aplicativos de Contêiner e configurar a implantação contínua.

A integração de Aplicativos de Contêiner também significa que as configurações de rede e de observabilidade, definidas no nível do ambiente do Aplicativo de Contêiner, se aplicam ao aplicativo de funções como fazem com todos os microsserviços em execução em um ambiente de Aplicativos de Contêiner. Você também obtém os outros recursos nativos de nuvem dos Aplicativos de Contêiner, incluindo KEDA, Dapr, Envoy. Você ainda pode usar o Application Insights para monitorar as execuções de funções e seu aplicativo de funções pode acessar os mesmos recursos de rede virtual fornecidos pelo ambiente.

Para obter uma visão geral das opções de hospedagem de contêiner para o Azure Functions, consulte suporte a contêiner do Linux no Azure Functions.

Perfis de hospedagem e carga de trabalho

Há dois planos de hospedagem principais para Aplicativos de Contêiner, um plano de consumo sem servidor e um plano dedicado, que usa perfis de carga de trabalho para controlar melhor seus recursos de implantação. Um perfil de carga de trabalho determina a quantidade de recursos de computação e memória disponíveis para os aplicativos de contêiner implantados em um ambiente. Esses perfis são configurados para atender às diferentes necessidades de seus aplicativos.

O perfil de carga de trabalho de Consumo é o perfil padrão adicionado a cada tipo de perfil de ambiente de área de trabalho. Você pode adicionar perfis de carga de trabalho dedicados ao seu ambiente à medida que cria um ambiente ou depois que ele é criado. Para saber mais sobre perfis de carga de trabalho, consulte Perfis de carga de trabalho em Aplicativos de Contêiner do Azure.

Os Aplicativos de Contêiner que hospedam aplicativos de funções em contêiner têm suporte em todas as regiões que dão suporte a Aplicativos de Contêiner.

Se o aplicativo não tiver requisitos de hardware específicos, você poderá executar seu ambiente em um plano de consumo ou em um plano dedicado usando o perfil de carga de trabalho de Consumo padrão. Ao executar funções em Aplicativos de Contêiner, você é cobrado apenas pelo uso dos Aplicativos de Contêiner. Para obter mais informações, confira a página de preços dos Aplicativos de Contêiner do Azure.

O Azure Functions em Aplicativos de Contêiner do Azure dá suporte à hospedagem habilitada para GPU no plano dedicado com perfis de carga de trabalho.

Para saber como criar e implantar um contêiner de aplicativo de funções nos Aplicativos de Contêiner no plano de consumo padrão, consulte Criar suas primeira funções em contêiner nos Aplicativos de Contêiner do Azure.

Para saber como criar um ambiente de Aplicativos de Contêiner com perfis de carga de trabalho e implantar um contêiner de aplicativo de funções em uma carga de trabalho específica, consulte Perfis de carga de trabalho dos Aplicativos de Contêiner.

Funções em contêineres

Para usar a hospedagem de Aplicativos de Contêiner, seu código deve ser executado em um aplicativo de funções em um contêiner do Linux que você criar e manter. O Functions mantém um conjunto de imagens de base específicas do idioma que você pode usar para gerar seus aplicativos de funções conteinerizados.

Quando você cria um projeto do Functions usando o Azure Functions Core Tools e inclui a --docker opção, o Core Tools gera o Dockerfile com a imagem de base correta, que você pode usar como ponto de partida ao criar seu contêiner.

Importante

Ao criar seus próprios contêineres, será necessário manter a imagem base do contêiner atualizada para a imagem base com suporte mais recente. As imagens base com suporte para o Azure Functions são específicas a uma linguagem e encontradas nos repositórios de imagem base do Azure Functions.

A equipe do Functions está comprometida em publicar atualizações mensais para essas imagens base. As atualizações regularem incluem as atualizações de versão secundária mais recentes e as correções de segurança para linguagens e runtime do Functions. Você deve atualizar regularmente o seu contêiner a partir da imagem base mais recente e reimplantar a versão atualizada do seu contêiner.

Ao fazer alterações no código de funções, você deve recompilar e republicar sua imagem de contêiner. Para obter mais informações, consulte Atualizar uma imagem no registro.

Opções de implantação

Atualmente, o Azure Functions dá suporte aos seguintes métodos de implantação de um aplicativos de funções em contêiner nos Aplicativos de Contêiner do Azure:

Integração de rede virtual

Quando você hospeda seus aplicativos de funções em um ambiente de Aplicativos de Contêiner, suas funções são capazes de tirar proveito de redes virtuais acessíveis internamente e externamente. Para saber mais sobre redes de ambiente, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.

Configurar regras de escala

O Azure Functions nos Aplicativos de Contêiner foi projetado para configurar os parâmetros de escala e as regras de acordo com o destino do evento. Você não precisa se preocupar em configurar os objetos dimensionados do KEDA. Você ainda pode definir a contagem mínima e máxima de réplica ao criar ou modificar seu aplicativo de funções. O seguinte comando da CLI do Azure define a contagem mínima e máxima de réplica ao criar um novo aplicativo de funções em um ambiente de Aplicativos de Contêiner de um Registro de Contêiner do Azure:

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

O comando a seguir define a mesma contagem mínima e máxima de réplica em um aplicativo de funções existente:

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

Grupos de recursos gerenciados

O Azure Functions em Aplicativos de Contêiner executa seus recursos de aplicativo de funções em contêineres em grupos de recursos gerenciados especialmente. Esses grupos de recursos gerenciados ajudam a proteger a consistência de seus aplicativos ao impedir modificações ou exclusões não intencionais ou não autorizadas de recursos no grupo gerenciado, mesmo as executadas por entidades de serviço.

Um grupo de recursos gerenciado é criado para você na primeira vez em que cria recursos do aplicativo de funções em um ambiente de Aplicativos de Contêiner. Os recursos de Aplicativos de Contêiner exigidos pelo aplicativo de funções em contêineres são executados nesse grupo de recursos gerenciado. Todos os outros aplicativos de funções criados no mesmo ambiente usam esse grupo existente.

Um grupo de recursos gerenciado é removido automaticamente depois que todos os recurso de contêiner do aplicativo de funções são removidos do ambiente. Enquanto o grupo de recursos gerenciado estiver visível, qualquer tentativa de modificar ou remover o grupo de recursos gerenciado resultará em um erro. Para remover um grupo de recursos gerenciado de um ambiente, remova todos os recursos de contêiner do aplicativo de funções e ele será removido para você.

Se você tiver problemas com esses grupos de recursos gerenciados, entre em contato com o suporte.

Considerações sobre a hospedagem de Aplicativos de Contêiner

Tenha em mente as seguintes considerações ao implantar seus contêineres de aplicativo de funções nos Aplicativos de Contêiner:

  • Embora todos os gatilhos possam ser usados, somente os seguintes gatilhos podem ser dimensionados dinamicamente (de zero instâncias) ao serem executados em um ambiente de Aplicativos de Contêiner:
    • Grade de Eventos do Azure
    • Hubs de Eventos do Azure
    • Armazenamento de Blobs do Azure (baseado em evento)
    • Armazenamento de Filas do Azure
    • Barramento de Serviço do Azure
    • Durable Functions (provedor de armazenamento MSSQL)
    • HTTP
    • Kafka
    • Temporizador
  • Essas limitações se aplicam aos gatilhos kafka:
    • O valor do protocolo de ssl não é suportado quando hospedado em Aplicativos de Contêiner. Use um valor de protocolo diferente.
    • Para que um gatilho Kafka seja dimensionado dinamicamente quando conectado aos Hubs de Eventos, a propriedade username deve ser resolvida para uma configuração de aplicativo que contenha o valor real do nome de usuário. Quando o valor de $ConnectionString padrão for usado, o gatilho Kafka não poderá fazer com que o aplicativo seja dimensionado dinamicamente.
  • Para as definições de política internas de Aplicativos de Contêiner, somente as políticas de nível de ambiente se aplicam atualmente a contêineres do Azure Functions.
  • Você pode usar identidades gerenciadas para essas conexões:
  • Atualmente, você não pode mover uma implantação de aplicativo de funções hospedado dos Aplicativos de Contêiner entre grupos de recursos ou entre assinaturas. Em vez disso, você teria que recriar a implantação de aplicativo em contêineres existente em um novo grupo de recursos, assinatura ou região.
  • Ao usar Aplicativos de Contêiner, você não tem acesso direto às APIs do Kubernetes de nível inferior.
  • A extensão containerapp entra em conflito com a extensão appservice-kube na CLI do Azure. Se você já publicou aplicativos no Azure Arc, execute az extension list e verifique se appservice-kube não está instalado. Se estiver, é possível removê-lo executando az extension remove -n appservice-kube.

Próximas etapas