Ao executar várias versões de um serviço em uma instância do Service Mesh (ASM), é necessário ter controle granular sobre o destino das requisições. Os serviços virtuais resolvem essa questão ao definir regras de roteamento que correspondem às requisições — com base em cabeçalhos, caminhos de URI ou peso de tráfego — e as encaminham para versões específicas do serviço (subconjuntos). As regras são avaliadas de cima para baixo, e a primeira correspondência é aplicada.
Utilize serviços virtuais para:
Direcionar o tráfego para versões específicas do serviço (por exemplo, enviar todas as requisições de usuários de teste para a v2).
Dividir o tráfego entre versões por peso (por exemplo, deslocar 10% do tráfego para uma implantação canary).
Corresponder requisições por cabeçalho, URI ou outros atributos e roteá-las para diferentes backends.
Os serviços virtuais funcionam em conjunto com as regras de destino. Um serviço virtual roteia o tráfego para um destino, enquanto uma regra de destino configura o que acontece nesse destino (balanceamento de carga, pools de conexões, definições de subconjuntos). Se o seu serviço virtual referenciar um subconjunto, a DestinationRule correspondente deverá definir esse subconjunto. Para obter a referência completa dos campos do VirtualService, consulte Serviço Virtual na documentação do Istio.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma instância do ASM. Para mais informações, consulte Crie uma instância do ASM
Serviços implantados em um cluster adicionado à instância do ASM
Criar um serviço virtual
Faça login no console do ASM.
No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em no nome da instância do ASM.
No painel de navegação à esquerda, escolha .
-
Crie um serviço virtual utilizando um dos métodos a seguir:
Formulário do console: Clique em Create. Configure os parâmetros na página Create e, em seguida, clique em Create.
Editor YAML: Clique em Create from YAML. Selecione um namespace na lista suspensa Namespace e escolha um modelo na lista suspensa Template. Edite a configuração YAML no editor de código e clique em Create.
Modificar um serviço virtual
Após criar um serviço virtual, localize-o na página VirtualService e utilize a coluna Actions para realizar alterações:
Editar a configuração YAML: Clique em YAML. Na caixa de diálogo Edit, modifique a configuração e clique em OK.
Reverter para uma versão anterior: Clique em Version. Na caixa de diálogo Version, ajuste as configurações conforme necessário e clique em Rollback.
Excluir um serviço virtual
Na página VirtualService, localize o serviço virtual e clique em Delete na coluna Actions.
Na mensagem de confirmação Submit, clique em OK.
A exclusão de um serviço virtual remove suas regras de roteamento, o que afeta a forma como as requisições são roteadas e como o tráfego é distribuído entre as versões do serviço. Isso pode causar comportamentos inesperados. Antes de excluir, verifique se nenhum tráfego ativo depende das regras de roteamento definidas no serviço virtual.
Tópicos relacionados
Crie regras de destino para definir subconjuntos e configurar políticas de balanceamento de carga para seus serviços. Para mais informações, consulte Gerencie regras de destino.
Configure gateways para gerenciar o tráfego de entrada em seu mesh. Para mais informações, consulte Gerencie gateways.