Configurar ambientes de preparo no Serviço de Aplicativo do AzureSet up staging environments in Azure App Service

Quando você implanta seu aplicativo da web, aplicativo da web no Linux, back-end móvel e aplicativo de API no App Service, é possível implantar em um slot de implantação separado em vez do slot de produção padrão ao executar Sites do plano Standard, Premium ou Isolado Nível do plano de serviço do aplicativo.When you deploy your web app, web app on Linux, mobile back end, and API app to App Service, you can deploy to a separate deployment slot instead of the default production slot when running in the Standard, Premium, or Isolated App Service plan tier. Os slots de implantação são, na verdade, aplicativos online com seus próprios nomes de host.Deployment slots are actually live apps with their own hostnames. Os elementos de configurações e conteúdo de aplicativo podem ser trocados entre dois slots de implantação, incluindo o slot de produção.App content and configurations elements can be swapped between two deployment slots, including the production slot. Implantar o seu aplicativo em um slot de implantação tem os seguintes benefícios:Deploying your application to a deployment slot has the following benefits:

  • É possível validar as alterações no aplicativo em um slot de implantação de preparo antes de permutá-lo pelo slot de produção.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • Implantar um aplicativo em um slot inicial e depois permutá-lo, enviando-o para produção, garante que todas as instâncias do slot estejam prontas antes dessa troca.Deploying an app to a slot first and swapping it into production ensures that all instances of the slot are warmed up before being swapped into production. Isso elimina o tempo de inatividade quando você for implantar seu aplicativo.This eliminates downtime when you deploy your app. O redirecionamento do tráfego é contínuo e nenhuma solicitação é descartada como resultado de operações de permuta.The traffic redirection is seamless, and no requests are dropped as a result of swap operations. Todo esse fluxo de trabalho pode ser automatizado por meio da configuração de Permuta Automática quando a validação de pré-permuta não é necessária.This entire workflow can be automated by configuring Auto Swap when pre-swap validation is not needed.
  • Após a troca, o slot com o aplicativo de preparo anterior terá o aplicativo de produção anterior.After a swap, the slot with previously staged app now has the previous production app. Se as alterações permutadas no slot de produção não forem o que você esperava, é possível fazer a mesma permuta imediatamente para ter o "último site bom" de volta.If the changes swapped into the production slot are not as you expected, you can perform the same swap immediately to get your "last known good site" back.

Cada tipo de plano do Serviço de Aplicativo dá suporte a um número diferente de slots de implantação.Each App Service plan tier supports a different number of deployment slots. Para descobrir o número de slots que a sua camada de aplicativo dá suporte, consulte Limites de Serviço de Aplicativo.To find out the number of slots your app's tier supports, see App Service Limits. Para dimensionar seu aplicativo para uma outra camada, a camada de destino deve suportar o número de slots que seu aplicativo já usa.To scale your app to a different tier, the target tier must support the number of slots your app already uses. Por exemplo, se o seu aplicativo tiver mais de 5 slots, você não poderá reduzi-lo para a camada Padrão, pois a camada Padrão suporta apenas 5 slots de implantação.For example, if your app has more than 5 slots, you cannot scale it down to Standard tier, because Standard tier only supports 5 deployment slots.

Adicionar um slot de implantaçãoAdd a deployment slot

O aplicativo deve estar em execução na camada Sites do plano Standard, Premium ou *Isolado para habilitar vários slots de implantação.The app must be running in the Standard, Premium, or *Isolated tier in order for you to enable multiple deployment slots.

  1. No Portal do Azure, abra a folha de recursos de seu aplicativo.In the Azure Portal, open your app's resource blade.
  2. Escolha a opção Slots de implantação e clique em Adicionar Slot.Choose the Deployment slots option, then click Add Slot.

    Adicionar um novo slot de implantação

    Observação

    Se o aplicativo ainda não estiver no nível Sites do plano Standard, Premium ou *Isolado, você receberá uma mensagem indicando os níveis suportados para ativar a publicação em estágios.If the app is not already in the Standard, Premium, or *Isolated tier, you will receive a message indicating the supported tiers for enabling staged publishing. Neste momento, você tem a opção de selecionar Atualizar e navegar para a guia Escala do aplicativo antes de continuar.At this point, you have the option to select Upgrade and navigate to the Scale tab of your app before continuing.

  3. Na folha Adicionar um slot, nomeie o slot e opte por clonar a configuração de aplicativo por meio de outro slot de implantação existente.In the Add a slot blade, give the slot a name, and select whether to clone app configuration from another existing deployment slot. Clique na marca de seleção para continuar.Click the check mark to continue.

    Fonte de configuração

    Na primeira vez em que você adicionar um slot, você terá somente duas opções: clonar configuração do slot padrão em produção ou não clonar.The first time you add a slot, you only have two choices: clone configuration from the default slot in production or not at all. Se já tiver criado vários slots, você poderá clonar a configuração de um slot diferente do que estiver em produção:After you have created several slots, you will be able to clone configuration from a slot other than the one in production:

    Fontes de configuração

  4. Na folha de recursos do aplicativo, clique em Slots de implantação, clique em um slot de implantação para abrir a folha de recursos desse slot, que contém um conjunto de métricas e configuração como qualquer outro aplicativo.In your app's resource blade, click Deployment slots, then click a deployment slot to open that slot's resource blade, with a set of metrics and configuration just like any other app. O nome do slot é exibido na parte superior da folha para lembrar que você está visualizando o slot de implantação.The name of the slot is shown at the top of the blade to remind you that you are viewing the deployment slot.

    Título do slot de implantação

  5. Clique na URL do aplicativo, na folha do slot.Click the app URL in the slot's blade. Observe que o slot de implantação tem seu próprio nome de host e também é um aplicativo em tempo real.Notice the deployment slot has its own hostname and is also a live app. Para limitar o acesso público ao slot de implantação, consulte Aplicativo Web do Serviço de Aplicativo - bloquear acesso via Web a slots de implantação de não produção.To limit public access to the deployment slot, see App Service Web App – block web access to non-production deployment slots.

Não há nenhum conteúdo após a criação do slot de implantação.There is no content after deployment slot creation. É possível implantar no slot a partir de uma ramificação diferente do repositório, ou mesmo de um repositório diferente.You can deploy to the slot from a different repository branch, or an altogether different repository. Você também pode alterar a configuração do slot.You can also change the slot's configuration. Use o perfil de publicação ou as credenciais de implantação associadas ao slot de implantação para atualizar o conteúdo.Use the publish profile or deployment credentials associated with the deployment slot for content updates. Por exemplo, você pode publicar neste slot com o git.For example, you can publish to this slot with git.

Quais configurações são trocadas?Which settings are swapped?

Quando você clona a configuração de outro slot de implantação, a configuração clonada é editável.When you clone configuration from another deployment slot, the cloned configuration is editable. Além disso, alguns elementos de configuração seguirão o conteúdo em uma permuta (não específicos do slot) enquanto outros elementos de configuração permanecerão no mesmo slot após uma permuta (específicos do slot).Furthermore, some configuration elements will follow the content across a swap (not slot specific) while other configuration elements will stay in the same slot after a swap (slot specific). A lista a seguir mostra as configurações que serão alterada com a troca de slots.The following lists show the settings that change when you swap slots.

Configurações que são permutadas:Settings that are swapped:

  • Configurações gerais - como a versão do framework, 32/64 bits, Web socketsGeneral settings - such as framework version, 32/64-bit, Web sockets
  • Configurações do aplicativo (podem ser configuradas para fixarem-se a um slot)App settings (can be configured to stick to a slot)
  • Cadeias de conexão (podem ser configuradas para fixarem-se a um slot)Connection strings (can be configured to stick to a slot)
  • Mapeamentos de manipuladorHandler mappings
  • Configurações de monitoramento e diagnósticoMonitoring and diagnostic settings
  • Conteúdo de Trabalhos WebWebJobs content
  • Conexões HíbridasHybrid connections

Configurações que não são permutadas:Settings that are not swapped:

  • Pontos de extremidade de publicaçãoPublishing endpoints
  • Nomes de domínio personalizadosCustom Domain Names
  • Associações e certificados SSLSSL certificates and bindings
  • Configurações de escalaScale settings
  • Agendadores de Trabalhos WebWebJobs schedulers

Para definir uma cadeia de conexão ou configuração de aplicativo e fixar um slot (não trocado), acesse a folha Configurações de Aplicativo de um slot específico e, em seguida, selecione a caixa Configuração do Slot dos elementos de configuração que devem se fixar ao slot.To configure an app setting or connection string to stick to a slot (not swapped), access the Application Settings blade for a specific slot, then select the Slot Setting box for the configuration elements that should stick to the slot. Marcar um elemento de configuração como específico do slot tem o efeito de estabelecer esse elemento como não passível de troca, em todos os slots de implantação associados ao aplicativo.Marking a configuration element as slot specific has the effect of establishing that element as not swappable across all the deployment slots associated with the app.

Configurações de slot

Permute slots de implantaçãoSwap deployment slots

Você pode trocar os slots de implantação na exibição Visão geral ou Slots de implantação da folha de recursos do aplicativo.You can swap deployment slots in the Overview or Deployment slots view of your app's resource blade.

Importante

Antes de trocar um aplicativo por meio de um slot de implantação para produção, verifique se todas as configurações específicas de slot estão configuradas exatamente como você deseja tê-las no destino da troca.Before you swap an app from a deployment slot into production, make sure that all non-slot specific settings are configured exactly as you want to have it in the swap target.

  1. Para trocar slots de implantação, clique no botão Trocar na barra de comandos do aplicativo ou na barra de comandos de um slot de implantação.To swap deployment slots, click the Swap button in the command bar of the app or in the command bar of a deployment slot.

    Botão permutar

  2. Verifique se a origem e o destino da permuta estão definidos corretamente.Make sure that the swap source and swap target are set properly. Geralmente, o destino da troca é o slot de produção.Usually, the swap target is the production slot. Clique em OK para concluir a operação.Click OK to complete the operation. Quando a operação for concluída, os slots de implantação terão sido permutados.When the operation finishes, the deployment slots have been swapped.

    Troca completa

    Para o tipo de troca Troca com visualização, veja Troca com visualização (troca de várias fases).For the Swap with preview swap type, see Swap with preview (multi-phase swap).

Troca com visualização (troca de várias fases)Swap with preview (multi-phase swap)

Troca com visualização, ou troca de várias fases, simplifica a validação de elementos de configuração específicos ao slot, como cadeias de conexão.Swap with preview, or multi-phase swap, simplify validation of slot-specific configuration elements, such as connection strings. Para cargas de trabalho críticas, convém validar se o aplicativo está se comportando conforme o esperado quando a configuração do slot de produção é aplicada, e você deve executar essa validação antes de o aplicativo ser trocado para produção.For mission-critical workloads, you want to validate that the app behaves as expected when the production slot's configuration is applied, and you must perform such validation before the app is swapped into production. A troca com visualização é o que você precisa.Swap with preview is what you need.

Observação

Não há suporte para a troca com visualização em aplicativos Web no Linux.Swap with preview is not supported in web apps on Linux.

Quando você usa a opção Troca com visualização (consulte Trocar slots de implantação), o Serviço de Aplicativo faz o seguinte:When you use the Swap with preview option (see Swap deployment slots), App Service does the following:

  • Mantém o slot de destino inalterado para que a carga de trabalho existente nesse slot (como produção) não seja afetada.Keeps the destination slot unchanged so existing workload on that slot (such as production) is not impacted.
  • Aplica os elementos de configuração do slot de destino ao slot de origem, incluindo as configurações de aplicativo e as cadeias de conexão específicas ao slot.Applies the configuration elements of the destination slot to the source slot, including the slot-specific connection strings and app settings.
  • Reinicia os processos de trabalho no slot de origem usando esses elementos de configuração mencionados anteriormente.Restarts the worker processes on the source slot using these aforementioned configuration elements.
  • Quando você conclui a troca: move o slot de origem pré-preparado para o slot de destino.When you complete the swap: Moves the pre-warmed-up source slot into the destination slot. O slot de destino é movido para o slot de origem como em uma troca manual.The destination slot is moved into the source slot as in a manual swap.
  • Quando você cancela a troca: reaplica os elementos de configuração do slot de origem ao slot de origem.When you cancel the swap: Reapplies the configuration elements of the source slot to the source slot.

Você pode visualizar exatamente como o aplicativo se comportará com a configuração do slot de destino.You can preview exactly how the app will behave with the destination slot's configuration. Após a conclusão da validação, você poderá completar a troca em outra etapa.Once you complete validation, you complete the swap in a separate step. Essa etapa tem a vantagem adicional de que o slot de origem já está preparado com a configuração desejada, e os clientes não enfrentarão nenhum tempo de inatividade.This step has the added advantage that the source slot is already warmed up with the desired configuration, and clients don't experience any downtime.

Exemplos de cmdlets do Azure PowerShell disponíveis para permuta multifase são incluídos nos cmdlets do Azure PowerShell para a seção de slots de implantação.Samples for the Azure PowerShell cmdlets available for multi-phase swap are included in the Azure PowerShell cmdlets for deployment slots section.

Configurar a troca automáticaConfigure Auto Swap

A Troca Automática simplifica cenários DevOps em q você deseja implantar continuamente seu aplicativo, sem nenhuma inicialização a frio nem tempo de inatividade para clientes finais do aplicativo.Auto Swap streamlines DevOps scenarios where you want to continuously deploy your app with zero cold start and zero downtime for end customers of the app. Quando um slot de implantação estiver configurado para Troca Automática para produção, sempre que você enviar por push a atualização de código para esse slot, o Serviço de Aplicativo trocará automaticamente o aplicativo para produção depois que ele já tiver feito sido preparado no slot.When a deployment slot is configured for Auto Swap into production, every time you push your code update to that slot, App Service will automatically swap the app into production after it has already warmed up in the slot.

Importante

Ao habilitar a Permuta Automática para um slot, verifique se a configuração do slot é exatamente a configuração pretendida para o slot de destino (geralmente o slot de produção).When you enable Auto Swap for a slot, make sure the slot configuration is exactly the configuration intended for the target slot (usually the production slot).

Observação

Não há suporte para a Troca Automática em aplicativos Web no Linux.Auto Swap is not supported in web apps on Linux.

Configurar a Permuta Automática para um slot é fácil.Configuring Auto Swap for a slot is easy. Siga estas etapas:Follow these steps:

  1. Em Slots de Implantação, selecione um slot que não esteja em produção e escolha Configurações do Aplicativo na folha de recursos do slot.In Deployment Slots, select a non-production slot, and choose Application Settings in that slot's resource blade.

  2. Selecione Ativar para Troca Automática, escolha o slot de destino desejado em Slot de Troca Automática e clique em Salvar na barra de comandos.Select On for Auto Swap, select the desired target slot in Auto Swap Slot, and click Save in the command bar. Verifique se a configuração para o slot é exatamente igual à configuração desejada para o slot de destino.Make sure configuration for the slot is exactly the configuration intended for the target slot.

    A guia Notificações piscará SUCESSO em verde quando a operação for concluída.The Notifications tab flashes a green SUCCESS once the operation is complete.

    Observação

    Para testar a Troca Automática para seu aplicativo, primeiro você poderá selecionar um slot de destino que não seja de produção em Slot de Troca Automática para se familiarizar com o recurso.To test Auto Swap for your app, you can first select a non-production target slot in Auto Swap Slot to become familiar with the feature.

  3. Execute um envio de código por push para esse slot de implantação.Execute a code push to that deployment slot. A Troca Automática ocorrerá após um curto período de tempo, e a atualização será refletida na URL do seu slot de destino.Auto Swap happens after a short time and the update is reflected at your target slot's URL.

Reverter um aplicativo de produção após a trocaRoll back a production app after swap

Se algum erro for identificado na produção após uma permuta de slot, reverta os slots para os estados pré-permuta permutando ambos os slots imediatamente.If any errors are identified in production after a slot swap, roll the slots back to their pre-swap states by swapping the same two slots immediately.

Aquecimento personalizado antes da permutaCustom warm-up before swap

Ao usar o Auto-Swap, alguns aplicativos podem exigir ações de aquecimento personalizadas.When using Auto-Swap, some apps may require custom warm-up actions. O elemento de configuração applicationInitialization no web.config permite que você especifique ações de inicialização personalizadas a serem executadas antes de uma solicitação ser recebida.The applicationInitialization configuration element in web.config allows you to specify custom initialization actions to be performed before a request is received. A operação de troca aguarda esse aquecimento personalizado ser concluído.The swap operation waits for this custom warm-up to complete. Este é está um exemplo fragmento do web.config.Here is a sample web.config fragment.

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostname="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Monitorar o progresso da trocaMonitor swap progress

Às vezes, a operação de troca leva algum tempo para ser concluída, por exemplo, quando o aplicativo que é trocado tem um tempo de aquecimento longo.Sometimes, the swap operation takes some time to complete, such as when the app that is swapped has a long warm-up time. Você pode obter mais informações sobre as operações de troca no Log de Atividades no portal do Azure.You can get more information on swap operations in the Activity Log in the Azure portal.

Em sua página de aplicativo do portal, no painel de navegação esquerdo, selecione Log de atividades.In your app page of the portal, in the left-hand navigation, select Activity log.

Uma operação de troca é exibida na consulta de log como Slotsswap.A swap operation appears in the log query as Slotsswap. Você pode expandi-lo e selecionar uma das suboperações ou um dos erros para ver os detalhes.You can expand it and select one of the suboperations or errors to see the details.

Log de atividades de troca de slot

Excluir um slot de implantaçãoDelete a deployment slot

Na folha de um slot de implantação, abra a folha do slot de implantação, clique em Visão geral (a página padrão) e clique em Excluir na barra de comandos.In the blade for a deployment slot, open the deployment slot's blade, click Overview (the default page), and click Delete in the command bar.

Excluir um slot de implantação

Automatizar com o Azure PowerShellAutomate with Azure PowerShell

O Azure PowerShell é um módulo que fornece cmdlets para gerenciar o Azure por meio do Windows PowerShell, incluindo suporte ao gerenciamento de slots de implantação no Serviço de Aplicativo do Azure.Azure PowerShell is a module that provides cmdlets to manage Azure through Windows PowerShell, including support for managing deployment slots in Azure App Service.


Criar um aplicativo WebCreate a web app

New-AzureRmWebApp -ResourceGroupName [resource group name] -Name [app name] -Location [location] -AppServicePlan [app service plan name]

Criar um slot de implantaçãoCreate a deployment slot

New-AzureRmWebAppSlot -ResourceGroupName [resource group name] -Name [app name] -Slot [deployment slot name] -AppServicePlan [app service plan name]

Iniciar uma troca com versão prévia (troca de várias fases) e aplicar a configuração do slot de destino ao slot de origemInitiate a swap with preview (multi-phase swap) and apply destination slot configuration to source slot

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzureRmResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action applySlotConfig -Parameters $ParametersObject -ApiVersion 2015-07-01

Cancelar uma troca pendente (troca com revisão) e restaurar a configuração do slot de origemCancel a pending swap (swap with review) and restore source slot configuration

Invoke-AzureRmResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action resetSlotConfig -ApiVersion 2015-07-01

Permute slots de implantaçãoSwap deployment slots

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzureRmResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action slotsswap -Parameters $ParametersObject -ApiVersion 2015-07-01

Monitorar eventos de troca Log de AtividadesMonitor swap events in the Activity Log

Get-AzureRmLog -ResourceGroup [resource group name] -StartTime 2018-03-07 -Caller SlotSwapJobProcessor  

Exclua um slot de implantaçãoDelete deployment slot

Remove-AzureRmResource -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots –Name [app name]/[slot name] -ApiVersion 2015-07-01

Automatizar com a CLI do AzureAutomate with Azure CLI

Para obter os comandos da CLI do Azure para slots de implantação, confira Slot de implantação do az webapp.For Azure CLI commands for deployment slots, see az webapp deployment slot.

Próximas etapasNext steps

Aplicativo Web do Serviço de Aplicativo do Azure – bloquear o acesso Web a slots de implantação não sejam de produçãoAzure App Service Web App – block web access to non-production deployment slots
Introdução ao Serviço de Aplicativo no LinuxIntroduction to App Service on Linux
Avaliação gratuita do Microsoft AzureMicrosoft Azure Free Trial