Configura i servizi TCP
Questa guida spiega come configurare Cloud Service Mesh per utilizzare i servizi TCP e le risorse TCPRoute
.
Cloud Service Mesh con servizi TCP e TCPRoute
è simile alla
configurazione del proxy sidecar Envoy con servizi HTTP. Le eccezioni sono che
il servizio di backend fornisce un servizio TCP e il routing si basa su parametri TCP/IP
anziché sul protocollo HTTP.
Mesh
con risorsa TCPRoute
(fai clic per ingrandire)Prima di iniziare
Assicurati di completare le attività descritte in Preparati alla configurazione con Envoy e carichi di lavoro senza proxy.
Configurazione della risorsa Mesh
In un file denominato
mesh.yaml
, crea la specifica della risorsamesh
.name: sidecar-mesh
Utilizza il file
mesh.yaml
per creare la risorsamesh
.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 le risorse esistenti per il servizio di backend, il controllo di integrità e il MIG.
A scopo dimostrativo, crei un servizio di backend con VM con scalabilità automatica
utilizzando gruppi di istanze gestite
che gestiscono un servizio TCP di test sulla porta 10000
.
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 &"
Creare 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
Imposta le porte denominate sul 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:10000Creare un controllo di integrità.
gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
Crea una regola firewall per consentire le connessioni di controllo di integrità in entrata alle istanze nella 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
Crea un servizio di backend globale con uno schema di bilanciamento del carico di
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
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 configuri il routing.
In un file denominato
tcp_route.yaml
, crea la specificaTcpRoute
.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'
Utilizzando la specifica
tcp_route.yaml
, crea la risorsaTcpRoute
.gcloud network-services tcp-routes import helloworld-tcp-route \ --source=tcp-route.yaml \ --location=global
Creazione di un client TCP con un proxy sidecar Envoy
Crea un modello di istanza e poi crea una VM con Envoy collegata a 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
Accedi alla VM che hai creato.
gcloud compute ssh td-vm-client
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 dovrebbe restituire la frase Hello from TCP
service. Dovresti anche essere in grado di vedere il testo che digiti
restituito dal servizio netcat
in esecuzione sulla VM remota.
Limitazioni
Non puoi configurare un criterio di sicurezza di Google Cloud Armor se utilizzi il routing del traffico TCP.