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.
Quando você planeja e desenvolve suas funções individuais para serem executadas no Azure Functions, normalmente está focado no código em si. O Azure Functions facilita a implantação apenas do seu projeto de código em um aplicativo de função no Azure. Quando você implanta seu projeto em um aplicativo de função Linux, seu código é executado em um contêiner que é criado para você automaticamente e se integra perfeitamente com as ferramentas de gerenciamento do Functions.
O Functions também oferece suporte a implantações de aplicativos de função em contêineres. Numa implantação em contentores, cria-se a própria instância da aplicação de função num contentor Docker local a partir de uma imagem base suportada. Em seguida, você pode implantar esse aplicativo de função em contêiner em um ambiente de hospedagem no Azure. Criar seu próprio contêiner de aplicativo de função permite que você personalize ou, de outra forma, controle o ambiente de tempo de execução imediato do seu código de função.
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 o Azure Functions são específicas do idioma. Consulte os 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 menores e correções de segurança para ambos o tempo de execução e os idiomas das Funções. 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.
Opções de hospedagem de contêiner
Há várias opções para hospedar seus aplicativos de função em contêiner no Azure:
| Opção de hospedagem | Benefits |
|---|---|
| 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. Essa integração permite que você gerencie seus aplicativos usando as mesmas ferramentas e páginas do Functions no portal do Azure. Use os Aplicativos de Contêiner do Azure para hospedar seu contêiner de aplicativo de função no mesmo ambiente que outros microsserviços, APIs, sites, fluxos de trabalho ou outros programas hospedados em contêiner. A hospedagem de aplicativos de contêiner permite que você execute suas funções em um ambiente gerenciado baseado em Kubernetes com suporte integrado para monitoramento de código aberto, mTLS, Dapr e KEDA. Suporta escala até zero e fornece um modelo de hospedagem sem servidor que cobra apenas pelo que utiliza. Você também pode solicitar hardware dedicado, até mesmo GPUs, usando perfis de carga de trabalho. Opção de hospedagem recomendada para aplicativos de função em contêiner no Azure. |
| Clusters do Kubernetes com suporte para Azure Arc (visualização) | Você pode hospedar suas aplicações de funções em clusters de Kubernetes ativados para o Azure Arc como uma implementação apenas de código ou num contentor Linux personalizado. O Azure Arc permite anexar clusters Kubernetes para que você possa gerenciá-los e configurá-los no Azure. A hospedagem de contentores do Azure Functions em clusters Kubernetes com Azure Arc está atualmente em pré-visualização. Para obter mais informações, consulte Trabalhando com contêineres e Azure Functions. |
| Funções do Azure | Você pode hospedar seus aplicativos de função em contêineres no Azure Functions executando o contêiner em um plano Elastic Premium ou um Serviço de Aplicativo (Dedicado). Utilize a hospedagem de Aplicações de Contentores para suporte avançado de contentores. A hospedagem de planos Premium oferece os benefícios do dimensionamento dinâmico. Talvez você queira usar a hospedagem de plano dedicado para aproveitar os recursos existentes do plano do Serviço de Aplicativo não utilizados. |
| Kubernetes | Como o tempo de execução do Azure Functions fornece flexibilidade na hospedagem onde e como você deseja, você pode hospedar e gerenciar seus contêineres de aplicativo de função diretamente em clusters do Kubernetes. O KEDA (Event Driven Autoscaling baseado em Kubernetes) combina perfeitamente com o tempo de execução e as ferramentas do Azure Functions para fornecer escala orientada a eventos no Kubernetes. Importante: A hospedagem Kubernetes de seus aplicativos de função em contêineres, seja usando KEDA ou por implantação direta, é um esforço de código aberto que você pode usar gratuitamente. O suporte de melhor esforço para este cenário de hospedagem é fornecido apenas por colaboradores e pela comunidade. Você é responsável por manter seus próprios contêineres de aplicativo de função em um cluster, mesmo ao implantá-los no Serviço Kubernetes do Azure (AKS). |
Comparação de suporte de funcionalidades
O grau em que vários recursos e comportamentos do Azure Functions são suportados ao executar seu aplicativo de função em um contêiner depende da opção de hospedagem de contêiner escolhida.
| Feature/behavior | Aplicativos de contêiner (integrado) | Aplicativos de contêiner (direto) | Plano Premium | Plano dedicado | Kubernetes |
|---|---|---|---|---|---|
| Suporte ao produto | Yes | No | Yes | Yes | No |
| Integração do portal de funções | No | No | Yes | Yes | No |
| Dimensionamento controlado por eventos | Yes5 | Sim (regras de escala) | Yes | No | No |
| Escala máxima (número de instâncias) | 10001 | 10001 | 1002 | 10-303 | Varia de acordo com o cluster |
| Instâncias com escala até zero | Yes | Yes | No | No | KEDA |
| Prazo de execução | Unbounded6 | Unbounded6 | Unbounded7 | Unbounded8 | None |
| Implantação de ferramentas principais | No | No | No | No | func kubernetes |
| Revisions | Yes | Yes | No | No | No |
| Slots de implantação | No | No | Yes | Yes | No |
| Logs de streaming | Yes | Yes | Yes | Yes | No |
| Acesso à consola | Yes | Yes | Sim (usando Kudu) | Sim (usando Kudu) | Sim (em cápsulas usando kubectl) |
| Mitigação do arranque a frio | Mínimo de réplicas | Regras de escala | Instâncias pré-aquecidas/sempre prontas | n/a | n/a |
| Autenticação do Serviço de Aplicações | Yes | Yes | Yes | Yes | No |
| Nomes de domínio personalizados | Yes | Yes | Yes | Yes | No |
| Certificados de chave privada | Yes | Yes | Yes | Yes | No |
| Redes virtuais | Yes | Yes | Yes | Yes | Yes |
| Zonas de disponibilidade | Yes | Yes | Yes | Yes | Yes |
| Diagnostics | Yes | Yes | Yes | Yes | No |
| Hardware dedicado | Sim (perfis de carga de trabalho) | Sim (perfis de carga de trabalho) | No | Yes | Yes |
| GPUs dedicadas | Sim (perfis de carga de trabalho) | Sim (perfis de carga de trabalho) | No | No | Yes |
| Contagem configurável de memória/CPU | Yes | Yes | No | No | Yes |
| Opção "Subvenção gratuita" | Yes | Yes | No | No | No |
| Detalhes dos preços | Faturação para Aplicações de Contentores | Faturação para Aplicações de Contentores | Faturação do plano Premium | Faturação de planos dedicados | Preços AKS |
| Requisitos de nome de serviço | 2-32 caracteres: limitado a letras minúsculas, números e hífenes. Deve começar com uma letra e terminar com um caractere alfanumérico. | 2-32 caracteres: limitado a letras minúsculas, números e hífenes. Deve começar com uma letra e terminar com um caractere alfanumérico. | Menos de 64 caracteres: limitado a caracteres alfanuméricos e hífenes. Não é possível começar com ou terminar com um hífen. | Menos de 64 caracteres: limitado a caracteres alfanuméricos e hífenes. Não é possível começar com ou terminar com um hífen. | Menos de 253 caracteres: limitado a caracteres alfanuméricos e hífenes. Deve começar e terminar com um caractere alfanumérico. |
- Em Aplicativos de Contêiner, o padrão é 10 instâncias, mas você pode definir o número máximo de réplicas, que tem um máximo geral de 1000. Essa configuração é respeitada desde que haja cota de núcleos suficiente disponível. Ao criar seu aplicativo de função a partir do portal do Azure, você está limitado a 300 instâncias.
- Em algumas regiões, os aplicativos Linux em um plano Premium podem ser dimensionados para 100 instâncias. Para obter mais informações, consulte o artigo do plano Premium.
- Para obter limites específicos para as várias opções do plano do Serviço de Aplicativo, consulte os limites do plano do Serviço de Aplicativo.
- O KEDA é necessário; suportado pela maioria dos ativadores. Para saber quais gatilhos oferecem suporte ao dimensionamento controlado por eventos, consulte Considerações sobre hospedagem de aplicativos de contêiner.
- Quando o número mínimo de réplicas é definido como zero, o tempo limite padrão depende dos gatilhos específicos usados no aplicativo.
- Não há uma duração máxima de tempo limite de execução imposta. No entanto, o período de carência dado à execução de uma função é de 60 minutos durante a redução de escala, e de 10 minutos durante as atualizações da plataforma.
- Requer que o plano do Serviço de Aplicativo esteja definido como Sempre Ativado. Um período de carência de 10 minutos é dado durante as atualizações da plataforma.
Manutenção de contêineres personalizados
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 menores e correções de segurança para ambos o tempo de execução e os idiomas das Funções. Você deve atualizar regularmente seu contêiner a partir da imagem base mais recente e reimplantar a versão atualizada do contêiner.
Escolha sua imagem base com base na pilha de idiomas que você está usando em seu aplicativo de função. A tabela a seguir fornece exemplos para cada pilha. Em geral, a tag deve começar com 4- para indicar o tempo de execução das funções V4. Quando novas versões secundárias forem lançadas, essa tag será atualizada para apontar para a nova versão. À medida que reconstrói periodicamente a sua imagem personalizada, irá extrair as novas versões através dessa mesma etiqueta, permitindo que a sua aplicação tenha as mesmas atualizações. Você não deve usar tags que especifiquem versões secundárias de tempo de execução, pois elas não receberão atualizações e seu aplicativo permanecerá potencialmente em uma versão sem patch, independentemente da frequência com que você reconstruir sua imagem personalizada.
| Pilha de idiomas | Exemplo de tags de imagem base recomendadas |
|---|---|
| .NET (modelo de trabalho isolado) |
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 oumcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice(Estes exemplos destinam-se ao .NET 8. Selecione a imagem apropriada para a versão .NET que você precisa.) |
| .NET (modelo de processo interno herdado) |
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 oumcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice(O suporte para o modelo em processo terminará em 10 de novembro de 2026. Você deve migrar para o modelo de trabalhador isolado o mais rápido possível.) |
| Java |
mcr.microsoft.com/azure-functions/java:4-java21 oumcr.microsoft.com/azure-functions/java:4-java21-appservice(Estes exemplos destinam-se ao Java 21. Selecione a imagem apropriada para a versão Java que você precisa.) |
| Node.js (JavaScript ou TypeScript) |
mcr.microsoft.com/azure-functions/node:4-node22 oumcr.microsoft.com/azure-functions/node:4-node22-appservice(Estes exemplos visam Node.js 22. Selecione a imagem apropriada para a versão Node.js que você precisa.) |
| PowerShell |
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 oumcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice(Estes exemplos destinam-se ao PowerShell 7.4. Selecione a imagem apropriada para a versão do PowerShell de que você precisa.) |
| Python |
mcr.microsoft.com/azure-functions/python:4-python3.12 oumcr.microsoft.com/azure-functions/python:4-python3.12-appservice(Estes exemplos destinam-se ao Python 3.12. Selecione a imagem apropriada para a versão Python que você precisa.) |
| Manipuladores personalizados / outros |
mcr.microsoft.com/azure-functions/base:4 oumcr.microsoft.com/azure-functions/base:4-appservice |
Imagens de base que terminam em -appservice permitem o uso de SSH e depuração remota a partir da plataforma. A menos que você precise desses recursos, você pode usar as imagens base sem o sufixo -appservice .
Important
Não é suficiente ter apenas uma das tags acima no seu Dockerfile. Você precisa extrair regularmente a imagem mais recente dessa tag para que sua imagem personalizada possa ser reconstruída para incluir as atualizações mais recentes. Se você não extrair a imagem mais recente e reconstruir, seu aplicativo continuará a ser executado na imagem base antiga.
Ao criar ou implantar a sua própria aplicação em contentores usando uma imagem personalizada, é responsável por garantir que a sua imagem personalizada permaneça atualizada com as nossas imagens base lançadas. Além de novos recursos e melhorias, essas atualizações de imagem base também podem incluir atualizações de segurança que são críticas para seu aplicativo. Para garantir que a sua aplicação está protegida, certifique-se de que se mantém atualizado. Você deve extrair regularmente a versão mais recente da imagem base, reconstruir sua imagem de contêiner personalizada e reimplantar seu aplicativo para usá-la.
Em alguns casos, somos obrigados a fazer alterações no nível da plataforma que podem significar que um aplicativo em um contêiner personalizado usando uma imagem base antiga pode parar de funcionar corretamente. Para essas mudanças importantes, lançamos imagens atualizadas com bastante antecedência para que os aplicativos que recebem atualizações regulares não sejam afetados negativamente. Para evitar possíveis problemas com as suas aplicações a correrem em contentores personalizados, certifique-se de que não fica demasiado atrasado relativamente à versão menor mais recente lançada. Durante um caso de suporte, se determinarmos que seu aplicativo está enfrentando problemas porque está em uma versão mais antiga ou sem suporte, solicitamos que você atualize seu contêiner para a versão de imagem base mais recente antes de continuar com o suporte.
Como Começar
Use estes links para começar a trabalhar com o Azure Functions em contêineres do Linux:
| Eu quero... | Ver artigo: |
|---|---|
| Criar minhas primeiras funções em contêineres | Criar um aplicativo de função em um contêiner Linux local |
| Criar e implantar funções em Aplicativos de Contêiner do Azure | Crie suas primeiras funções em contêineres nos Aplicativos de Contêiner do Azure |
| Criar e implantar funções em contêineres no Azure Functions | Crie seu primeiro Azure Functions em contêiner |