TCP-Dienste einrichten

In dieser Anleitung erfahren Sie, wie Sie Cloud Service Mesh so einrichten, dass TCP-Dienste und TCPRoute-Ressourcen verwendet werden.

Cloud Service Mesh mit TCP-Diensten und TCPRoute ähnelt der Konfiguration des Envoy-Sidecar-Proxys mit HTTP-Diensten. Ausnahmen sind, dass der Backend-Dienst einen TCP-Dienst bereitstellt und das Routing auf TCP/IP-Parametern statt auf dem HTTP-Protokoll basiert.

Mesh-Ressource mit TCPRoute-Ressource
Mesh-Ressource mitTCPRoute-Ressource (zum Vergrößern klicken)

Hinweise

Führen Sie die unter Einrichtung mit Envoy und proxylosen Arbeitslasten vorbereiten beschriebenen Aufgaben aus.

Mesh-Ressource konfigurieren

  1. Erstellen Sie in einer Datei mit dem Namen mesh.yaml die Spezifikation der mesh-Ressource.

    name: sidecar-mesh
    
  2. Verwenden Sie die Datei mesh.yaml, um die mesh-Ressource zu erstellen.

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

TCP-Server konfigurieren

Dieser Teil der Anleitung ist nicht spezifisch für die neuen APIs und verwendet vorhandene Backend-Dienste, Systemdiagnosen und MIG-Ressourcen.

Zu Demonstrationszwecken erstellen Sie einen Backend-Dienst mit automatisch skalierten VMs mithilfe von verwalteten Instanzgruppen, die einen Test-TCP-Dienst an Port 10000 bereitstellen.

  1. Erstellen Sie eine Compute Engine-VM-Instanzvorlage mit einem Testdienst an 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. Erstellen Sie anhand der Vorlage eine verwaltete Instanzgruppe.

    gcloud compute instance-groups managed create tcp-td-mig-us-east1 \
      --zone=ZONE \
      --size=1 \
      --template=tcp-td-vm-template
    
  3. Legen Sie für die benannten Ports in der erstellten verwalteten Instanzgruppe den Port 10000 fest.

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

  4. Erstellen Sie eine Systemdiagnose.

    gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
    
  5. Erstellen Sie eine Firewallregel, um eingehende Systemdiagnoseverbindungen zu Instanzen in Ihrem Netzwerk zuzulassen.

    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. Erstellen Sie einen globalen Backend-Dienst mit dem Load-Balancing-Schema INTERNAL_SELF_MANAGED und hängen Sie die Systemdiagnose an den Backend-Dienst an. In diesem Beispiel wird die verwaltete Instanzgruppe verwendet, die den zuvor erstellten TCP-Beispieldienst ausführt.

    gcloud compute backend-services create tcp-helloworld-service \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --protocol=TCP \
        --health-checks tcp-helloworld-health-check
    
  7. Fügen Sie dem Backend-Dienst die verwaltete Instanzgruppe hinzu.

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

Routing mit TCPRoute einrichten

In diesem Abschnitt richten Sie das Routing ein.

  1. Erstellen Sie in einer Datei mit dem Namen tcp_route.yaml die Spezifikation TcpRoute.

    Sie können entweder $PROJECT_ID oder $PROJECT_NUMBER verwenden.

    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. Erstellen Sie mit der Spezifikation tcp_route.yaml die Ressource TcpRoute.

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

TCP-Client mit einem Envoy-Sidecar erstellen

  1. Erstellen Sie eine Instanzvorlage und anschließend eine VM mit Envoy, die mit Cloud Service Mesh verbunden ist.

    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. Melden Sie sich bei der von Ihnen erstellten VM an.

    gcloud compute ssh td-vm-client
    
  3. Prüfen Sie die Konnektivität zu den Testdiensten, die Sie mit dem Dienstprogramm netcat erstellt haben.

    echo 'Hi TCP Service' | nc 10.0.0.1 10000
    

Der Testdienst sollte die Wortgruppe Hallo vom TCP-Dienst zurückgeben. Sie sollten auch den Text sehen, den Sie vom netcat-Dienst zurückgegeben haben, der auf der Remote-VM ausgeführt wird.

Nächste Schritte

  • Informationen zum Auflisten von Routenressourcen, die mit einer Mesh- oder Gateway-Ressource verknüpft sind, finden Sie unter Route-Ressourcen auflisten. Diese Feature befindet sich im Vorschaumodus.