Configura i servizi TCP

Traffic Director con servizi TCP e TCPRoute è simile alla configurazione del proxy sidecar Envoy con servizi HTTP. L'eccezione è che il servizio di backend fornisce un servizio TCP e il routing si basa sui parametri TCP/IP invece che sul protocollo HTTP.

Risorsa mesh con risorsa TCPRoute
Mesh risorsa con TCPRoute risorsa (fai clic per ingrandire)

Prima di iniziare

Assicurati che il deployment soddisfi i prerequisiti descritti nelle seguenti guide:

Configurazione della risorsa Mesh

  1. In un file denominato mesh.yaml, crea la specifica della risorsa mesh.

    name: sidecar-mesh
    
  2. Utilizza il file mesh.yaml per creare la risorsa mesh.

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

Configura il server TCP

Questa parte della guida non è specifica per le nuove API e utilizza il servizio di backend, il controllo di integrità e le risorse di gruppo di istanze gestite esistenti.

A fini dimostrativi, puoi creare un servizio di backend con VM con scalabilità automatica utilizzando gruppi di istanze gestite che gestiscono un servizio TCP di test sulla porta 10000.

  1. Crea un modello di istanza VM di Compute Engine con un servizio di test sulla 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. Crea un gruppo di istanze gestite basato sul modello.

    gcloud compute instance-groups managed create tcp-td-mig-us-east1 \
      --zone=ZONE \
      --size=1 \
      --template=tcp-td-vm-template
    
  3. Imposta le porte denominate nel gruppo di istanze gestite creato sulla porta 10000.

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

  4. Creare un controllo di integrità.

    gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
    
  5. Crea una regola firewall per consentire le connessioni per il controllo di integrità in entrata alle istanze della tua rete.

    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. Crea un servizio di backend globale con uno schema di bilanciamento del carico INTERNAL_SELF_MANAGED e collega il controllo di integrità al servizio di backend. L'esempio utilizza il gruppo di istanze gestite che esegue il servizio TCP di esempio che hai creato in precedenza.

    gcloud compute backend-services create tcp-helloworld-service \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --protocol=TCP \
        --health-checks tcp-helloworld-health-check
    
  7. Aggiungi il gruppo di istanze gestite al servizio di backend.

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

Configurazione del routing con TCPRoute

In questa sezione, configurerai il routing.

  1. In un file denominato tcp_route.yaml, crea la specifica TcpRoute.

    Puoi utilizzare $PROJECT_ID 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. Utilizzando la specifica tcp_route.yaml, crea la risorsa TcpRoute.

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

Crea un client TCP con un sidecar Envoy

  1. Creare un modello di istanza, quindi creare una VM con Envoy connessa a Traffic Director.

    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. Accedi alla VM che hai creato.

    gcloud compute ssh td-vm-client
    
  3. Verifica la connettività ai servizi di test che hai creato utilizzando l'utilità netcat.

    echo 'Hi TCP Service' | nc 10.0.0.1 10000
    

Il servizio di test deve restituire la frase Hello from TCP service. Dovresti anche riuscire a vedere il testo digitato, restituito dal servizio netcat in esecuzione sulla VM remota.