Configurar servicios TCP
En esta guía se explica cómo configurar Cloud Service Mesh para usar servicios TCP y recursos TCPRoute
.
Cloud Service Mesh con servicios TCP y TCPRoute
es similar a la configuración del proxy sidecar de Envoy con servicios HTTP. Las excepciones son que el servicio de backend proporciona un servicio TCP y el enrutamiento se basa en parámetros TCP/IP en lugar de en el protocolo HTTP.
Mesh
con recurso TCPRoute
(haz clic en la imagen para ampliarla)Antes de empezar
Asegúrate de completar las tareas descritas en el artículo Preparar la configuración con Envoy y cargas de trabajo sin proxy.
Configurar el recurso Mesh
En un archivo llamado
mesh.yaml
, cree la especificación de recursosmesh
.name: sidecar-mesh
Usa el archivo
mesh.yaml
para crear el recursomesh
.gcloud network-services meshes import sidecar-mesh \ --source=mesh.yaml \ --location=global
Configurar el servidor TCP
Esta parte de la guía no es específica de las nuevas APIs y utiliza los recursos de servicio backend, comprobación de estado y MIG.
Para hacer una demostración, crea un servicio de backend con VMs autoescaladas mediante grupos de instancias gestionados que sirvan un servicio TCP de prueba en el puerto 10000
.
Crea una plantilla de instancia de VM de Compute Engine con un servicio de prueba en el puerto
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 &"
Crea un grupo de instancias gestionadas basado en la plantilla.
gcloud compute instance-groups managed create tcp-td-mig-us-east1 \ --zone=ZONE \ --size=1 \ --template=tcp-td-vm-template
Define el puerto 10000 en los puertos con nombre del grupo de instancias gestionado que has creado.
gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1
--zone=ZONE
--named-ports=tcp:10000Crea una comprobación del estado.
gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
Crea una regla de cortafuegos para permitir las conexiones de comprobación del estado entrantes a las instancias de tu red.
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 servicio de backend global con un esquema de balanceo de carga
INTERNAL_SELF_MANAGED
y asocia la comprobación de estado al servicio de backend. En el ejemplo se usa el grupo de instancias gestionado que ejecuta el servicio TCP de muestra que has creado anteriormente.gcloud compute backend-services create tcp-helloworld-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=TCP \ --health-checks tcp-helloworld-health-check
Añade el grupo de instancias gestionado al servicio de backend.
gcloud compute backend-services add-backend tcp-helloworld-service \ --instance-group tcp-td-mig-us-east1 \ --instance-group-zone=ZONE \ --global
Configurar el enrutamiento con TCPRoute
En esta sección, configurará el enrutamiento.
En un archivo llamado
tcp_route.yaml
, crea la especificaciónTcpRoute
.Puedes usar
$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'
Con la especificación
tcp_route.yaml
, crea el recursoTcpRoute
.gcloud network-services tcp-routes import helloworld-tcp-route \ --source=tcp-route.yaml \ --location=global
Crear un cliente TCP con un sidecar de Envoy
Crea una plantilla de instancia y, a continuación, una VM con Envoy que esté conectada 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
Inicia sesión en la VM que has creado.
gcloud compute ssh td-vm-client
Verifica la conectividad con los servicios de prueba que has creado con la utilidad
netcat
.echo 'Hi TCP Service' | nc 10.0.0.1 10000
El servicio de prueba debe devolver la frase Hello from TCP
service. También deberías ver el texto que escribas devuelto por el servicio netcat
que se ejecuta en la máquina virtual remota.
Limitaciones
No puedes configurar una política de seguridad de Google Cloud Armor si usas el enrutamiento de tráfico TCP.