Hospedagem de Aplicativos de Contêiner do Azure do Azure Functions

O Azure Functions fornece suporte integrado para desenvolver, implantar e gerenciar aplicativos de função em contêineres em Aplicativos de Contêiner do Azure. Use os Aplicativos de Contêiner do Azure para hospedar seus contêineres de aplicativo de função quando precisar executar suas funções controladas por eventos no Azure no mesmo ambiente que outros microsserviços, APIs, sites, fluxos de trabalho ou quaisquer programas hospedados em contêiner. A hospedagem de aplicativos de contêiner permite que você execute suas funções em um ambiente baseado em Kubernetes com suporte integrado para monitoramento de código aberto, mTLS, Dapr e KEDA.

Importante

O suporte para hospedar aplicativos de função em Aplicativos de Contêiner do Azure está atualmente em visualização.

A integração com Aplicativos de Contêiner permite que você use o modelo de programação de funções existente para escrever código de função em sua linguagem de programação ou estrutura preferida suportada pelo Azure Functions. Você ainda obtém os gatilhos e associações Functions com dimensionamento controlado por eventos. Os Aplicativos de Contêiner usam o poder do Serviço Kubernetes do Azure (AKS) subjacente enquanto removem 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 existentes e o portal do Azure para criar contêineres, implantar contêineres de aplicativo de função 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ção. Você também obtém os outros recursos nativos da nuvem dos Container Apps, incluindo KEDA, Dapr, Envoy. Você ainda pode usar o Application Insights para monitorar as execuções de suas funções.

Perfis de hospedagem e carga de trabalho

Há dois planos principais de hospedagem 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 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 ambiente de perfis de carga 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.

A hospedagem de Aplicativos de Contêiner de aplicativos de função em contêineres é suportada em todas as regiões que oferecem suporte a Aplicativos de Contêiner.

Se seu aplicativo não tiver um requisito de hardware específico, 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ê será cobrado apenas pelo uso de Aplicativos de Contêiner. Para obter mais informações, consulte 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ção em Aplicativos de Contêiner no plano de Consumo padrão, consulte Criar suas primeiras funções em contêineres em 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ção em uma carga de trabalho específica, consulte Perfis de carga de trabalho de Aplicativos de Contêiner.

Funções em contentores

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

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

Importante

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

A equipa do Functions está empenhada em publicar atualizações mensais para estas imagens base. As atualizações regulares incluem as últimas atualizações de versões secundárias e correções de segurança para o tempo de execução e os idiomas do Functions. Você deve atualizar regularmente seu contêiner a partir da imagem base mais recente e reimplantar a versão atualizada do contêiner.

Ao fazer alterações no código de funções, você deve reconstruir e publicar novamente a imagem do contêiner. Para obter mais informações, consulte Atualizar uma imagem no Registro.

Opções de implementação

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

Configurar regras de escala

O Azure Functions em Aplicativos de Contêiner foi projetado para configurar os parâmetros e regras de escala de acordo com o destino do evento. Você não precisa se preocupar em configurar os objetos dimensionados KEDA. Você ainda pode definir a contagem mínima e máxima de réplicas ao criar ou modificar seu aplicativo de função. O seguinte comando da CLI do Azure define a contagem mínima e máxima de réplicas ao criar um novo aplicativo de função em um ambiente de Aplicativos de Contêiner a partir 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éplicas em um aplicativo de função 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 on Container Apps executa seus recursos de contêiner funcionalizados em grupos de recursos especialmente gerenciados, o que ajuda a proteger a consistência de seus aplicativos, impedindo a modificação ou exclusão não intencional ou não autorizada de recursos no grupo gerenciado por usuários, grupos ou princípios de serviço. Esse grupo de recursos gerenciados é criado para você na primeira vez que você cria recursos de aplicativo de função em um ambiente de Aplicativos de Contêiner. Os recursos de aplicativos de contêiner exigidos pelo seu aplicativo de função em contêiner são executados neste grupo de recursos gerenciados, e quaisquer outros aplicativos de função criados no mesmo ambiente usam esse grupo existente. Um grupo de recursos gerenciados é removido automaticamente depois que todos os recursos de contêiner de aplicativo de função são removidos do ambiente. Enquanto o grupo de recursos gerenciados estiver visível, qualquer tentativa de modificar ou remover o grupo de recursos gerenciados 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ção e ele será removido para você. Se você tiver algum problema com esses grupos de recursos gerenciados, entre em contato com o suporte.

Considerações para hospedagem de aplicativos de contêiner

Lembre-se das seguintes considerações ao implantar seus contêineres de aplicativo de função em Aplicativos de Contêiner:

  • Embora todos os gatilhos possam ser usados, somente os seguintes gatilhos podem ser dimensionados dinamicamente (a partir de instâncias zero) quando executados em Aplicativos de Contêiner:
    • HTTP
    • Armazenamento de Filas do Azure
    • Azure Service Bus
    • Hubs de Eventos do Azure
    • Kafka*
    • Temporizador
      *O valor de protocolo de não é suportado ssl 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, atualmente apenas as políticas de nível de ambiente se aplicam aos contêineres do Azure Functions.
  • No momento, não é possível mover uma implantação de aplicativo de função hospedada de 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êiner 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 containerapp extensão entra em conflito com a extensão na CLI appservice-kube do Azure. Se tiver publicado anteriormente aplicações no Azure Arc, execute az extension list e certifique-se de que appservice-kube não está instalado. Se estiver, você pode removê-lo executando az extension remove -n appservice-kube.
  • A extensão Functions Dapr também está em pré-visualização, com ajuda fornecida no repositório.

Próximos passos