O roteamento de Camada 7 no Service Mesh (ASM) direciona o tráfego com base em caminhos de URI e cabeçalhos de requisição. Antes de configurar as regras de roteamento, prepare o ambiente ASM e implante as aplicações de exemplo necessárias para o seu caso de uso.
Este tópico aborda duas etapas:
Atenda aos pré-requisitos: crie uma instância do ASM, adicione um cluster e ative a injeção automática de proxy sidecar.
Implante as aplicações de exemplo: implante os serviços necessários para o seu caso de uso de roteamento de Camada 7.
Pré-requisitos
Antes de começar, verifique se você tem:
-
Uma instância do ASM da Enterprise Edition. Consulte Criar uma instância do ASM.
ImportanteNa seção Dataplane Mode da página Create Service Mesh, não selecione Enable Ambient Mesh mode. O roteamento de Camada 7 com proxies sidecar é incompatível com o modo ambient mesh.
Um cluster do Container Service for Kubernetes (ACK). Consulte Criar um cluster dedicado do ACK ou Criar um cluster gerenciado do ACK.
**Injeção automática de proxy sidecar ativada para o namespace
default**. Consulte a seção "Enable automatic sidecar proxy injection" em Gerenciar namespaces globais.
Implantar aplicações de exemplo
Implante um ou mais dos serviços abaixo no cluster ACK, conforme o caso de uso de roteamento de Camada 7 que você pretende configurar.
|
Serviço |
Porta |
Caso de uso |
|
helloworld |
5000 |
Roteamento baseado em versão (divisão de tráfego v1/v2) |
|
sleep |
80 |
Pod cliente para envio de requisições de teste a outros serviços |
|
HTTPBin |
8000 |
Correspondência de cabeçalho e caminho |
|
NGINX |
8000 |
Roteamento HTTP básico e balanceamento de carga |
Todos os comandos de implantação abaixo pressupõem que o kubectl esteja configurado para se conectar ao cluster ACK por meio do arquivo kubeconfig.
Implantar o serviço helloworld
O serviço helloworld executa duas versões (v1 e v2), ideal para testar regras de roteamento baseadas em versão.
-
Salve o YAML a seguir em um arquivo chamado
helloworld-application.yaml: -
Aplique o manifesto:
kubectl apply -f helloworld-application.yaml -
Verifique se os pods estão em execução com os proxies sidecar injetados (a coluna READY exibe
2/2). Saída esperada:kubectl get pods -l app=helloworldNAME READY STATUS RESTARTS AGE helloworld-v1-xxxxxxxxx-xxxxx 2/2 Running 0 30s helloworld-v2-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Implantar o serviço sleep
O serviço sleep fornece um pod com curl para envio de requisições de teste a outros serviços na malha.
-
Salve o YAML a seguir em um arquivo chamado
sleep-application.yaml: -
Aplique o manifesto:
kubectl apply -f sleep-application.yaml -
Verifique se o pod sleep está em execução com o proxy sidecar. Saída esperada:
kubectl get pods -l app=sleepNAME READY STATUS RESTARTS AGE sleep-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Implantar o serviço HTTPBin
O HTTPBin retorna dados estruturados de resposta HTTP, útil para testar correspondência de cabeçalhos e roteamento baseado em caminho.
-
Salve o YAML a seguir em um arquivo chamado
httpbin-application.yaml: -
Aplique o manifesto:
kubectl apply -f httpbin-application.yaml -
Verifique se o pod HTTPBin está em execução. Saída esperada:
kubectl get pods -l app=httpbinNAME READY STATUS RESTARTS AGE httpbin-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Implantar o serviço NGINX
O NGINX atua como backend HTTP básico para testar regras padrão de roteamento e balanceamento de carga.
-
Salve o YAML a seguir em um arquivo chamado
nginx.yaml: -
Aplique o manifesto:
kubectl apply -f nginx.yaml -
Verifique se o pod NGINX está em execução. Saída esperada:
kubectl get pods -l app=nginxNAME READY STATUS RESTARTS AGE nginx-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Confirme o registro de serviços
Após implantar as aplicações de exemplo, confirme se os serviços estão registrados no cluster:
kubectl get services
Certifique-se de que cada serviço implantado apareça na saída com a porta esperada.
Próximos passos
Após concluir esses preparativos, prossiga para o caso de uso de roteamento de Camada 7 correspondente ao seu cenário. Cada caso de uso especifica as aplicações de exemplo necessárias.