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.
Este artigo demonstra o suporte que o Azure Functions oferece para aplicações de funções containerizadas que correm num ambiente Azure Container Apps. Para mais informações, consulte Azure Container Apps hospedagem de Azure Functions.
Important
Um novo método de alojamento para executar o Azure Functions diretamente no Azure Container Apps está agora disponível. Veja Suporte a Funções Nativas do Azure em Aplicações de Contentor do Azure. Esta integração permite-lhe utilizar todas as funcionalidades e capacidades do Azure Container Apps. Também beneficia do modelo de programação de funções e da simplicidade do dimensionamento automático fornecidos pelo Azure Functions.
Recomendamos essa abordagem para a maioria das novas cargas de trabalho. Para mais informações, consulte Azure Functions em Azure Container Apps.
Este artigo demonstra o suporte que o Azure Functions oferece para aplicações de funções que correm em contentores Linux.
Escolha o ambiente de hospedagem para seu aplicativo de função em contêiner na parte superior deste artigo.
Se quiser começar diretamente, o artigo seguinte mostra-lhe como criar a sua primeira função num contentor Linux e implementar a imagem de um registo de contentor para um serviço de alojamento Azure suportado:
Crie os seus primeiros contentores de Azure Functions nos Azure Container Apps
Para saber mais sobre implementações em Azure Container Apps, consulte o alojamento de Azure Functions em Azure Container Apps.
Crie o seu primeiro Azure Functions contentorizado
Important
Atualmente, este artigo mostra como ligar-se à conta de armazenamento por defeito usando uma cadeia de conexão. Para a melhor segurança, crie antes uma ligação gerida baseada em identidade ao Azure Storage usando autenticação Microsoft Entra. Para obter mais informações, consulte Conexões.
Criar aplicativos de função em contêiner
O Functions facilita a implantação e execução de seus aplicativos funcionais como contêineres Linux, que você cria e mantém. Functions mantém um conjunto de imagens base específicas do idioma que você pode usar ao criar aplicações de funções em contêiner.
Important
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 base suportadas para Azure Functions são específicas de cada linguagem. Veja os repos 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 menores e correções de segurança para o tempo de execução do Functions e as linguagens suportadas. 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.
Para obter um exemplo completo de como criar o aplicativo de função conteinerizado local a partir da linha de comando e publicar a imagem em um registro de contêiner, consulte Criar um aplicativo de função em um contêiner Linux local.
Gerar o Dockerfile
A ferramenta Functions fornece uma opção de Docker que gera um Dockerfile com o projeto de código das suas funções. Você pode usar esse arquivo com o Docker para criar suas funções em um contêiner que deriva da imagem base correta, que inclui idioma e versão.
A forma como crias um Dockerfile depende de como crias o teu projecto.
Quando criar um projeto de Funções usando Azure Functions Core Tools, inclua a opção
--dockerao executar o comandofunc init, como no seguinte exemplo:func init --dockerTambém pode adicionar um Dockerfile a uma project existente usando a opção
--docker-onlyquando executa o comandofunc initnuma pasta project existente, como no seguinte exemplo:func init --docker-only
Para um exemplo completo, veja Criar uma aplicação de funções num contentor Linux local.
Criar um Dockerfile personalizado
Em vez de usar um Dockerfile gerado, pode criar um manualmente quando precisar de mais controlo sobre a imagem do seu contentor. A pasta de contentores personalizados do azure-functions-docker repositório fornece estes modelos para o ajudar a começar:
| Template | Description |
|---|---|
| template.Dockerfile | Um guia comentado, passo a passo, para construir um contentor personalizado. Inclui instruções para múltiplas execuções de linguagens (Java, .NET isolado, Node.js, PowerShell, Python), instalação opcional de certificados da CA, execução como utilizador não root e ativação do SSH para depuração de Kudu. |
| sample.Dockerfile | Um exemplo pronto a usar construído a partir do modelo que cria um contentor de Funções do Azure baseado em Java com SSH ativado para a depuração do Kudu. |
Criar seu aplicativo de função em um contêiner
Com um Dockerfile gerado pelas Funções no seu projeto de código, pode usar o Docker para criar a aplicação de funções conteinerizada no seu computador local. O seguinte comando docker build cria uma imagem das funções containerizadas do projeto no diretório local:
docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .
Para obter um exemplo de como criar o contêiner, consulte Criar a imagem do contêiner e verificar localmente.
Atualizar uma imagem no registo
Quando fizer alterações ao seu projeto de código de funções ou precisar atualizar para a mais recente imagem base, reconstrua o container localmente. Republique a imagem atualizada no registro de contêiner escolhido. O comando a seguir reconstrói a imagem da pasta raiz com um número de versão atualizado e a envia para o registro:
az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .
Substitua <REGISTRY_NAME> pela instância do Registro de Contêiner e <LOGIN_SERVER> pelo nome do servidor de entrada.
Atualize uma implantação existente para usar a nova imagem. Pode atualizar a aplicação de funções para usar a nova imagem usando o Azure CLI ou no Azure portal:
az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Neste exemplo, <IMAGE_NAME> é o nome completo da nova imagem com versão. Os registos privados exigem que forneça um nome de utilizador e uma palavra-passe. Armazene essas credenciais com segurança.
Deves também considerar ativar a implementação contínua.
Crie uma aplicação de funções containerizada usando o Azure portal
Quando cria uma aplicação de funções no Azure portal, pode optar por implantar a aplicação de funções a partir de uma imagem num registo de contentores. Para saber como criar um aplicativo de função em contêiner em um registro de contêiner, consulte Criar seu aplicativo de função em um contêiner.
As etapas a seguir criam e implantam um aplicativo de função em contêiner existente a partir de um registro de contêiner.
No menu Azure portal ou na página Home, selecione Criar um recurso.
Na nova página, selecioneAplicação de Função>.
Em Selecione uma opção de hospedagem, escolha Funções Premium>Select.
Esta ação cria uma aplicação de funções alojada por Azure Functions no plano Premium, que suporta escalabilidade dinâmica. Também pode optar por executar num plano App Service, mas neste tipo de plano dedicado tem de gerir a escalabilidade da sua aplicação de funções.
Na página Noções básicas, use as configurações do aplicativo de função conforme especificado na tabela a seguir:
Setting Valor sugerido Description Subscription A sua subscrição A assinatura na qual você cria seu aplicativo de função. Grupo de Recursos myResourceGroup Nome para o novo grupo de recursos no qual você cria seu aplicativo de função. Você deve criar um grupo de recursos porque há limitações conhecidas ao criar novos aplicativos de função em um grupo de recursos existente. Nome da Aplicação de Funções Um nome de aplicativo Nome que identifica a sua nova aplicação de funções. Os carateres válidos são a-z(não sensível a maiúsculas e minúsculas),0-9e-.Nome de host padrão exclusivo seguro Enabled Habilite esse recurso para não precisar se preocupar com colisões de nomes de domínio, independentemente do nome do aplicativo. Deseja implantar código ou imagem de contêiner? Imagem de container Implante um aplicativo de função em contêiner a partir de um registro. Para criar um aplicativo de função no Registro, consulte Criar um aplicativo de função em um contêiner Linux local. Region Região preferida Selecione uma região que esteja próxima de si ou de outros serviços que as suas funções possam acessar. Plano Linux Novo plano (padrão) Cria um novo plano Premium para hospedar seu aplicativo. Você também pode escolher um plano premium existente. Plano de preços Elastic Premium EP1 EP1é o plano mais acessível. Você pode escolher um plano maior, se precisar.Redundância de zona Disabled Você não precisa desse recurso em um aplicativo que não seja de produção. Aceite as opções padrão de criar uma nova conta storage no separador Storage e uma nova instância Application Insight no separador Monitorização. Também pode optar por usar uma conta de storage existente ou uma instância do Application Insights.
Selecione Revisão + criar para rever as seleções de configuração da aplicação.
Na página Rever + criar, reveja as definições e, em seguida, selecione Criar para provisionar a aplicação de função utilizando uma imagem base predefinida.
Depois de criado o recurso da aplicação de função, selecione Ir para o recurso. Na página da aplicação de funções, selecione Centro de Implementação.
No Centro de Implementação, pode conectar o seu registo de containers como fonte da imagem. Também pode ativar o GitHub Actions ou o Azure Pipelines para uma implementação contínua e mais robusta das atualizações no seu contentor no registo.
Crie uma aplicação de funções containerizada usando o Azure portal
Quando cria uma aplicação de funções alojada nas Aplicações de Container no Azure portal, pode optar por implementar a sua aplicação de funções a partir de uma imagem num registo de contentores. Para saber como criar um aplicativo de função em contêiner em um registro de contêiner, consulte Criar seu aplicativo de função em um contêiner.
As etapas a seguir criam e implantam um aplicativo de função em contêiner existente a partir de um registro de contêiner.
No menu Azure portal ou na página Home, selecione Criar um recurso.
Na nova página, selecioneAplicação de Função>.
Em Selecione uma opção de hospedagem, escolha Ambiente de aplicativos de contêiner>Selecionar.
Na página Noções básicas, use as configurações do aplicativo de função conforme especificado na tabela a seguir:
Setting Valor sugerido Description Subscription A sua subscrição A assinatura na qual você cria seu aplicativo de função. Grupo de Recursos myResourceGroup Nome para o novo grupo de recursos no qual você cria seu aplicativo de função. Você deve criar um grupo de recursos porque há limitações conhecidas ao criar novos aplicativos de função em um grupo de recursos existente. Nome da Aplicação de Funções Nome único* Nome que identifica a sua nova aplicação de funções. Os carateres válidos são a-z(não sensível a maiúsculas e minúsculas),0-9e-.Region Região preferida Selecione uma região que esteja próxima de si ou de outros serviços que as suas funções possam acessar. *O nome da aplicação deve ser único dentro do ambiente Azure Container Apps.
Ainda na página Basics, aceite o novo ambiente sugerido para o ambiente do Azure Container Apps. Para minimizar custos, o novo ambiente padrão é criado em Consumo + Dedicado com o perfil de carga de trabalho padrão e sem redundância de zona. Para mais informações, consulte Azure Container Apps hospedagem de Azure Functions.
Você também pode optar por usar um ambiente existente de Aplicativos de Contêiner. Para criar um ambiente personalizado, selecione em vez disso Criar novo. Na página Criar Ambiente de Aplicações de Contentores, pode-se adicionar perfis de carga de trabalho não padrão ou habilitar a redundância de zona. Para aprender sobre ambientes, veja Ambientes de Azure Container Apps.
Selecione o separador Contentor e desmarque Usar imagem de arranque rápido. Caso contrário, a aplicação de funções será implantada a partir da imagem base correspondente ao idioma da aplicação.
Escolha o seu tipo de imagem, seja pública ou privada. Escolha Privado se estiver a usar Azure Container Registry ou outro registo privado. Fornece o nome da Imagem , incluindo o prefixo do registo. Se você estiver usando um registro privado, forneça as credenciais de autenticação do registro de imagem. A definição Public só suporta imagens armazenadas publicamente em Docker Hub.
Em Alocação de recursos de contêiner, selecione o número desejado de núcleos de CPU e memória disponível. Se o seu ambiente tiver outros perfis de carga de trabalho adicionados, pode selecionar um perfil de carga de trabalho não predefinido. As opções nesta página afetam o custo de hospedagem do seu aplicativo. Consulte a página de preços Container Apps para estimar os seus custos potenciais.
Selecione Revisão + criar para rever as seleções de configuração da aplicação.
Na página Rever + criar, reveja as definições e, em seguida, selecione Criar para provisionar a aplicação de funções e despachar a imagem de contêiner a partir do registo.
Trabalhar com imagens no Azure Functions
Quando o contentor da aplicação de funções é implantado a partir de um registo, o Functions mantém informações sobre a imagem de origem.
Use os seguintes comandos para obter dados sobre a imagem ou alterar a imagem de implantação usada:
az functionapp config container show: devolve informação sobre a imagem usada para a implementação.az functionapp config container set: alterar as definições do registo ou atualizar a imagem usada para a implementação, como mostrado no exemplo anterior.
Usar perfis de carga de trabalho de Aplicativos de Contêiner
Os perfis de carga de trabalho são recursos dos Aplicativos de Contêiner que permitem controlar melhor seus recursos de implantação. O Azure Functions no Azure Container Apps também suporta perfis de carga de trabalho. Para mais informações, consulte perfis de carga em Azure Container Apps.
Você também pode definir a quantidade de recursos de CPU e memória alocados para seu aplicativo.
Pode criar e gerir tanto perfis de carga de trabalho como alocações de recursos usando a Azure CLI ou no Azure portal.
Você habilita perfis de carga de trabalho ao criar seu ambiente de aplicativo de contêiner. Para obter um exemplo, consulte Criar um aplicativo de contêiner em um perfil.
Você pode adicionar, editar e excluir perfis em seu ambiente. Para um exemplo, veja Adicionar perfis.
Ao criar um aplicativo de função em contêiner em um ambiente que tenha perfis de carga de trabalho habilitados, você também deve especificar o perfil no qual executar. Especifique o perfil usando o parâmetro --workload-profile-name do comando az functionapp create, como neste exemplo:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
No comando az functionapp create, o parâmetro --environment especifica o ambiente Container Apps e o parâmetro --image especifica a imagem a usar para a function app. Neste exemplo, substitua <STORAGE_NAME> pelo nome que usou na secção anterior para a conta storage. Além disso, substitui <APP_NAME> por um nome apropriado para ti, que seja único no ambiente.
Para definir os recursos alocados ao seu aplicativo, substitua <CPU_COUNT> pelo número desejado de CPUs virtuais, com um mínimo de 0,5 até o máximo permitido pelo perfil. Para <MEMORY_SIZE>, escolha uma quantidade de memória dedicada de 1 GB até o máximo permitido pelo perfil.
Pode usar o comando az functionapp container set para gerir os recursos alocados e o perfil de carga de trabalho usado pela sua aplicação.
az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
Usar configurações do aplicativo
O Azure Functions permite-lhe trabalhar com as definições de aplicações para aplicações de funções containerizadas da forma padrão. Para mais informações, consulte Usar definições de aplicação.
Tip
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 do WEBSITES_PORT aplicativo para alterar essa porta.
Permitir a implementação contínua no Azure
Quando hospeda a sua aplicação de funções containerizada no Azure Container Apps, existem duas formas de configurar uma implementação contínua a partir de um repositório de código-fonte:
No momento, você não pode implantar continuamente contêineres com base em alterações de imagem em um registro de contêiner. Em vez disso, deves usar estas linhas de implantação contínua baseadas no código de origem.
Permitir a implementação contínua no Azure
Important
Atualmente, a implantação baseada em Webhook não é suportada ao executar seu contêiner em um plano Elastic Premium. Se precisar de usar o método de implantação contínua descrito nesta secção, implemente antes o seu contentor num plano App Service. Ao executar em um plano Elastic Premium, você precisa reiniciar manualmente seu aplicativo sempre que fizer atualizações no contêiner no repositório.
Também pode configurar a implementação contínua a partir de um repositório de código-fonte usando Azure Pipelines ou GitHub Actions.
Pode ativar o Azure Functions para atualizar automaticamente a sua implementação de uma imagem sempre que a atualizar no registo.
- Use o seguinte comando para habilitar a implantação contínua e obter a URL do webhook:
az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
O comando az functionapp deployment container config permite a implementação contínua e devolve o URL do webhook de implementação. Pode obter este URL a qualquer momento utilizando o comando az functionapp deployment container show-cd-url.
Como antes, substitua <APP_NAME> pelo nome do aplicativo de função.
Copie o URL do webhook de implantação para a área de transferência.
Abra Docker Hub, inicie sessão e selecione Repositórios na barra de navegação. Encontre e selecione a imagem, selecione o separador Webhooks, especifique um nome do Webhook, cole o seu URL no URL do Webhook e depois selecione Criar.
Com o webhook configurado, o Azure Functions redistribui a sua imagem sempre que a atualiza no Docker Hub.
Habilitar conexões SSH
O SSH permite a comunicação segura entre um contentor e um cliente. Com o SSH ativado, pode ligar-se ao seu contentor usando o App Service Advanced Tools (Kudu). Para facilitar a ligação ao teu contentor usando SSH, o Azure Functions fornece uma imagem base que já tem o SSH ativado. Só precisas de editar o teu Dockerfile, depois reconstruir e redistribuir a imagem. Em seguida, você pode se conectar ao contêiner através das Ferramentas Avançadas (Kudu).
No seu Dockerfile, anexe a cadeia
-appserviceà imagem base da suaFROMinstrução, como no seguinte exemplo:FROM mcr.microsoft.com/azure-functions/node:4-node18-appserviceEste exemplo usa a versão habilitada para SSH da imagem base do Node.js versão 18. Visite os repositórios da imagem base do Azure Functions para verificar se está a usar a versão mais recente da imagem base com SSH.
Reconstrua a imagem usando o comando
docker build, substitua o<DOCKER_ID>pelo ID da sua conta Docker Hub, como no exemplo seguinte.docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .Envie a imagem atualizada para o Docker Hub, o que deverá demorar consideravelmente menos tempo do que o primeiro esforço. Apenas os segmentos atualizados da imagem precisam ser carregados agora.
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0O Azure Functions redistribui automaticamente a imagem na tua aplicação Functions. O processo ocorre em menos de um minuto.
No Azure portal, localize a sua aplicação de funções. No menu esquerdo, selecione Ferramentas> de DesenvolvimentoSSH. Selecione Avançar. A ligação pode demorar alguns momentos se o Azure ainda estiver a atualizar a imagem do contentor.
Depois que uma conexão for estabelecida com seu contêiner, execute o
topcomando para exibir os processos em execução no momento.
Conteúdo relacionado
Os artigos a seguir fornecem mais informações sobre como implantar e gerenciar contêineres: