Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Um novo método de hospedagem para executar o Azure Functions diretamente nos Aplicativos de Contêiner do Azure agora está disponível (consulte o anúncio) e é recomendado para a maioria das novas cargas de trabalho. Essa integração permite que você aproveite todos os recursos e capacidades dos Aplicativos de Contêiner do Azure enquanto se beneficia do modelo de programação de funções e da simplicidade de dimensionamento automático fornecido pelo Azure Functions.
Para obter mais informações, consulte Suporte nativo do Azure Functions em aplicativos de contêiner do Azure
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 Kubernetes Event-driven Autoscaling (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 para Aplicativos de Contêiner: um plano de Consumo sem servidor e um plano Dedicado. Ambos podem ser usados em tipos de ambiente de perfis de carga de trabalho, com perfis de carga de trabalho determinando os recursos de computação e memória disponíveis para seus aplicativos. 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 a sua aplicação não tiver requisitos de hardware específicos, poderá executar o seu ambiente num plano de Consumo ou num plano Dedicado usando o perfil de carga de trabalho padrão de Consumo. 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 Contentores do Azure.
O Azure Functions em Aplicações de Contêiner do Azure suporta a hospedagem com suporte para GPU no plano Dedicado com perfis de carga de trabalho.
Para saber como criar e implantar um contentor de aplicação de funções nas Aplicações de Contentores no plano de Consumo padrão, consulte Criar as suas primeiras funções em contentores nas Aplicações de Contentores 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. A plataforma Functions mantém um conjunto de imagens base específicas de linguagem que você pode usar para gerar os seus aplicativos de função em contêiner.
Quando se cria um projeto de código usando as Ferramentas Principais do Azure Functions e inclui a --docker
opção, as Ferramentas Principais geram o Dockerfile com a imagem base correta, que pode usar como ponto de partida ao criar o seu contentor.
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 atualizações mais recentes de versões secundárias e correções de segurança tanto para o runtime do Functions quanto para os idiomas. Você deve atualizar regularmente seu contêiner a partir da imagem base mais recente e reimplantar a versão atualizada do contêiner. Para obter mais informações, consulte Mantendo contêineres personalizados.
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:
- Apache Maven
- Modelos ARM
- Azure CLI
- CLI do desenvolvedor do Azure (azd)
- Ferramentas principais do Azure Functions
- Tarefas do Azure Pipeline
- Portal do Azure
- Arquivos Bicep
- Ações do GitHub
- Código do Visual Studio
Você pode implantar continuamente seus aplicativos em contêineres a partir do código-fonte usando o Azure Pipelines ou o GitHub Actions. O recurso de implantação contínua do Functions não é suportado atualmente durante a implantação em Aplicativos de Contêiner.
Autorização de identidade gerenciada
Para obter a melhor segurança, você deve se conectar a serviços remotos usando a autenticação do Microsoft Entra e a autorização de identidade gerenciada. Você pode usar identidades gerenciadas para estas conexões:
-
Conta de armazenamento padrão (
AzureWebJobsStorage
) - Registo de Contentores Azure
Ao executar em Aplicativos de Contêiner, você pode usar a ID do Microsoft Entra com identidades gerenciadas para todas as extensões de vinculação que oferecem suporte a identidades gerenciadas. Atualmente, apenas essas extensões de vinculação oferecem suporte ao dimensionamento controlado por eventos ao usar a autenticação de identidade gerenciada:
- Hubs de Eventos do Azure
- Armazenamento de Filas do Azure
- Azure Service Bus (uma solução de mensageria na nuvem da Microsoft)
Para outras associações, use réplicas fixas ao usar a autenticação de identidade gerenciada. Para obter mais informações, consulte o Guia do desenvolvedor do Functions.
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.
Escalonamento orientado a eventos
Todos os gatilhos de funções podem ser usados em seu aplicativo de função conteinerizado. No entanto, apenas esses gatilhos podem ser dimensionados dinamicamente (a partir de instâncias zero) com base em eventos recebidos durante a execução em um ambiente de Aplicativos de Contêiner:
- Azure Cosmos DB (conexão KEDA)
- Grelha de Eventos do Azure
- Hubs de Eventos do Azure
- Armazenamento de Blobs do Azure (baseado em Grade de Eventos)
- Armazenamento de Filas do Azure
- Azure Service Bus (uma solução de mensageria na nuvem da Microsoft)
- Funções duráveis (provedor de armazenamento MSSQL)
- HTTP
- Kafka
- Temporizador
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 nos Aplicativos de Contêiner executa os seus recursos de aplicativo de funções em contêiner em grupos de recursos especialmente geridos. 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 entidades 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 gerido de um ambiente, elimine todos os recursos do contentor da aplicação de funções, e este será removido automaticamente para si.
Se você tiver algum problema com esses grupos de recursos gerenciados, entre em contato com o suporte.
Registo de eventos da aplicação
Você pode monitorar seu aplicativo de função em contêiner hospedado em Aplicativos de Contêiner usando o Azure Monitor Application Insights da mesma forma que faz com aplicativos hospedados pelo Azure Functions. Para obter mais informações, consulte Monitorizar Azure Functions.
Para associações que oferecem suporte ao dimensionamento controlado por eventos, os eventos de escala são registrados como eventos FunctionsScalerInfo
e FunctionsScalerError
no espaço de trabalho do Log Analytics. Para obter mais informações, consulte Log de aplicativos em aplicativos de contêiner do Azure.
Considerações para hospedagem de aplicativos de contêiner
Lembre-se das seguintes considerações ao implantar os seus contêineres de aplicação de função em Aplicações de Contêiner.
- Estas limitações aplicam-se aos gatilhos Kafka:
- O valor de protocolo de
ssl
não é suportado quando hospedado em Aplicações de Contêineres. Use um valor de protocolo diferente. - Para que um gatilho Kafka seja dimensionado dinamicamente quando conectado a Hubs de Eventos, a propriedade
username
deve corresponder a 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 é capaz de fazer com que o aplicativo seja dimensionado dinamicamente.
- O valor de protocolo de
- Para as definições de política internas de Aplicações de Contentor, atualmente apenas as políticas de nível de ambiente se aplicam aos contentores do Azure Functions.
- Por padrão, um aplicativo de função em contêiner monitora a porta 80 para solicitações de entrada. Se o seu aplicativo precisar usar uma porta diferente, use a configuração
WEBSITES_PORT
aplicativo para alterar essa porta padrão. - Neste momento, não é possível utilizar funcionalidades internas de implantação contínua ao hospedar em Aplicações de Contêineres. Em vez disso, você deve implantar a partir do código-fonte usando o Azure Pipelines ou o GitHub Actions.
- No momento, não é possível mover implantações de aplicações do tipo Function App hospedadas pelo Container Apps 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 extensão
containerapp
entra em conflito com a extensãoappservice-kube
na CLI do Azure. Se tiver publicado anteriormente aplicações no Azure Arc, executeaz extension list
e certifique-se de queappservice-kube
não está instalado. Se estiver, você pode removê-lo executandoaz extension remove -n appservice-kube
.