O roteamento baseado em tags aplica tags ao tráfego e aos nós para direcionar o tráfego com características específicas aos nós com as tags correspondentes. Esse método fornece a base para estratégias avançadas de implantação, como blue-green deployment e canary release.
Pré-requisitos
Limitações
Este recurso está disponível no MSE Governance Center e exige que suas aplicações estejam conectadas a ele.
Para obter uma lista das versões do Java e frameworks compatíveis com o roteamento baseado em tags, consulte Java frameworks supported by Microservices Governance.
Casos de uso
Desenvolvimento e teste de múltiplas versões
O desenvolvimento paralelo de várias versões de uma aplicação exige um ambiente separado para cada versão, o que eleva os custos de recursos. Uma estratégia de isolamento de tráfego pode reduzir significativamente esses custos. Com o isolamento de tráfego ponta a ponta baseado em roteamento por tags, é possível direcionar tráfegos específicos para um ambiente de desenvolvimento designado. Por exemplo, no Ambiente de Desenvolvimento 1, aplique a tag Tag1 à versão V1.1 da Aplicação B e da Aplicação D e configure uma regra de roteamento correspondente. Quando a Aplicação A chamar a Aplicação B, o sistema verificará se o tráfego corresponde à regra de roteamento. Em caso afirmativo, o tráfego será roteado para a instância V1.1 da Aplicação B no Ambiente de Desenvolvimento 1. Caso contrário, será roteado para a instância V1 no ambiente de linha de base. Da mesma forma, quando a Aplicação C chamar a Aplicação D, o tráfego será roteado para a instância V1 ou V1.1 da Aplicação D, dependendo das características do tráfego.
Isolamento de tráfego entre múltiplas versões
Se várias versões de uma aplicação estiverem em execução online em ambientes diferentes, como um ambiente regular e outro para fins especiais, utilize o roteamento baseado em tags para isolar o tráfego entre eles. Por exemplo, direcione o tráfego de vendas relâmpago ou de canais específicos para o ambiente de fins especiais, enquanto o tráfego normal segue para o ambiente regular. Isso garante que, mesmo em caso de falha no ambiente de fins especiais, o tráfego destinado a ele não seja redirecionado para o ambiente regular, evitando qualquer impacto negativo.
Testes A/B
Para realizar testes A/B em múltiplas versões de uma aplicação, use o roteamento baseado em tags para controlar o tráfego de ponta a ponta. Por exemplo, direcione o tráfego de clientes da Região A para a versão V1 e o tráfego da Região B para a versão V1.1. Ao validar diferentes versões, você reduz os riscos associados ao lançamento de novos produtos ou recursos.
Ativar o Microservices Governance e definir tags
Este tópico utiliza como exemplo uma aplicação chamada spring-cloud-a. Aplique tag1 e tag2 para criar dois grupos de instâncias da aplicação. Se uma solicitação corresponder às condições configuradas, ela será roteada para uma instância com a tag especificada. Se nenhuma regra for atendida, o tráfego será distribuído para as instâncias com base nas porcentagens de distribuição de tráfego configuradas.
Faça login no console do Container Service for Kubernetes (ACK).
No painel de navegação à esquerda, escolha Clusters e clique em no nome do cluster desejado.
No painel de navegação à esquerda, escolha .
-
Clique em Create from Image para crie duas cargas de trabalho do tipo
Deploymentchamadasspring-cloud-a-tag1espring-cloud-a-tag2. Para mais informações, consulte Create a stateless workload Deployment.Parâmetro
Descrição
Replicas
Defina o valor como 1.
Type
Selecione Deployment.
Image name
Selecione sua imagem construída ou use a imagem pré-construída
registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1. -
Siga estas etapas para conectar
spring-cloud-a-tag1espring-cloud-a-tag2ao Microservices Governance e defina suas tags.Retorne à página Deployments. Selecione um Namespaces e localize as aplicações criadas (spring-cloud-a-tag1 e spring-cloud-a-tag2). Na coluna Actions, escolha More > Visualize em YAML.
-
Na caixa de diálogo Edite YAML, adicione os seguintes rótulos em tanto para
spring-cloud-a-tag1quanto paraspring-cloud-a-tag2a fim de conectá-las ao Microservices Governance.labels: msePilotAutoEnable: "on" msePilotCreateAppName: <your-app-name> alicloud.service.tag: <tag>NotaSubstitua
<your-app-name>pelo nome da sua aplicação no Microservices Governance. Neste exemplo, o nome éspring-cloud-a.Substitua
<tag>portag1outag2.
Clique em Atualize.
Criar uma regra de roteamento baseada em tags
Faça login no console do MSE Governance Center e selecione uma região na barra de navegação superior.
No painel de navegação à esquerda, escolha Microservices Governance > Application Governance.
Na página Application list, selecione o namespace de microsserviços desejado, pesquise pela aplicação spring-cloud-a criada no ACK e clique em no nome dela.
No painel de navegação à esquerda, clique em Traffic Management e, em seguida, clique em na aba Tag-based Routing para visualize a configuração atual de roteamento.
-
Na lista Tag-based Routing, clique em Traffic Distribution, defina a porcentagem de tráfego para cada tag e clique em Save.
Por exemplo, defina a porcentagem de tráfego para tag1 como
100%e as porcentagens para instâncias tag2 e untagged como0%. -
Em Traffic Rules, clique em Add. No painel Crie Tag-based Routing, configure os parâmetros e clique em OK para crie a regra de roteamento.
NotaO roteamento baseado em tags prioriza as condições definidas em uma regra de tráfego. Se uma solicitação corresponder a uma regra de tráfego, ela será roteada para um pod com a tag correspondente. Caso contrário, a solicitação será roteada para um pod com base nas porcentagens de distribuição de tráfego especificadas.
Parâmetro
Descrição
Routing rule name
Nome da regra de roteamento baseada em tags. Exemplo:
test-springcloud.Application
Nome da aplicação. Exemplo:
spring-cloud-a.Tag
Tag definida para a aplicação no ACK. Exemplo:
tag2.Application instance
Endereço IP e porta da instância da aplicação
spring-cloud-aque possui esta tag.Traffic rules
Framework type
Selecione o framework da sua aplicação: Spring Cloud ou Dubbo.
-
Para Spring Cloud, defina apenas o caminho da URL, como
/getIp. -
Para Dubbo, selecione um service e uma interface.
Condition mode
Escolha um modo de condição conforme sua necessidade: Meet all of the following conditions ou Meet any of the conditions.
Condition list
-
Se o Framework Type for Spring Cloud, defina condições com base em Parameter, Cookie, Header ou Body Content. Por exemplo, uma condição de Parameter pode ser
name=xiaoming, e uma condição de Cookie pode serhello = "world" or "world2". -
Se o Framework Type for Dubbo, especifique uma expressão para recuperar os valores dos parâmetros.
-
Verificação
Verifique os resultados de acordo com seus requisitos de negócio.
-
Por padrão, 100% do tráfego é roteado para o nó com a tag
tag1.Atag1[192.168.0.122][config=base] -> B[192.168.0.147] -> C[192.168.0.115] -
O tráfego que corresponde à regra é roteado para o nó com a tag correspondente.
Atag2[192.168.0.156][config=base] -> B[192.168.0.120] -> C[192.168.0.115]
Documentação relacionada
Para saber como implementar um canary release ponta a ponta, consulte End-to-end canary release.