Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A CLI do Desenvolvedor do Azure (azd) dá suporte a slots de implantação do Serviço de Aplicativo do Azure para aplicativos hospedados no Serviço de Aplicativo. Você pode definir slots em sua infraestrutura, implantar código em um slot específico e trocar slots quando estiver pronto para promover uma versão.
Use essa abordagem para preparação, implantações azul-verde, testes de fumaça e reversões, sem a necessidade de adicionar scripts de implantação personalizados.
Pré-requisitos
- Um
azdprojeto que implanta um serviço no Serviço de Aplicativo do Azure. - Infraestrutura como código que define os recursos do Serviço de Aplicativo no Bicep.
- Um plano do Serviço de Aplicativo na camada Standard (
S1) ou superior. As camadas gratuitas, compartilhadas e básicas não dão suporte a slots de implantação.
Definir um slot de implantação no Bicep
Defina seu site de produção como de costume e, em seguida, adicione um recurso Microsoft.Web/sites/slots para cada slot que você deseja que o azd foque.
resource appServicePlan 'Microsoft.Web/serverfarms@2021-03-01' = {
name: 'my-appservice-plan'
location: resourceGroup().location
sku: {
name: 'S1'
tier: 'Standard'
}
}
resource webApp 'Microsoft.Web/sites@2021-03-01' = {
name: 'my-appservice'
location: resourceGroup().location
kind: 'app'
properties: {
serverFarmId: appServicePlan.id
}
}
resource stagingSlot 'Microsoft.Web/sites/slots@2021-03-01' = {
name: '${webApp.name}/staging'
location: webApp.location
properties: {}
}
Se você usar os Módulos Verificados do Azure (AVM), defina os módulos do aplicativo Web e de slot de implantação na mesma implantação e passe o nome do aplicativo para o módulo de slot.
Implantar em um slot usando azd
Execute azd up ou azd provision e azd deploy como de costume.
azd up
Na primeira implantação, azd implanta no site de produção e nos slots definidos em sua infraestrutura. Essa primeira implantação estabelece a mesma linha de base no aplicativo principal e em todos os slots.
Após a primeira implantação, azd deploy altera a forma como ele seleciona o destino de implantação quando os slots existem.
azd não prossegue com a implantação diretamente no app de produção quando os slots estão disponíveis. Em vez disso, você implanta em um slot, valida a liberação e, em seguida, faz a troca para o ambiente de produção.
Como o azd seleciona o destino de implantação
Quando azd deploy é executado para um App Service que tem slots de implantação, ele seleciona o destino verificando o histórico de implantação no aplicativo principal e avaliando os slots disponíveis.
O comportamento funciona da seguinte maneira:
- Se nenhuma implantação anterior existir,
azdserá implantada no aplicativo principal e em todos os slots. - Caso existam implantações anteriores e nenhum slot exista,
azdimplantará somente no aplicativo principal. - Se existirem implantações anteriores e exatamente um slot existir,
azdé implantado somente nesse slot. - Se houver implantações anteriores e houver dois ou mais slots,
azduse o slot especificado por uma variável de ambiente ou solicitará que você escolha um.
Importante
Após a primeira implantação, azd não é implantado diretamente no aplicativo principal do App Service quando existem slots. Esse comportamento é intencional e ajuda a evitar implantações acidentais diretamente em produção. Para atualizar a produção, implemente em um slot e, em seguida, altere o slot para produção (@main).
Selecionar um slot com uma variável de ambiente
Quando o serviço tiver dois ou mais slots após a primeira implantação, você poderá ignorar o prompt interativo definindo uma variável de ambiente para o serviço que deseja implantar.
Use o seguinte formato:
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME
Crie o nome da variável com base no azure.yaml nome do serviço usando maiúsculas e substituindo hifens por sublinhados.
Por exemplo, se o serviço for nomeado my-api, use AZD_DEPLOY_MY_API_SLOT_NAME.
azd env set AZD_DEPLOY_MY_API_SLOT_NAME staging
azd deploy my-api
Você pode armazenar esse valor em seu azd ambiente usando azd env setou defini-lo diretamente em seu sistema de CI antes de executar azd deploy.
Se o serviço tiver exatamente um slot, azd ignorará a variável de ambiente porque há apenas um destino de implantação possível.
Se o serviço tiver dois ou mais slots e a variável de ambiente não estiver definida, azd solicitará que você escolha um slot.
Ignorar a detecção de slots e implantar no aplicativo principal
Em alguns cenários, você precisa implantar azd diretamente no aplicativo principal do App Service, mesmo quando há slots de implantação. Por exemplo:
- O pipeline de CI precisa atualizar o aplicativo principal sem alterar os slots existentes.
- Você está se recuperando de um slot em estado inválido e deseja reimplantar o site de produção diretamente.
- Você está redefinindo a linha de base do aplicativo principal antes de configurar novos slots.
Para ignorar a detecção de slot, defina a seguinte variável de ambiente para o serviço:
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS
Crie o nome da variável com base no azure.yaml nome do serviço usando maiúsculas e substituindo hifens por sublinhados. Defina o valor como true para ignorar a detecção de slot e implantar no aplicativo principal.
Por exemplo, se o serviço for nomeado my-api, use AZD_DEPLOY_MY_API_IGNORE_SLOTS.
azd env set AZD_DEPLOY_MY_API_IGNORE_SLOTS true
azd deploy my-api
Quando AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS é definido como true, azd faz a implantação no aplicativo principal e ignora qualquer valor de AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME para o mesmo serviço. Remova a definição da variável ou defina-a como false para retornar ao comportamento padrão com reconhecimento de slot.
CI e comportamento nãointerativo
Quando você executa azd deploy --no-prompt ou implanta por meio de CI, a seleção de slots se comporta de forma diferente dependendo de quantos slots estão disponíveis:
| Slots | Comportamento da variável de ambiente | Resultado |
|---|---|---|
0 |
Não aplicável. |
azd implanta no aplicativo principal. |
1 |
Ignorado, a menos que AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS seja true. |
azd é implantado no único slot ou no aplicativo principal quando os slots são ignorados. |
2+ |
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME necessário para evitar solicitações, a menos que AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS seja true. |
azd implanta no slot especificado, implanta no aplicativo principal quando os slots são ignorados ou falha se nenhum destino pode ser selecionado. |
Ao automatizar implantações para um App Service que tenha dois ou mais slots, defina AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME no ambiente de pipeline antes de executar azd deploy. Para forçar uma implantação direta para principal de CI quando houver slots, defina AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS como true em vez disso.
Alternar slots de implantação do Serviço de Aplicativo do Azure
Use a azure.appservice extensão para trocar slots após a validação. Se a extensão ainda não estiver instalada, azd solicitará que você a instale na primeira vez que executar o comando.
Execute a experiência interativa:
azd appservice swap
Se existir apenas um slot de não produção, azd ignorará os prompts e alternará diretamente para a produção.
Para automação, especifique explicitamente os slots de origem e de destino. Use @main para fazer referência ao slot de produção.
azd appservice swap --src staging --dst @main
azd appservice swap --src @main --dst staging
azd appservice swap --service myapi --src staging --dst @main
Use esses padrões para dar suporte a fluxos de versão comuns:
- Promover uma implantação de homologação validada para o ambiente de produção com
--src staging --dst @main. - Reverta trocando a produção de volta para o slot de preparo com
--src @main --dst staging. - Direcione um serviço específico com suporte do Serviço de Aplicativos em um projeto multissserviço
azdcom--service.
A troca é o caminho pretendido para atualizar a produção depois que os slots são configurados. Use azd deploy para atualizar um slot e, em seguida, use azd appservice swap para promover esse slot para produção.
Fluxo de trabalho recomendado para slot de implantação
- Defina um ou mais slots de implantação do App Service em seus modelos Bicep.
- Provisione os recursos do Serviço de Aplicativo usando
azd provisionouazd up. - Deixe que a primeira implantação estabeleça uma linha de base no aplicativo principal e em cada slot.
- Implante atualizações de aplicativo posteriores em um slot de preparo definindo
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAMEquando você tiver dois ou mais slots ou selecionando o slot quando solicitado. Para forçar uma implantação direta para principal de CI quando houver slots, definaAZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTScomotrueem vez disso. - Valide a implantação em etapas.
- Execute
azd appservice swap --src <slot> --dst @mainpara promover a versão. - Se necessário, execute a troca inversa para reverter.
Conteúdo relacionado
- Visão geral dos comandos da CLI do Desenvolvedor do Azure
- Referência da CLI do Azure para Desenvolvedores
- Configurar ambientes de preparo no Serviço de Aplicativo do Azure
- Implantar em slots de implantação do Serviço de Aplicativo do Azure com azd
- CLI do Desenvolvedor do Azure (azd): um comando para trocar slots do Serviço de Aplicativo do Azure