Configurer les services TCP
Traffic Director avec services TCP et TCPRoute
est semblable à la configuration de proxy side-car Envoy avec des services HTTP. Les exceptions sont que le service de backend fournit un service TCP et le routage est basé sur les paramètres TCP/IP plutôt que sur le protocole HTTP.
Avant de commencer
Assurez-vous que votre déploiement remplit les conditions préalables décrites dans les guides suivants :
- Préparer la configuration de Traffic Director avec Envoy
- Guides de configuration du routage du service Traffic Director
Configurer la ressource Mesh
Dans un fichier nommé
mesh.yaml
, créez la spécification de ressourcemesh
.name: sidecar-mesh
Créez la ressource
mesh
à l'aide du fichiermesh.yaml
.gcloud network-services meshes import sidecar-mesh \ --source=mesh.yaml \ --location=global
Configurer le serveur TCP
Cette partie du guide n'est pas spécifique aux nouvelles API et utilise les ressources de service de backend, de vérification d'état et de MIG existantes.
À des fins de démonstration, vous créez un service de backend avec des VM avec autoscaling à l'aide de groupes d'instances gérés qui diffusent un service TCP de test sur le port 10000
.
Créez un modèle d'instance de VM Compute Engine avec un service de test sur le 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 &"
Créez un groupe d'instances géré basé sur le modèle.
gcloud compute instance-groups managed create tcp-td-mig-us-east1 \ --zone=ZONE \ --size=1 \ --template=tcp-td-vm-template
Définissez les ports nommés du groupe d'instances géré créé sur le port 10000.
gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1
--zone=ZONE
--named-ports=tcp:10000Créez une vérification d'état.
gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
Créez une règle de pare-feu pour autoriser les connexions de vérification d'état entrantes aux instances de votre réseau.
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
Créez un service de backend global avec un schéma d'équilibrage de charge de
INTERNAL_SELF_MANAGED
et associez la vérification d'état au service de backend. L'exemple utilise le groupe d'instances géré qui exécute l'exemple de service TCP que vous avez créé précédemment.gcloud compute backend-services create tcp-helloworld-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=TCP \ --health-checks tcp-helloworld-health-check
Ajoutez le groupe d'instances géré au service de backend.
gcloud compute backend-services add-backend tcp-helloworld-service \ --instance-group tcp-td-mig-us-east1 \ --instance-group-zone=ZONE \ --global
Configurer le routage avec TCPRoute
Dans cette section, vous allez configurer le routage.
Dans un fichier nommé
tcp_route.yaml
, créez la spécificationTcpRoute
.Vous pouvez utiliser
$PROJECT_ID
ou$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'
À l'aide de la spécification
tcp_route.yaml
, créez la ressourceTcpRoute
.gcloud network-services tcp-routes import helloworld-tcp-route \ --source=tcp-route.yaml \ --location=global
Créer un client TCP avec un side-car Envoy
Créez un modèle d'instance, puis créez une VM avec Envoy connectée à 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
Connectez-vous à la VM que vous avez créée.
gcloud compute ssh td-vm-client
Vérifiez la connectivité aux services de test que vous avez créés à l'aide de l'utilitaire
netcat
.echo 'Hi TCP Service' | nc 10.0.0.1 10000
Le service de test doit renvoyer l'expression Hello from TCP service. Vous devriez également voir tout texte saisi renvoyé par le service netcat
qui s'exécute sur la VM distante.