O Microservices Engine (MSE) permite implementar um lançamento canário de ponta a ponta com base em gateways MSE Ingress. Assim, você aplica limitação de tráfego de ponta a ponta sem modificar o código da aplicação.
Pré-requisitos
Crie um cluster ACK ou ACK Serverless. Para mais informações, consulte Create an ACK managed cluster.
Ative a edição Professional do Microservices Governance. Para mais informações, consulte Activate Microservices Governance.
Instale o componente MSE Ingress Controller e conceda as permissões relevantes. Para mais informações, consulte Manage components e Authorize the MSE Ingress controller.
Limites de uso
O recurso de lançamento canário de ponta a ponta integra-se ao roteamento baseado em tags. Se você utilizar o Microservices Governance para implementar esse recurso em suas aplicações, evite configurar regras de lançamento canário e de roteamento baseado em tags simultaneamente.
Para mais informações sobre as versões do Java e frameworks compatíveis com o lançamento canário de ponta a ponta, consulte Java frameworks supported by Microservices Governance.
Informações básicas
Em cenários de microsserviços com aplicações Spring Cloud ou Dubbo, o tráfego distribui-se aleatoriamente entre as versões da aplicação por padrão. Consequentemente, o tráfego com características específicas pode não alcançar a versão desejada. O lançamento canário de ponta a ponta resolve essa questão ao isolar versões específicas da aplicação em lanes (ambientes de execução independentes) e rotear o tráfego correspondente às regras definidas para a versão adequada. Crie lanes para isolar versões da aplicação e configure regras de roteamento nos gateways MSE Ingress para direcionar o tráfego.
Cenário
Este exemplo demonstra um lançamento canário de ponta a ponta, desde um gateway MSE Ingress até os microsserviços de backend, em um cenário de pedidos de e-commerce. A arquitetura consiste em um gateway MSE Ingress e um backend Spring Cloud com três aplicações: centro de transações (Aplicação A), centro de produtos (Aplicação B) e centro de estoque (Aplicação C). Um cliente ou página HTML acessa essas aplicações de backend registradas em uma instância Nacos.
Após um cliente realizar um pedido, o tráfego flui pelo gateway MSE Ingress e segue sequencialmente para a Aplicação A, Aplicação B e Aplicação C: Cliente -> Gateway MSE Ingress -> Aplicação A -> Aplicação B -> Aplicação C.
Antes de lançar novas versões da Aplicação A e da Aplicação C, teste a nova versão em ambas usando um lançamento canário. Após comprovar a estabilidade, lance a versão tanto para a Aplicação A quanto para a Aplicação C. O recurso de lançamento canário de ponta a ponta, baseado em gateways MSE Ingress e Microservices Governance, garante que o tráfego canário com características específicas seja sempre roteado para as versões canário em múltiplas aplicações. Caso uma aplicação não possua versão canário, o tráfego será roteado automaticamente para seu ambiente base.

Termos
-
Lane
Ambiente isolado definido para aplicações da mesma versão. Apenas o tráfego correspondente a regras específicas de controle é roteado para as aplicações em uma lane. Uma aplicação pode pertencer a várias lanes, e uma lane pode conter várias aplicações. Existe uma relação muitos-para-muitos entre aplicações e lanes.
-
Lane group
Conjunto de lanes utilizado para distinguir diferentes equipes ou cenários.
-
MSE Ingress gateway
Um gateway MSE Ingress gerencia o tráfego de Ingress com base em gateways nativos da cloud do MSE. Compatível com NGINX Ingress, suporta mais de 50 anotações desse sistema e permite lançamentos canário para múltiplas versões de service simultaneamente. Com governança de service flexível e proteção de segurança abrangente, atende às demandas de governança de tráfego de aplicações distribuídas nativas da cloud em grande escala.
Pré-requisitos
Ativar o Microservices Governance para aplicações
-
Ative a edição Professional do MSE Microservices Governance.
Para mais informações, consulte Activate Microservices Governance.
-
Ative o Microservices Governance para as aplicações.
Faça login no console do MSE.
No painel de navegação à esquerda, escolha . Localize o cluster desejado e clique em Manage na coluna Actions.
Na página cluster details, localize o namespace desejado e clique em Activate Microservices Governance na coluna Operation. Na mensagem exibida, clique em OK.
Implantar aplicações de demonstração
Faça login no Console de Gerenciamento do Container Service.
No painel de navegação à esquerda, clique em Clusters.
Na página Cluster List, clique no nome do cluster de destino ou em Details na coluna Actions.
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Stateless, selecione um Namespaces e clique em Create from YAML.
-
Configure o modelo e clique em Create.
Neste exemplo, implanta-se uma aplicação Nacos Server para descoberta de service, além das Aplicações A, B e C. As Aplicações A e C recebem versões base e canário, enquanto a Aplicação B recebe apenas a versão base.
Implante a aplicação nacos-server.
-
Implante a Aplicação A.
-
Código YAML para a versão base
-
Código YAML para a versão canário
-
-
Implante a Aplicação B.
-
Código YAML para a versão base
-
-
Implante a Aplicação C.
-
Código YAML para a versão base
-
Código YAML para a versão canário
-
-
-
Configure dois services Kubernetes para a Aplicação A (aplicação de entrada).
Faça login no console do ACK.
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
-
Na página Service, selecione um Namespaces, clique em Create from YAML, configure o modelo e clique em Create.
-
Código YAML para o service spring-cloud-a-base implantado para a versão base da Aplicação A
-
Código YAML para o service spring-cloud-a-gray implantado para a versão canário da Aplicação A
-
Etapa 1: Criar um grupo de lanes
Faça login no console do MSE e selecione uma região na barra de navegação superior.
No painel de navegação à esquerda, escolha Microservices Governance > Full link Grayscale.
Na página End-to-end Canary Release, clique em Create Lane Groups and Lanes. Se já existir um grupo de lanes no namespace de microsserviço selecionado, clique em +Create Lane Group.
-
No painel Create Lane Group, defina os parâmetros do grupo de lanes e clique em OK.
Parâmetro
Descrição
Name of Lane Group
Insira um nome para o grupo de lanes.
Entry Type
Selecione Other Gateways.
Para outros gateways, como NGINX Ingress, APISIX e gateways Java autogerenciados, implemente regras de encaminhamento canário diretamente neles.
Lane group involves application
Selecione todos os services envolvidos na sua aplicação de entrada ou gateway Ingress.
Após criar o grupo de lanes, verifique se a aplicação de entrada e todas as aplicações envolvidas estão corretas. Visualize o grupo de lanes na seção Lane Groups and Involved Applications da página End-to-end Canary Release. Para modificar as informações do grupo de lanes, clique no ícone
à direita e atualize os dados.
Etapa 2: Criar uma lane
-
No topo da página de lançamento canário de ponta a ponta, selecione a mesma região do seu grupo de lanes e clique em Create First Split Lane na parte inferior da página.
Se já existir uma lane no namespace de microsserviço selecionado, clique em Create Lane.
ImportanteSe o recurso de lançamento canário de ponta a ponta estiver habilitado para as aplicações, evite utilizar simultaneamente os recursos de lançamento canário e roteamento baseado em tags nessas aplicações.
-
No painel Create Lane, defina os parâmetros da lane e clique em OK.
ImportanteSe o seu gateway for do tipo Ingress, configure as regras de roteamento Ingress no console do ACK.
Parâmetro
Descrição
Add Node Tag
-
Método de configuração: No console do ACK, adicione
alicloud.service.tag: ${tag}aspec.template.metadata.labelsno arquivo YAML da aplicação. -
Adicionar uma tag: Adicione os seguintes pares chave-valor a
spec.template.metadata.labels.-
msePilotCreateAppName:${AppName} -
alicloud.service.tag:{tag}
-
Lane Name
Insira um nome para a lane.
Lane Tag
Após executar Add Node Tag, uma lista das tags correspondentes aparece na lista suspensa. Ao selecionar uma tag, a aplicação correspondente é adicionada automaticamente.
Após criar a lane, visualize ou configure suas informações na seção Traffic Distribution da página End-to-end Canary Release.
Clique no ícone
para visualizar a porcentagem de tráfego da lane.-
Clique no ícone
na coluna Actions da lista de lanes para definir o status da aplicação na lane.Habilitar lane: Clique em Enable. Essa ação ativa a lane e roteia o tráfego conforme a configuração definida. O tráfego correspondente é roteado preferencialmente para a versão da aplicação com a tag de lane adequada. Se não existir nenhuma versão com tag, o tráfego será roteado para a versão sem tag.
Desabilitar lane: Clique em Close. O tráfego desta aplicação será roteado para a versão sem tag.
Modificar lane: Clique em Edit para alterar a configuração da lane.
Excluir lane: Clique em Delete para remover a lane.
-
Etapa 3: Configurar regras de Ingress para versões base
Se o nome de domínio do service for example.com e você desejar rotear o tráfego apenas para versões base (versões online), utilize o seguinte YAML para configurar as regras de Ingress.
Execute o comando curl para acessar example.com e rotear o tráfego para as versões base.
curl -H "host: example.com" http://47.98.xxx.xx/a
Resultado de exemplo:
A[192.168.0.98][config=base] -> B[192.168.0.157] -> C[192.168.0.161]
Etapa 4: Configurar regras de roteamento de Ingress para as versões canário
Utilize uma regra de roteamento baseada em cabeçalho para distinguir o tráfego base do tráfego canário. Para rotear solicitações com o cabeçalho HTTP x-user-id: 100 para versões canário ao acessar example.com, configure a seguinte regra de roteamento Ingress. As solicitações são roteadas preferencialmente para a versão canário de cada aplicação. Se uma aplicação não tiver versão canário, as solicitações serão roteadas para sua versão base.
O código anterior utiliza anotações para implementar o lançamento canário, a configuração de cabeçalho e o controle de cabeçalho. Para mais informações sobre essas anotações, consulte Container Service for Kubernetes:Advanced usage of MSE Ingress.
Execute o comando curl para acessar example.com e rotear solicitações com o cabeçalho HTTP x-user-id: 100 para as versões canário.
curl -H "host: example.com" -H "x-user-id: 100" http://47.98.xxx.xx/a
Resultado de exemplo: o tráfego canário é roteado para as versões canário das Aplicações A e C. A Aplicação B recebe tráfego em sua versão base porque nenhuma versão canário está disponível.
Agray[192.168.0.128][config=base] -> B[192.168.0.152] -> Cgray[192.168.0.151]
Visualizar os gráficos de monitoramento de tráfego das aplicações no console do MSE
-
Visualize o gráfico de monitoramento de uma única aplicação.
Na página Full link grayscale, clique na aba do grupo de lanes cujas informações de monitoramento você deseja visualizar.
Na seção Lane Groups and Involved Applications, clique no nome da aplicação cujas informações de monitoramento você deseja visualizar. Os dados de consultas por segundo (QPS) aparecem na seção QPS data à direita da página.
-
Visualize os gráficos de monitoramento de todas as aplicações no grupo de lanes.
Na página Full link grayscale, clique na aba do grupo de lanes cujas informações de monitoramento você deseja visualizar.
À direita da seção Application QPS Monitoring, clique em View Traffic Details para ver os gráficos de monitoramento de tráfego de todas as aplicações no grupo de lanes.