Slots de implantação do Azure Functions

Em planos de hospedagem que suportam slots de implantação, seu aplicativo de funções pode rodar instâncias separadas chamadas slots. Cada slot é um ambiente separado com seu próprio nome de host. O acesso ao endpoint de um slot depende das restrições de rede e acesso que você configura para esse slot. Um slot é sempre o slot de produção, e você pode trocar um slot de staging disponível pelo slot de produção sob demanda.

O número de slots disponíveis depende da opção de hospedagem específica:

Opção de hospedagem Slots (incluindo produção)
Plano de Consumo 2 (um slot de produção e um slot de staging)
Plano de Consumo Flexível Não há suporte atualmente. Para implantações sem tempo de inatividade, consulte Estratégias de atualização de site no Consumo Flexível.
Plano Premium 3
Plano dedicado (Serviço de Aplicativo) 1-20
Aplicativos de Contêiner do Azure Vagas de implantação não se aplicam. Use revisões.

Selecione seu plano de hospedagem no topo deste artigo para ver as orientações que se aplicam ao seu aplicativo de eventos.

Implantar sem slots no Consumo Flexível

O plano Flex Consumption não suporta slots de implantação. Para lançamentos controlados e implantações sem tempo de inatividade, use atualizações contínuas como estratégia de atualização do site.

Implantar com revisões nos Aplicativos de Contêiner do Azure

Azure Functions no Aplicativos de Contêiner do Azure não usa slots de implantação. Use revisões para gerenciar e direcionar o tráfego entre versões do seu aplicativo de funções.

Nos planos Consumo, Premium e Dedicado, os slots de implantação funcionam da seguinte forma:

Por que usar os slots?

Há várias vantagens em usar slots de implantação, incluindo:

  • Ambientes diferentes para propósitos diferentes: Usando diferentes slots, você pode diferenciar instâncias de aplicativos antes de trocar para produção ou para um slot de staging.
  • Aquecimento prévio: Implante em um slot em vez de diretamente na produção para preparar o aplicativo antes de entrar em operação. Além disso, usar slots reduz a latência para cargas de trabalho acionadas por HTTP. As instâncias são preparadas antes da implantação, o que reduz a partida a frio (início) para funções implantadas recentemente.
  • Reversão fácil: após a troca, o slot com o aplicativo de preparo anterior terá o aplicativo de produção anterior. Se as alterações que você colocou no slot de produção não forem o que você esperava, poderá desfazer a troca imediatamente para recuperar sua "última instância válida conhecida".
  • Minimizar reinicializações: alterar as configurações do aplicativo em um slot de produção requer uma reinicialização do aplicativo em execução. Em vez disso, você pode alterar as configurações em um slot de preparo e trocar as configurações de alteração para produção por uma instância pré-inicializada. Os slots são a maneira recomendada de migrar entre as versões de runtime do Functions, mantendo a maior disponibilidade. Para saber mais, confira Atualização com o mínimo de tempo de inatividade.

Operações de troca

Durante uma troca, um slot é o de origem e o outro é o de destino. O slot de origem contém a instância da aplicação que você aplica ao slot de destino. As etapas a seguir ajudam a reduzir o tempo de inatividade no slot de destino durante uma troca:

  1. Aplicar configurações: Aplicar configurações do slot de destino para todas as instâncias do slot de origem. Por exemplo, aplique as configurações de produção à instância de staging. As configurações aplicadas incluem as seguintes categorias:

  2. Aguarde as reinicializações e a disponibilidade: a troca espera que cada instância no slot de origem conclua sua reinicialização e esteja disponível para solicitações. Se alguma instância não conseguir reiniciar, a operação de troca reverte todas as alterações no slot de origem e interrompe a operação.

  3. Atualização do roteamento: Se todas as instâncias no slot de origem forem inicializadas com sucesso, os dois slots concluem a permuta ao alternar as regras de roteamento. Após esta etapa, o slot de destino (por exemplo, o slot de produção) tem o aplicativo que foi anteriormente ativado no slot de origem.

  4. Repita a operação: agora que o slot de origem tem o aplicativo da pré-troca que antes estava no slot de destino, execute a mesma operação, aplicando todas as configurações e reiniciando as instâncias no slot de origem.

Tenha em mente os seguintes pontos:

  • Em algum ponto da operação de troca, a inicialização dos aplicativos trocados acontece no slot de origem. O slot de destino permanece online enquanto o slot de origem é preparado, independentemente da troca ser bem-sucedida ou falhar.

  • Para trocar um slot de preparo pelo slot de produção, certifique-se de que o slot de produção seja sempre o slot de destino. Dessa forma, a operação de troca não afeta seu aplicativo de produção.

  • Configure as configurações relacionadas a fontes de eventos e vinculações como configurações de slot de implantaçãoantes de iniciar uma troca. Marcá-los como "fixos" antecipadamente garante que os eventos e as saídas sejam direcionados para a instância apropriada.

  • Quando você cria um novo slot de staging, o portal cria no novo slot todas as configurações existentes do slot de produção, independentemente da aderência da configuração.

Gerenciar configurações

Algumas configurações são específicas de um slot. As listas a seguir detalham quais configurações mudam quando você troca de slot, e quais permanecem as mesmas.

Configurações específicas do slot:

  • Pontos de extremidade de publicação
  • Nomes de domínio personalizados
  • Certificados não públicos e configurações de TLS/SSL
  • Configurações de dimensionamento
  • Restrições de IP
  • Always On
  • Configurações de diagnóstico
  • CORS (compartilhamento de recursos entre origens)
  • Pontos de extremidade privados

Configurações não específicas do slot:

  • Configurações gerais, como versão do framework, 32/64 bits e web sockets
  • Configurações do aplicativo (podem ser configuradas para fixarem-se a um slot)
  • Cadeias de conexão (podem ser configuradas para fixarem-se a um slot)
  • Mapeamentos de manipulador
  • Certificados públicos
  • Conexões híbridas *
  • Integração de rede virtual *
  • Pontos de extremidade de serviço *
  • Rede de Distribuição de Conteúdo do Azure *

Os recursos marcados com um asterisco (*) não são trocados por design.

Observação

Certas configurações do app que se aplicam a configurações não trocadas não são trocadas. Por exemplo, como as configurações de diagnóstico não estão trocadas, configurações relacionadas ao aplicativo como WEBSITE_HTTPLOGGING_RETENTION_DAYS e DIAGNOSTICS_AZUREBLOBRETENTIONDAYS não estão trocadas, mesmo que não apareçam como configurações de slot.

Criar um slot de implantação

Você pode marcar as configurações como uma configuração de implantação, o que o torna fixo. Uma configuração fixa não muda com a instância do aplicativo.

Se você criar uma configuração de implantação em um slot, certifique-se de criar a mesma configuração com um valor único em qualquer outro slot envolvido em uma troca. Dessa forma, embora o valor de uma configuração não mude, os nomes de configuração permanecem consistentes entre os slots. Essa consistência de nome garante que seu código não tente acessar uma configuração definida em um slot, mas não em outra.

Use as seguintes etapas para criar uma configuração de implantação:

  1. Vá em Espaços de Implantação no app da função e então selecione o nome do slot.

    A captura de tela mostra os slots de implantações no portal do Azure.

  2. Selecione Configuração e o nome da configuração que você deseja fixar no slot atual.

    A captura de tela mostra onde definir a configuração do aplicativo para um slot no portal do Azure.

  3. Selecione Configuração do slot de implantação e clique em OK.

    A captura de tela mostra onde definir a configuração do slot de implantação.

  4. Depois que a seção de configurações fechar, selecione Salvar para manter as alterações.

    A captura de tela mostra como salvar a configuração do slot de implantação.

Implante um aplicativo em um slot

Os slots ficam vazios quando você cria um slot. Use qualquer uma das tecnologias de implantação com suporte para implantar seu aplicativo em um slot.

Como os slots de implantação escalam

Todos os slots são dimensionados para o mesmo número de trabalhadores que o slot de produção.

  • Para planos de Consumo, o slot é dimensionado conforme o aplicativo de funções é dimensionado.
  • Para planos do Serviço de Aplicativo, o aplicativo é dimensionado para um número fixo de trabalhadores. Os slots são executados com o mesmo número de trabalhadores que o plano do aplicativo.

Exibir os slots

Você pode visualizar informações sobre os slots existentes usando tanto o CLI do Azure quanto o portal Azure.

Use estes passos para visualizar os slots existentes no portal:

  1. Acesse o aplicativo da sua função.

  2. Selecione os slots de implantação e veja os slots existentes.

Adicionar um slot

Você pode adicionar um slot usando tanto o CLI do Azure quanto o portal do Azure.

Use estas etapas para criar um slot no portal:

  1. Acesse o aplicativo da sua função.

  2. Selecione Slots de implantação e + Adicionar Slot.

    A captura de tela mostra a adição de um slot de implantação do Azure Functions.

  3. Digite o nome do slot e selecione Adicionar.

    A captura de tela mostra a nomenclatura do slot de implantação do Azure Functions.

Você também pode criar um slot usando modelos do Azure Resource Manager (ARM) ou arquivos Bicep. Para obter um exemplo de como criar um aplicativo de funções em um plano de consumo com um slot de implantação, consulte este guia de início rápido do Azure Resource Manager.

Recursos de slot de acesso

Você acessa recursos (gatilhos HTTP e pontos de extremidade de administrador) em um slot de preparo da mesma forma que o slot de produção. No entanto, em vez do nome do host do aplicativo de funções, você usa o nome do host específico do slot na URL de solicitação, juntamente com quaisquer chaves específicas de slot. Como os slots de preparo são aplicativos dinâmicos, você deve proteger suas funções em um slot de preparo como faria no slot de produção.

Trocar slots

Você pode trocar slots dentro e fora da produção usando tanto a CLI do Azure quanto o portal do Azure.

Use estas etapas para trocar um slot de preparo para produção:

  1. Vá para o aplicativo de funções.

  2. Selecione Slots de implantação e Trocar.

    Captura de tela que mostra a página de slot de implantação com a ação Adicionar slot selecionada.

  3. Verifique as configurações de sua troca e selecione Trocar.

    Captura de tela mostrando a troca do slot de implantação.

Essa operação de troca pode levar alguns segundos.

Reverter a troca

Se uma troca resultar em erro ou você quiser desfazer a troca, pode reverter para o estado inicial. Para retornar ao estado de pré-troca, faça outra troca para reverter a troca.

Remover um slot

Você pode remover um slot usando tanto a CLI do Azure quanto o portal do Azure.

Use estas etapas para remover um slot do seu aplicativo no portal:

  1. Vá em Espaços de Implantação no app da função e então selecione o nome do slot.

    Captura de tela mostrando a página em que você encontra slots no portal do Azure.

  2. Selecione Excluir.

    Captura de tela que mostra a página de Visão Geral com a ação Excluir selecionada.

  3. Digite o nome do slot de implantação que você deseja excluir e selecione Excluir.

    A captura de tela mostra a exclusão do slot de implantação no portal do Azure.

  4. Feche o painel de confirmação.

    A captura de tela mostra a confirmação de exclusão do slot de implantação.

Alterar plano do Serviço de Aplicativo

Com um aplicativo de funções executado em um plano do App Service, você pode alterar, para um slot, o plano do App Service subjacente.

Use as etapas a seguir para alterar o plano do Serviço de Aplicativo de um slot:

  1. Vá em Espaços de Implantação no app da função e então selecione o nome do slot.

    A captura de tela mostra os slots no portal do Azure.

  2. Em plano do Serviço de Aplicativo, selecione Alterar plano do Serviço de Aplicativo.

  3. Selecione o plano para o qual você deseja atualizar ou crie um novo plano.

    A captura de tela mostra onde alterar o plano do Serviço de Aplicativo no portal do Azure.

  4. Selecione OK.

Considerações

Os slots de implantação do Azure Functions têm as seguintes considerações:

  • O número de slots disponíveis para um aplicativo depende do plano. O plano de Consumo oferece suporte a apenas dois slots no total: o slot de produção e um slot de homologação. Mais slots estão disponíveis para aplicativos em execução em outros planos. Confira Limites de serviço para obter detalhes.
  • A troca de slot redefine as chaves para os aplicativos que têm uma configuração de aplicativo AzureWebJobsSecretStorageType igual a files.
  • Quando você ativa os slots, o portal configura seu aplicativo de funções para modo somente leitura.
  • Trocas de slot podem falhar quando seu app de funções usa uma conta de armazenamento segura como conta padrão (configurada em AzureWebJobsStorage). Para obter mais informações, confira a referência WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS.
  • Use nomes de aplicativo de funções com menos de 32 caracteres. Nomes com mais de 32 caracteres podem causar colisões no ID do host.

Próximas etapas