Slots de implementação de funções AzureAzure Functions deployment slots

As ranhuras de implementação de Funções Azure permitem que a sua aplicação de função execute diferentes instâncias chamadas "slots".Azure Functions deployment slots allow your function app to run different instances called "slots". As ranhuras são diferentes ambientes expostos através de um ponto final disponível ao público.Slots are different environments exposed via a publicly available endpoint. Uma instância de aplicação é sempre mapeada para a ranhura de produção, e você pode trocar instâncias atribuídas a uma ranhura a pedido.One app instance is always mapped to the production slot, and you can swap instances assigned to a slot on demand. As aplicações de função que executam ao abrigo do plano de Serviço de Aplicações podem ter várias faixas horárias, enquanto no âmbito do plano De Consumo apenas é permitida uma ranhura.Function apps running under the Apps Service plan may have multiple slots, while under the Consumption plan only one slot is allowed.

As seguintes funções são afetadas pela troca de faixas horárias:The following reflect how functions are affected by swapping slots:

  • A reorientação do tráfego é perfeita; nenhum pedido é retirado por causa de uma troca.Traffic redirection is seamless; no requests are dropped because of a swap.
  • Se uma função estiver a ser executada durante uma troca, a execução continua e os próximos gatilhos são encaminhados para a instância da aplicação trocada.If a function is running during a swap, execution continues and the next triggers are routed to the swapped app instance.

Nota

Atualmente, as faixas horárias não estão disponíveis para o plano de consumo de Linux.Slots are currently not available for the Linux Consumption plan.

Por que usar slots?Why use slots?

Há uma série de vantagens na utilização de slots de implantação.There are a number of advantages to using deployment slots. Os seguintes cenários descrevem utilizações comuns para slots:The following scenarios describe common uses for slots:

  • Ambientes diferentes para diferentes finalidades: A utilização de diferentes slots dá-lhe a oportunidade de diferenciar as instâncias da aplicação antes de trocar para a produção ou uma ranhura de preparação.Different environments for different purposes: Using different slots gives you the opportunity to differentiate app instances before swapping to production or a staging slot.
  • Pré-guerra: Implantar para uma ranhura em vez de diretamente para a produção permite que a app aqueça antes de entrar em direto.Prewarming: Deploying to a slot instead of directly to production allows the app to warm up before going live. Além disso, a utilização de slots reduz a latência para cargas de trabalho desencadeadas por HTTP.Additionally, using slots reduces latency for HTTP-triggered workloads. As ocorrências são aquecidas antes da implantação, o que reduz o arranque a frio para as funções recém-implantadas.Instances are warmed up before deployment, which reduces the cold start for newly deployed functions.
  • Recuos fáceis: Após uma troca com a produção, a ranhura com uma aplicação previamente encenada tem agora a aplicação de produção anterior.Easy fallbacks: After a swap with production, the slot with a previously staged app now has the previous production app. Se as alterações trocadas na ranhura de produção não forem como se espera, pode reverter imediatamente a troca para recuperar a sua "última boa instância conhecida".If the changes swapped into the production slot aren't as you expect, you can immediately reverse the swap to get your "last known good instance" back.

Operações de trocaSwap operations

Durante uma troca, uma ranhura é considerada a fonte e a outra o alvo.During a swap, one slot is considered the source and the other the target. A ranhura de origem tem a instância da aplicação que é aplicada à ranhura do alvo.The source slot has the instance of the application that is applied to the target slot. Os seguintes passos garantem que a ranhura do alvo não experimenta tempo de inatividade durante uma troca:The following steps ensure the target slot doesn't experience downtime during a swap:

  1. Aplicar definições: As definições da ranhura-alvo são aplicadas a todas as instâncias da ranhura de origem.Apply settings: Settings from the target slot are applied to all instances of the source slot. Por exemplo, as definições de produção são aplicadas à fase de paragem.For example, the production settings are applied to the staging instance. As definições aplicadas incluem as seguintes categorias:The applied settings include the following categories:

  2. Aguarde o recomeço e disponibilidade: O swap aguarda que cada instância na ranhura de origem complete o seu reinício e esteja disponível para pedidos.Wait for restarts and availability: The swap waits for every instance in the source slot to complete its restart and to be available for requests. Se alguma instância não reiniciar, a operação de troca reverte todas as alterações na ranhura de origem e interrompe o funcionamento.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. Encaminhamento de atualização: Se todas as instâncias da ranhura de origem forem aquecidas com sucesso, as duas ranhuras completam a troca com as regras de encaminhamento.Update routing: If all instances on the source slot are warmed up successfully, the two slots complete the swap by switching routing rules. Após este passo, a ranhura-alvo (por exemplo, a ranhura de produção) tem a aplicação que já foi previamente aquecida na ranhura de origem.After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

  4. Repetição da operação: Agora que a ranhura de origem possui a aplicação de pré-troca anteriormente na ranhura alvo, complete a mesma operação aplicando todas as definições e reiniciando as instâncias para a ranhura de origem.Repeat operation: Now that the source slot has the pre-swap app previously in the target slot, complete the same operation by applying all settings and restarting the instances for the source slot.

Tenha em consideração os seguintes pontos:Keep in mind the following points:

  • Em qualquer ponto da operação de troca, a inicialização das aplicações trocadas ocorre na ranhura de origem.At any point of the swap operation, initialization of the swapped apps happens on the source slot. A ranhura do alvo permanece on-line enquanto a ranhura de origem é preparada, se a troca tem sucesso ou falha.The target slot remains online while the source slot is prepared, whether the swap succeeds or fails.

  • Para trocar uma ranhura de encenação com a ranhura de produção, certifique-se de que a ranhura de produção é sempre a ranhura-alvo.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. Desta forma, a operação de troca não afeta a sua aplicação de produção.This way, the swap operation doesn't affect your production app.

  • As definições relacionadas com as fontes de eventos e as encadernações devem ser configuradas como definições de slot de implantação antes de iniciar uma troca.Settings related to event sources and bindings must be configured as deployment slot settings before you start a swap. Marcá-los como "pegajosos" antes do tempo garante que os eventos e saídas são direcionados para o caso adequado.Marking them as "sticky" ahead of time ensures events and outputs are directed to the proper instance.

Gerir definiçõesManage settings

Quando clona a configuração a partir de outra ranhura de implantação, a configuração clonada é editável.When you clone configuration from another deployment slot, the cloned configuration is editable. Alguns elementos de configuração seguem o conteúdo através de uma troca (não específica para a ranhura), enquanto outros elementos de configuração permanecem na mesma ranhura após uma troca (específica slot).Some configuration elements follow the content across a swap (not slot specific), whereas other configuration elements stay in the same slot after a swap (slot specific). As listas que se seguem mostram as definições que mudam quando troca slots.The following lists show the settings that change when you swap slots.

Definições que são trocadas:Settings that are swapped:

  • Configurações gerais, tais como versão-quadro, tomadas web de 32/64 bitsGeneral settings, such as framework version, 32/64-bit, web sockets
  • Definições de aplicativos (pode ser configurado para manter uma ranhura)App settings (can be configured to stick to a slot)
  • Cordas de ligação (podem ser configuradas para se colarem a uma ranhura)Connection strings (can be configured to stick to a slot)
  • Mapeamentos de manipuladorHandler mappings
  • Certificados públicosPublic certificates
  • Conteúdo da WebJobsWebJobs content
  • Ligações híbridas *Hybrid connections *
  • Integração de rede virtual *Virtual network integration *
  • Pontos finais de serviço *Service endpoints *
  • Rede de Entrega de Conteúdos Azure *Azure Content Delivery Network *

As características marcadas com um asterisco (*) estão planeadas para não seremgrafadas.Features marked with an asterisk (*) are planned to be unswapped.

Configurações que não são trocadas:Settings that aren't swapped:

  • Pontos finais de publicaçãoPublishing endpoints
  • Nomes de domínio personalizadosCustom domain names
  • Certificados não públicos e definições de TLS/SSLNon-public certificates and TLS/SSL settings
  • Configurações de escalaScale settings
  • Agendadores WebJobsWebJobs schedulers
  • Restrições ipIP restrictions
  • Sempre ligadoAlways On
  • Definições de diagnósticoDiagnostic settings
  • Partilha de recursos de origem cruzada (CORS)Cross-origin resource sharing (CORS)

Nota

Algumas definições de aplicações que se aplicam a definições não mapeadas também não são trocadas.Certain app settings that apply to unswapped settings are also not swapped. Por exemplo, uma vez que as definições de diagnóstico não são trocadas, as definições de aplicações relacionadas como WEBSITE_HTTPLOGGING_RETENTION_DAYS e também não são DIAGNOSTICS_AZUREBLOBRETENTIONDAYS trocadas, mesmo que não apareçam como configurações de slot.For example, since diagnostic settings are not swapped, related app settings like WEBSITE_HTTPLOGGING_RETENTION_DAYS and DIAGNOSTICS_AZUREBLOBRETENTIONDAYS are also not swapped, even if they don't show up as slot settings.

Criar uma definição de implementaçãoCreate a deployment setting

Pode marcar as definições como uma definição de implantação, o que o torna "pegajoso".You can mark settings as a deployment setting, which makes it "sticky". Uma definição pegajosa não se troca com a instância da aplicação.A sticky setting doesn't swap with the app instance.

Se criar uma definição de implementação numa ranhura, certifique-se de criar a mesma definição com um valor único em qualquer outra ranhura que esteja envolvida numa troca.If you create a deployment setting in one slot, make sure to create the same setting with a unique value in any other slot that is involved in a swap. Desta forma, embora o valor de uma definição não se altere, os nomes de definição permanecem consistentes entre slots.This way, while a setting's value doesn't change, the setting names remain consistent among slots. Esta consistência de nome garante que o seu código não tenta aceder a uma definição que é definida numa ranhura, mas não noutra.This name consistency ensures your code doesn't try to access a setting that is defined in one slot but not another.

Utilize os seguintes passos para criar uma definição de implantação:Use the following steps to create a deployment setting:

  1. Navegue para slots de implementação na aplicação de função e, em seguida, selecione o nome da ranhura.Navigate to Deployment slots in the function app, and then select the slot name.

    Encontre slots no portal Azure.

  2. Selecione Configuraçãoe, em seguida, selecione o nome de definição que pretende manter-se na ranhura atual.Select Configuration, and then select the setting name you want to stick with the current slot.

    Configurar a definição de aplicação para uma ranhura no portal Azure.

  3. Selecione a definição de ranhura de implementaçãoe, em seguida, selecione OK.Select Deployment slot setting, and then select OK.

    Configure a definição da ranhura de colocação.

  4. Uma vez que a secção de definição desaparece, selecione Guardar para manter as alteraçõesOnce setting section disappears, select Save to keep the changes

    Guarde a definição da ranhura de implantação.

ImplementaçãoDeployment

As ranhuras estão vazias quando se cria uma ranhura.Slots are empty when you create a slot. Pode utilizar qualquer uma das tecnologias de implantação suportadas para implementar a sua aplicação numa ranhura.You can use any of the supported deployment technologies to deploy your application to a slot.

DimensionamentoScaling

Todas as faixas horárias escalam para o mesmo número de trabalhadores que a ranhura de produção.All slots scale to the same number of workers as the production slot.

  • Para os planos de consumo, as escalas de slot como a tabela de aplicações de função.For Consumption plans, the slot scales as the function app scales.
  • Para os planos do Serviço de Aplicações, a aplicação escala para um número fixo de trabalhadores.For App Service plans, the app scales to a fixed number of workers. As faixas horárias funcionam com o mesmo número de trabalhadores que o plano de aplicações.Slots run on the same number of workers as the app plan.

Adicionar um blocoAdd a slot

Pode adicionar uma ranhura através do CLI ou através do portal.You can add a slot via the CLI or through the portal. Os seguintes passos demonstram como criar uma nova ranhura no portal:The following steps demonstrate how to create a new slot in the portal:

  1. Navegue para a sua aplicação de função.Navigate to your function app.

  2. Selecione slots de implementaçãoe, em seguida, selecione + Adicionar ranhura.Select Deployment slots, and then select + Add Slot.

    Adicione a ranhura de implementação de Funções Azure.

  3. Digite o nome da ranhura e selecione Adicionar.Type the name of the slot and select Add.

    Nomeie a ranhura de implantação de Funções Azure.

Trocar slotsSwap slots

Pode trocar slots através do CLI ou através do portal.You can swap slots via the CLI or through the portal. Os seguintes passos demonstram como trocar slots no portal:The following steps demonstrate how to swap slots in the portal:

  1. Navegue para a aplicação de função.Navigate to the function app.

  2. Selecione slots de implementaçãoe, em seguida, selecione Swap.Select Deployment slots, and then select Swap.

    Troque a ranhura de implantação.

  3. Verifique as definições de configuração para a sua troca e selecione SwapVerify the configuration settings for your swap and select Swap

    Troque a ranhura de implantação.

A operação pode demorar um momento enquanto a operação de troca está a ser executada.The operation may take a moment while the swap operation is executing.

Reverta uma trocaRoll back a swap

Se um swap resultar num erro ou se simplesmente quiser "desfazer" uma troca, pode voltar ao estado inicial.If a swap results in an error or you simply want to "undo" a swap, you can roll back to the initial state. Para voltar ao estado pré-trocado, faça outra troca para inverter a troca.To return to the pre-swapped state, do another swap to reverse the swap.

Remover uma ranhuraRemove a slot

Pode remover uma ranhura através do CLI ou através do portal.You can remove a slot via the CLI or through the portal. Os seguintes passos demonstram como remover uma ranhura no portal:The following steps demonstrate how to remove a slot in the portal:

  1. Navegue para slots de implementação na aplicação de função e, em seguida, selecione o nome da ranhura.Navigate to Deployment slots in the function app, and then select the slot name.

    Encontre slots no portal Azure.

  2. Selecione Eliminar.Select Delete.

    Elimine a ranhura de implantação no portal Azure.

  3. Digite o nome da ranhura de implantação que pretende eliminar e, em seguida, selecione Delete.Type the name of the deployment slot you want to delete, and then select Delete.

    Elimine a ranhura de implantação no portal Azure.

  4. Feche o painel de confirmação de eliminação.Close the delete confirmation pane.

    A abertura da ranhura elimina a confirmação.

Automatizar a gestão de slotsAutomate slot management

Utilizando o Azure CLI,pode automatizar as seguintes ações para uma ranhura:Using the Azure CLI, you can automate the following actions for a slot:

Alterar plano de Serviço de AplicaçõesChange App Service plan

Com uma aplicação de função que está a decorrer ao abrigo de um plano de Serviço de Aplicações, pode alterar o plano de Serviço de Aplicações subjacente para uma ranhura.With a function app that is running under an App Service plan, you can change the underlying App Service plan for a slot.

Nota

Não é possível alterar o plano de Serviço de Aplicações de uma ranhura ao abrigo do plano de consumo.You can't change a slot's App Service plan under the Consumption plan.

Utilize os seguintes passos para alterar o plano de Serviço de Aplicações de uma ranhura:Use the following steps to change a slot's App Service plan:

  1. Navegue para slots de implementação na aplicação de função e, em seguida, selecione o nome da ranhura.Navigate to Deployment slots in the function app, and then select the slot name.

    Encontre slots no portal Azure.

  2. No âmbito do plano de Serviço de Aplicações, selecione o plano de Serviço de Aplicações de Alteração.Under App Service plan, select Change App Service plan.

  3. Selecione o plano para o quais pretende atualizar ou criar um novo plano.Select the plan you want to upgrade to, or create a new plan.

    Alterar o plano de Serviço de Aplicações no portal Azure.

  4. Selecione OK.Select OK.

LimitaçõesLimitations

As ranhuras de implementação de funções Azure têm as seguintes limitações:Azure Functions deployment slots have the following limitations:

  • O número de faixas horárias disponíveis para uma aplicação depende do plano.The number of slots available to an app depends on the plan. O plano de consumo só é permitido uma ranhura de implantação.The Consumption plan is only allowed one deployment slot. Slots adicionais estão disponíveis para aplicações em execução ao abrigo do plano de Serviço de Aplicações.Additional slots are available for apps running under the App Service plan.
  • Trocar uma ranhura repõe as teclas para apps que tenham uma AzureWebJobsSecretStorageType definição de aplicação igual a files .Swapping a slot resets keys for apps that have an AzureWebJobsSecretStorageType app setting equal to files.
  • As vagas não estão disponíveis para o plano de consumo de Linux.Slots aren't available for the Linux Consumption plan.

Níveis de suporteSupport levels

Existem dois níveis de suporte para slots de implantação:There are two levels of support for deployment slots:

  • Disponibilidade geral (GA): Totalmente suportado e aprovado para utilização de produção.General availability (GA): Fully supported and approved for production use.
  • Pré-visualização: Ainda não suportado, mas espera-se que atinja o estatuto de GA no futuro.Preview: Not yet supported, but is expected to reach GA status in the future.
Plano de hospedagem OS/HospedagemOS/Hosting plan Nível de suporteLevel of support
Consumo de JanelasWindows Consumption Disponibilidade geralGeneral availability
Windows PremiumWindows Premium Disponibilidade geralGeneral availability
Windows DedicadoWindows Dedicated Disponibilidade geralGeneral availability
Consumo de LinuxLinux Consumption Não suportadoUnsupported
Linux PremiumLinux Premium Disponibilidade geralGeneral availability
Linux DedicadoLinux Dedicated Disponibilidade geralGeneral availability

Passos seguintesNext steps