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 em Aplicativos de Contêiner permite executar suas funções em um ambiente baseado em Kubernetes com suporte interno para monitoramento de código aberto, mTLS, Dapr e KEDA.

Importante

O suporte para hospedar os aplicativos de funções nos Aplicativos de Contêiner do Azure está atualmente em versão prévia.

A integração com Aplicativos de Contêiner permite que você use o modelo de programação de funções existentes para gravar o código de função em sua linguagem de programação preferencial ou estrutura compatível com Azure Functions. Você ainda obtém os gatilhos e associações do Functions com o dimensionamento controlado por eventos. Os Aplicativos de Contêiner usam o poder do AKS (Serviço de Kubernetes do Azure) subjacente, enquanto remove a complexidade de ter que trabalhar com APIs do Kubernetes.

Essa integração também significa que você pode usar as ferramentas de cliente do Functions e o portal do Azure para criar contêineres, implantar contêineres de aplicativos de funções em Aplicativos de Contêiner e configurar a implantação contínua. As configurações de rede e observabilidade são definidas no nível do ambiente do Aplicativo de Contêiner e se aplicam a todos os microsserviços em execução em um ambiente de Aplicativos de Contêiner, incluindo seu aplicativo de funções. 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 suas execuções de funções.

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 seu 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 de funções deve ser executado em um contêiner do Linux que você cria e mantém. 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 opção --docker, 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:

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 Function em Aplicativos de Contêiner do Azure executa seus recursos de contêineres com funções em grupos de recursos gerenciados de forma especial, o que ajuda a proteger a consistência de seus aplicativos impedindo modificações ou exclusões não intencionais ou não autorizadas de recursos no grupo gerenciado por usuários, grupos ou princípios de serviço. Esse 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êiner são executados nesse grupo de recursos gerenciado e todos os outros aplicativo 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 Aplicativos de Contêiner:
    • HTTP
    • Armazenamento de Filas do Azure
    • Barramento de Serviço do Azure
    • Hubs de Eventos do Azure
    • Kafka*
    • Temporizador
      *O valor do protocolo de ssl não tem suporte quando hospedado em Aplicativos de Contêiner. Use um valor de protocolo diferente.
  • 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.
  • 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.
  • A extensão Dapr do Functions também está em versão prévia, com ajuda fornecida no repositório.

Próximas etapas