O roteamento de tráfego baseado em versão permite dividir o tráfego entre diferentes versões de serviço conforme pesos especificados. Essa técnica é ideal para lançamentos canário e testes A/B. Este tópico demonstra como usar recursos do Istio para essa finalidade.
Pré-requisitos
Etapa 1: Criar um Gateway
Um Gateway define um balanceador de carga na borda da malha de serviços para conexões HTTP/TCP de entrada ou saída. Esta etapa mostra como criar um Gateway e vinculá-lo ao gateway de entrada.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha . Na página exibida, clique em Create.
-
Na página Create, configure os parâmetros a seguir e clique em Create.
Para obter mais informações sobre os parâmetros, consulte Gateway.
Parâmetro
Descrição
Basic Information
Defina Namespaces como default e Name como bookinfo-gateway.
Gateway Pod Selector
Defina Key como istio e Value como ingressgateway.
Exposed Service
Defina Name como http, Port como 80, Protocol como HTTP e Hosts como *.
A configuração YAML do Gateway é a seguinte.
O arquivo YAML a seguir mostra o Gateway correspondente às configurações anteriores.
Etapa 2: Criar um VirtualService
O VirtualService roteia solicitações para a aplicação Bookinfo pelos seguintes caminhos: /productpage, /static, /login, /logout e /api/v1/products.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha . Na página exibida, clique em Create.
-
Na página Create, configure os parâmetros a seguir e clique em Create.
Para obter mais informações sobre os parâmetros, consulte Virtual Service.
Parâmetro
Descrição
Basic Information
Namespaces
Neste exemplo, selecione default.
Name
Insira um nome personalizado para o VirtualService.
Gateways
-
Ative Apply To specific Gateways e clique em Select the name of the Gateway.
-
Na caixa de diálogo Select the name of the Gateway, selecione bookinfo-gateway, clique no ícone
e clique em OK. -
Desative Apply To All Sidecars.
Hosts
Clique em Select the gateway domain name which VirtualService belongs to. Na caixa de diálogo Select the gateway domain name which VirtualService belongs to, selecione *, clique no ícone
e clique em OK.HTTP Route
Name
Clique em HTTP Route, clique em Add Route e insira um Name personalizado.
Request matching rules
Clique repetidamente em Add Request Matching Rule para configurar as cinco regras a seguir:
-
Ative Matching request URI, defina Method como Exact e defina Content como /productpage.
-
Ative Matching request URI, defina Method como Prefix e defina Content como /static.
-
Ative Matching request URI, defina Method como Exact e defina Content como /login.
-
Ative Matching request URI, defina Method como Exact e defina Content como /logout.
-
Ative Matching request URI, defina Method como Prefix e defina Content como /api/v1/products.
Route destination
Clique em Add Route Destination, defina Host como productpage e defina Port como 9080.
O arquivo YAML a seguir mostra o VirtualService correspondente às configurações anteriores.
-
Etapa 3: Acessar a aplicação Bookinfo
-
Obtenha o endereço de serviço do gateway de entrada.
Console do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, localize o Service address.
Console do ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
No topo da página Hosts, selecione Namespaces na lista suspensa Namespace. Na coluna External IP, localize o endereço IP associado à porta 80 do serviço istio-ingressgateway.
-
Na barra de endereços do navegador, insira http://{endereço IP do gateway de entrada}/productpage e atualize a página várias vezes para observar o roteamento round-robin padrão.
A cada atualização da página, você acessa uma das versões v1, v2 ou v3 do serviço reviews. O tráfego para as três versões do serviço reviews é distribuído em uma proporção aproximada de 1:1:1.
A página reviews-v1 exibe apenas avaliações em texto, sem classificação por estrelas. A página reviews-v2 exibe classificações com estrelas pretas, e a página reviews-v3 exibe classificações com estrelas vermelhas.
Etapa 4: Criar regras de roteamento baseadas em versão
-
Crie um DestinationRule para definir subconjuntos baseados em versão (v1, v2 e v3) para o serviço reviews.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha . Na página exibida, clique em Create.
-
Na página Create, configure os parâmetros a seguir e clique em Create.
Para obter mais informações sobre os parâmetros, consulte Destination Rule.
Parâmetro
Descrição
Basic Information
Defina Namespaces como default, insira um Name personalizado para o DestinationRule e defina Host como reviews.
Service Version (Subset)
Clique em Service Version (Subset). Clique repetidamente em Add Service Version (Subset) para configurar os três subconjuntos a seguir.
-
Subconjunto 1: Defina Name como v1. Clique em Add Label, defina Key como version e defina Value como v1.
-
Subconjunto 2: Defina Name como v2. Clique em Add Label, defina Key como version e defina Value como v2.
-
Subconjunto 3: Defina Name como v3. Clique em Add Label, defina Key como version e defina Value como v3.
O arquivo YAML a seguir mostra o DestinationRule correspondente às configurações anteriores.
-
-
Crie um VirtualService para rotear o tráfego para o serviço reviews com base nos seguintes pesos: 10% para v1, 40% para v2 e 50% para v3.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha . Na página exibida, clique em Create.
-
Na página Create, configure os parâmetros a seguir e clique em Create.
Parâmetro
Descrição
Basic Information
Namespaces
Neste exemplo, selecione default.
Name
Insira um nome personalizado para o VirtualService.
Gateways
Ative Apply To All Sidecars.
Hosts
Clique em Add Host. Na caixa de diálogo Add Host, defina Namespaces como default. Na seção Add Host, selecione o serviço reviews, clique no ícone
e clique em OK.HTTP Route
Name
Clique em HTTP Route, clique em Add Route e insira um Name personalizado.
Route destination
Clique repetidamente em Add Route Destination para configurar os três destinos de rota a seguir.
-
Defina Host como reviews, a versão como v1 e o peso como 10.
-
Defina Host como reviews, Subset como v2 e Weight como 40.
-
Defina Host como reviews, Subset como v3 e Weight como 50.
O arquivo YAML a seguir mostra o VirtualService correspondente às configurações anteriores.
O YAML do VirtualService é o seguinte.
-
Etapa 5: Verificar o roteamento baseado em versão
Na barra de endereços do navegador, insira http://{endereço IP do gateway de entrada}/productpage e atualize a página cerca de 10 vezes.
Se o tráfego for distribuído para as versões de serviço v1, v2 e v3 em uma proporção aproximada de 1:4:5, as regras de roteamento ponderado estarão funcionando corretamente.