Configure serviços TCP

Este guia explica como configurar a Cloud Service Mesh para usar serviços TCP e recursos TCPRoute.

A 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 encaminhamento baseia-se em parâmetros TCP/IP, em vez de no protocolo HTTP.

Recurso de malha com recurso TCPRoute
Mesh recurso com o recurso TCPRoute (clique para aumentar)

Antes de começar

Certifique-se de que conclui as tarefas descritas no artigo Prepare-se para a configuração com o Envoy e cargas de trabalho sem proxy.

Configure o recurso Mesh

  1. Num ficheiro denominado mesh.yaml, crie a especificação do recurso mesh.

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

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

Configure o servidor TCP

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

Para fins de demonstração, cria um serviço de back-end com VMs com escala automática usando grupos de instâncias geridas que servem 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 um grupo de instâncias gerido 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 com nome no grupo de instâncias geridas criado para a porta 10000.

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

  4. Crie uma verificação de funcionamento.

    gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
    
  5. Crie uma regra de firewall para permitir ligações de verificações de estado de funcionamento de entrada a 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 funcionamento ao serviço de back-end. O exemplo usa o grupo de instâncias gerido que executa o serviço TCP de exemplo que criou 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 gerido 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 encaminhamento com o TCPRoute

Nesta secção, configura o encaminhamento.

  1. Num ficheiro denominado tcp_route.yaml, crie a especificação TcpRoute.

    Pode usar o $PROJECT_ID ou o $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
    

Crie um cliente TCP com um sidecar do Envoy

  1. Crie um modelo de instância e, em seguida, crie uma VM com o Envoy que esteja ligada à malha de serviço na nuvem.

    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. Inicie sessão na VM que criou.

    gcloud compute ssh td-vm-client
    
  3. Valide a conetividade aos serviços de teste que criou através do utilitário netcat.

    echo 'Hi TCP Service' | nc 10.0.0.1 10000
    

O serviço de teste deve devolver a expressão Hello from TCP service. Também deve conseguir ver qualquer texto que escreva devolvido pelo serviço netcat em execução na VM remota.

O que se segue?

  • Para informações sobre como listar recursos de trajetos associados a um recurso Mesh ou Gateway, consulte o artigo Liste recursos Route.