Configurar serviços TCP

Neste guia, explicamos como configurar o Cloud Service Mesh para usar serviços TCP e TCPRoute recursos.

O Cloud Service Mesh com serviços TCP e TCPRoute é semelhante à configuração do proxy sidecar do Envoy com serviços HTTP. As exceções são que o serviço de back-end fornece um serviço TCP e o roteamento é baseado em protocolos TCP/IP parâmetros em vez de no protocolo HTTP.

Recurso Mesh com recurso TCPRoute
Mesh recurso comTCPRoute recurso (clique para ampliar)

Antes de começar

Conclua as tarefas descritas em Preparar para configurar com o Envoy e cargas de trabalho sem proxy.

Configurar o recurso Mesh

  1. Em um arquivo chamado mesh.yaml, crie a especificação de recurso mesh.

    name: sidecar-mesh
    
  2. Use o arquivo mesh.yaml para criar o recurso mesh.

    gcloud network-services meshes import sidecar-mesh \
      --source=mesh.yaml \
      --location=global
    

Configurar o servidor TCP

Esta parte do guia não é específica das novas APIs e usa recursos atuais de serviço de back-end, verificação de integridade e MIG.

Para fins de demonstração, crie um serviço de back-end com VMs com escalonamento automático usando grupos de instâncias gerenciadas que atendam a um serviço TCP de teste na porta 10000.

  1. Crie um modelo de instância de VM do Compute Engine com um serviço de teste na porta 10000.

    gcloud compute instance-templates create tcp-td-vm-template \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=allow-health-checks \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --metadata=startup-script="#! /bin/bash
    sudo apt-get update -y
    sudo apt-get install netcat -y
    while true;
      do echo 'Hello from TCP service' | nc -l -s 0.0.0.0 -p 10000;
    done &"
    
  2. Crie o grupo gerenciado de instâncias com base no modelo.

    gcloud compute instance-groups managed create tcp-td-mig-us-east1 \
      --zone=ZONE \
      --size=1 \
      --template=tcp-td-vm-template
    
  3. Defina as portas nomeadas no grupo gerenciado de instâncias criado como porta 10.000.

    gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1 
    --zone=ZONE
    --named-ports=tcp:10000

  4. Crie uma verificação de integridade.

    gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
    
  5. Crie uma regra de firewall para permitir conexões de verificação de integridade de entrada com instâncias na sua rede.

    gcloud compute firewall-rules create tcp-vm-allow-health-checks \
       --network default \
       --action allow \
       --direction INGRESS \
       --source-ranges=35.191.0.0/16,130.211.0.0/22 \
       --target-tags allow-health-checks \
       --rules tcp:10000
    
  6. Crie um serviço de back-end global com um esquema de balanceamento de carga de INTERNAL_SELF_MANAGED e anexe a verificação de integridade ao serviço de back-end. No exemplo, usamos o grupo de instâncias gerenciadas que executa o serviço TCP de amostra criado anteriormente.

    gcloud compute backend-services create tcp-helloworld-service \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --protocol=TCP \
        --health-checks tcp-helloworld-health-check
    
  7. Adicione o grupo de instâncias gerenciadas ao serviço de back-end.

    gcloud compute backend-services add-backend tcp-helloworld-service \
      --instance-group tcp-td-mig-us-east1 \
      --instance-group-zone=ZONE \
      --global
    

Configure o roteamento com TCPRoute

Nesta seção, você configura o roteamento.

  1. Em um arquivo chamado tcp_route.yaml, crie a especificação TcpRoute.

    É possível usar $PROJECT_ID ou $PROJECT_NUMBER.

    name: helloworld-tcp-route
    meshes:
    - projects/$PROJECT_NUMBER/locations/global/meshes/sidecar-mesh
    rules:
    - action:
        destinations:
        - serviceName: projects/$PROJECT_NUMBER/locations/global/backendServices/tcp-helloworld-service
      matches:
      - address: '10.0.0.1/32'
        port: '10000'
    
  2. Usando a especificação tcp_route.yaml, crie o recurso TcpRoute.

    gcloud network-services tcp-routes import helloworld-tcp-route \
      --source=tcp-route.yaml \
      --location=global
    

Criar um cliente TCP com um sidecar do Envoy

  1. Criar um modelo de instância e uma VM com o Envoy conectadas ao Cloud Service Mesh.

    gcloud beta compute instance-templates create td-vm-client-template \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --service-proxy=enabled,mesh=sidecar-mesh \
      --metadata=startup-script="#! /bin/bash
    sudo apt-get update -y
    sudo apt-get install netcat -y"
    
    gcloud compute instances create td-vm-client \
      --zone=ZONE \
      --source-instance-template td-vm-client-template
    
  2. Faça login na VM que você criou.

    gcloud compute ssh td-vm-client
    
  3. Verifique a conectividade com os serviços de teste criados usando o utilitário netcat.

    echo 'Hi TCP Service' | nc 10.0.0.1 10000
    

O serviço de teste retornará a frase Hello from TCP service. Você também verá todo o texto digitado pelo serviço netcat em execução na VM remota.

A seguir

  • Para saber como listar recursos de rota associados a um recurso Mesh ou Gateway, consulte Listar recursos Route. Esse recurso está na visualização.