Você pode liberar um aplicativo implantado em muitas instâncias ou com arquitetura de serviço complexa em várias fases. O aplicativo é atualizado apenas em algumas instâncias por fase. A liberação em fases termina quando o aplicativo é atualizado em todas as instâncias. Este tópico descreve como implementar uma liberação em fases de um aplicativo no console do Enterprise Distributed Application Service (EDAS).
Visão geral
Durante uma liberação em fases, o aplicativo é atualizado apenas em algumas instâncias por vez. Se ocorrer um erro durante o processo, interrompa-o e reverta o aplicativo. Após corrigir o erro, retome a liberação em fases.
Ao liberar um aplicativo em um cluster Kubernetes em múltiplas fases, as instâncias são distribuídas uniformemente entre elas. Caso não seja possível fazer uma divisão exata, as fases iniciais recebem menos instâncias que as posteriores.
Cenário
Por exemplo, considere um aplicativo implantado em 10 instâncias cuja versão precisa ser atualizada de V1 para V2 em todas elas.
A figura a seguir ilustra como o aplicativo é liberado nas instâncias seguindo uma política específica, dividida em três fases.

Observações de uso
Ao liberar um aplicativo em um cluster Kubernetes em várias fases, um Deployment é criado para essa liberação.
Procedimento
Faça login no console do EDAS console do EDAS.
No painel de navegação à esquerda, escolha . Na barra de navegação superior, selecione uma região. Na parte superior da página Applications, escolha um namespace de microsserviços na lista suspensa Microservices Namespace. Em seguida, clique no nome do aplicativo que deseja gerenciar.
No canto superior direito da página application overview, escolha .
Na seção Phased Release da página Select Deployment Mode, clique em Start Deployment no canto superior direito.
-
Na página Phased Release, faça upload do pacote de implantação da nova versão do aplicativo.
Parâmetro
Descrição
Application Runtime Environment
Especifique um ambiente de execução para o aplicativo. Valor padrão: Standard Java Application Runtime Environment.
Java Environment
Defina o ambiente Java do aplicativo. Valores válidos: Open JDK 8 [Latest Version:1.8.0_191], Open JDK 7, Open JDK 17, Open JDK 11, JDK 8, JDK 7, Dragonwell 8, Dragonwell 17 e Dragonwell 11.
Current Environment
Exibe o ambiente de execução atual do aplicativo. Essa informação aparece apenas se o aplicativo foi implantado com um pacote JAR ou WAR. O EDAS atualiza automaticamente o ambiente Java ou de execução para a versão mais recente.
File Uploading Method
Escolha o método de upload de arquivo. Valores válidos: Upload JAR Package e JAR Package Address.
NotaO método de upload escolhido deve ser igual ao usado na implantação original do aplicativo. Há suporte para pacotes JAR, WAR e imagens. Neste exemplo, utiliza-se um pacote JAR.
Upload JAR Package
Se definir o parâmetro File Uploading Method como Upload JAR Package, clique em Click to Upload para enviar o pacote JAR.
JAR Package Address
Caso defina o parâmetro File Uploading Method como JAR Package Address, insira a URL do pacote JAR.
NotaAo informar a URL de um objeto do Object Storage Service (OSS) assinado, o EDAS armazena esse objeto em cache para operações futuras, como rollbacks e scale-outs, durante a liberação em fases.
Container Registry Repository Type
NotaO parâmetro Container Registry Repository Type está disponível apenas para implantações de aplicativos Java, Tomcat ou EDAS-Container (HSF) em clusters ACK. Ele não aparece em implantações feitas em clusters ACK Serverless (ASK).
Instale o componente aliyun-acr-credential-helper. Para mais detalhes, consulte Usar o componente aliyun-acr-credential-helper para baixar imagens sem secrets.
Para utilizar um repositório de imagens do Container Registry Enterprise Edition, configure o acesso via VPCs. Consulte Configurar acesso via VPCs para mais informações.
A tarefa de build da imagem executa dentro do seu cluster e consome recursos dele. O limite padrão é de 1 GB por núcleo para cada tarefa. Saiba como ajustar esses limites em Como ajusto os limites de recursos para build de imagens?
Ao usar um repositório do Container Registry Personal Edition ou do Container Registry Enterprise Edition para armazenar a imagem criada, a tarefa de build roda no seu cluster. Essas tarefas seguem as regras de afinidade e tolerância de agendamento abaixo:
-
O EDAS não agenda tarefas de build em nós com o rótulo
edas.image.build=disable. -
O EDAS prioriza nós com o rótulo
edas.image.build=enablepara tarefas de build, mas também pode agendá-las em nós sem o rótuloedas.image.build. -
As tarefas de build toleram nós com o taint
key=edas.image.build, effect=NoSchedule.
Nota-
Para impedir que tarefas de build sejam agendadas em nós específicos, adicione o rótulo
edas.image.build=disablea eles. -
Para dedicar um nó exclusivamente a tarefas de build, aplique o rótulo
edas.image.build=enablee o taintkey=edas.image.build, effect=NoSchedule. Isso evita que pods sem tolerância a esse taint sejam agendados nesse nó.
Region of Container Registry
Selecione a região onde está a imagem do Container Registry. Esse campo é obrigatório apenas quando Container Registry Repository Type for definido como Container Registry Enterprise Edition.
Container Registry
Escolha sua imagem de contêiner. Necessário somente se Container Registry Repository Type estiver definido como Container Registry Enterprise Edition.
Image Repository Namespace
Na lista suspensa, selecione o namespace de microsserviço do repositório de imagens. Também é possível clicar em + Create Namespace para criar um novo namespace.
Version
Número da versão do pacote de implantação JAR. Informe uma versão ou clique em Use Timestamp as Version Number para gerar automaticamente.
Time Zone
Fuso horário do aplicativo. Defina o fuso da região escolhida no formato UTC.
Single-pod Resource Quota
Quantidade de CPU, memória e armazenamento temporário reservada para um pod. Para definir um limite, insira um valor numérico. Valor padrão: 0, que indica ausência de limite. Os valores máximos e mínimos dependem da capacidade do cluster.
-
Configure os parâmetros da seção Release Policy.

Parâmetro
Descrição
Release Batch
Quantidade de fases usadas para liberar o aplicativo nas instâncias.
Batch Mode
NotaO parâmetro Batch Mode aparece apenas quando Release Batch é maior que 1.
Valores válidos: Automatic e Manual.
Automatic: O sistema libera as fases automaticamente, respeitando o intervalo definido em Interval. Esse parâmetro determina o tempo entre as fases, em minutos.
Interval: Acione manualmente a próxima fase da liberação.
Manual
Define o intervalo de tempo, em segundos, entre as implantações nas instâncias de cada fase, aplicável quando há mais de uma instância.
(Opcional) Ajuste configurações avançadas conforme a necessidade do seu negócio, incluindo parâmetros nas seções Deployment Interval Between Batches, Scheduling Rules, Startup Commands, Environment Variables, Persistent Storage, Local Storage e Application Life Cycle Management. Consulte Configurações avançadas para mais detalhes.
Após configurar os parâmetros, clique em Log Collection Settings.
Verificar o resultado
Na página OK do aplicativo, acompanhe o status da liberação em fases e confira o valor do parâmetro change list à direita de Version. A liberação terá sido bem-sucedida se todas as fases estiverem com status Success e o valor de Description tiver mudado para V2.
Reverter um aplicativo
Se, durante a liberação em fases, o aplicativo ainda não foi atualizado para a nova versão em alguma instância, o processo permanece no estado Version. Caso uma instância da primeira fase pare de responder durante a atualização, acesse a página Executing e clique em change list para restaurar o pacote de implantação e as configurações da versão anterior nessa instância.
Erros podem acontecer durante uma liberação em fases. Para saber como solucioná-los, consulte Como solucionar problemas em um processo de mudança?
Falhas como indisponibilidade do pacote de implantação ou erros em health checks podem causar falhas na atualização. Nesses casos, o sistema encerra automaticamente a atualização e reverte o aplicativo.
O tempo máximo de espera por fase durante uma atualização é de 30 minutos. Se o processo for suspenso por timeout, acesse a página Roll Back para interrompê-lo e reverter o aplicativo.