Share via


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 totalmente gerenciado baseado em Kubernetes com suporte integrado para monitoramento de código aberto, mTLS, Dapr e KEDA.

Você pode escrever seu código de função em qualquer pilha de idiomas suportada pelo 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ção 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 observabilidade, que são definidas no nível de ambiente do Aplicativo de Contêiner, se aplicam ao seu aplicativo de função como se aplicam a todos os microsserviços em execução em um ambiente de Aplicativos de Contêiner. 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 suas execuções de funções, e seu aplicativo de função 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êineres Linux no Azure Functions.

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 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 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 deve ser executado em um aplicativo de função 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 de código 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:

Integração da rede virtual

Quando você hospeda seus aplicativos de função em um ambiente de Aplicativos de Contêiner, suas funções são capazes de tirar proveito de redes virtuais acessíveis interna 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 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 Functions em Aplicativos de Contêiner executa seus recursos de aplicativo de função em contêineres em grupos de recursos especialmente gerenciados. Esses grupos de recursos gerenciados ajudam 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, mesmo por princípios de serviço.

Um 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. Quaisquer outros aplicativos de função que você criar 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 um ambiente de Aplicativos de Contêiner:
    • HTTP
    • Armazenamento de Filas do Azure
    • Azure Service Bus
    • Hubs de Eventos do Azure
    • Kafka
    • Temporizador
  • Estas limitações aplicam-se aos gatilhos Kafka:
    • O valor de protocolo de não é suportado ssl quando hospedado em Aplicativos de Contêiner. Use um valor de protocolo diferente.
    • Para que um gatilho Kafka seja dimensionado dinamicamente quando conectado a Hubs de Eventos, a username propriedade deve ser resolvida para uma configuração de aplicativo que contenha o valor real do nome de usuário. Quando o valor padrão $ConnectionString é 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, atualmente apenas as políticas de nível de ambiente se aplicam aos contêineres do Azure Functions.
  • Você pode usar identidades gerenciadas para conexões de gatilho e vinculação e para implantações de um Registro de Contêiner do Azure.
  • Quando seu aplicativo de função e a implantação baseada no Registro de Contêiner do Azure usam conexões baseadas em identidade gerenciada, você não pode modificar as configurações de alocação de CPU e memória no portal. Em vez disso, você deve usar a CLI do Azure.
  • 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.

Próximos passos