Menyiapkan layanan TCP

Traffic Director dengan layanan TCP dan TCPRoute mirip dengan konfigurasi proxy sidecar Envoy dengan layanan HTTP. Pengecualiannya adalah bahwa layanan backend menyediakan layanan TCP dan perutean didasarkan pada parameter TCP/IP, bukan pada protokol HTTP.

Resource mesh dengan resource TCPRoute
Referensi Mesh dengan resource TCPRoute (klik untuk memperbesar)

Sebelum memulai

Pastikan deployment Anda memenuhi prasyarat yang dijelaskan dalam panduan berikut:

Konfigurasi resource Mesh

  1. Dalam file bernama mesh.yaml, buat spesifikasi resource mesh.

    name: sidecar-mesh
    
  2. Gunakan file mesh.yaml untuk membuat resource mesh.

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

Mengonfigurasi server TCP

Bagian panduan ini tidak khusus untuk API baru dan menggunakan layanan backend, health check, dan resource MIG yang sudah ada.

Untuk tujuan demonstrasi, buat layanan backend dengan VM yang diskalakan secara otomatis menggunakan grup instance terkelola yang melayani layanan TCP uji coba pada port 10000.

  1. Buat template instance VM Compute Engine dengan layanan pengujian pada port 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. Buat grup instance terkelola berdasarkan template ini.

    gcloud compute instance-groups managed create tcp-td-mig-us-east1 \
      --zone=ZONE \
      --size=1 \
      --template=tcp-td-vm-template
    
  3. Tetapkan port bernama di grup instance terkelola yang dibuat ke port 10000.

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

  4. Membuat health check.

    gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
    
  5. Buat aturan firewall untuk mengizinkan koneksi health check masuk ke instance di jaringan Anda.

    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. Buat layanan backend global dengan skema load balancing INTERNAL_SELF_MANAGED dan tambahkan health check ke layanan backend. Contoh ini menggunakan grup instance terkelola yang menjalankan contoh layanan TCP yang Anda buat sebelumnya.

    gcloud compute backend-services create tcp-helloworld-service \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --protocol=TCP \
        --health-checks tcp-helloworld-health-check
    
  7. Tambahkan grup instance terkelola ke layanan backend.

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

Siapkan pemilihan rute dengan TCPRoute

Di bagian ini, Anda akan menyiapkan pemilihan rute.

  1. Dalam file bernama tcp_route.yaml, buat spesifikasi TcpRoute.

    Anda dapat menggunakan $PROJECT_ID atau $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. Dengan menggunakan spesifikasi tcp_route.yaml, buat resource TcpRoute.

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

Membuat klien TCP dengan file bantuan Envoy

  1. Buat template instance, lalu buat VM dengan Envoy yang terhubung ke 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. Login ke VM yang Anda buat.

    gcloud compute ssh td-vm-client
    
  3. Verifikasi konektivitas ke layanan pengujian yang Anda buat menggunakan utilitas netcat.

    echo 'Hi TCP Service' | nc 10.0.0.1 10000
    

Layanan pengujian akan menampilkan frasa Halo dari layanan TCP. Anda juga akan dapat melihat teks apa pun yang diketik yang ditampilkan oleh layanan netcat yang berjalan di VM jarak jauh.