Configure serviços TCP
Este guia explica como configurar a Cloud Service Mesh para usar serviços TCP e recursos TCPRoute
.
A Cloud Service Mesh com serviços TCP e TCPRoute
é semelhante à configuração do proxy sidecar do Envoy com serviços HTTP. As exceções são que
o serviço de back-end fornece um serviço TCP e o encaminhamento baseia-se em parâmetros TCP/IP, em vez de no protocolo HTTP.
Mesh
recurso com o recurso TCPRoute
(clique para aumentar)Antes de começar
Certifique-se de que conclui as tarefas descritas no artigo Prepare-se para a configuração com o Envoy e cargas de trabalho sem proxy.
Configure o recurso Mesh
Num ficheiro denominado
mesh.yaml
, crie a especificação do recursomesh
.name: sidecar-mesh
Use o ficheiro
mesh.yaml
para criar o recursomesh
.gcloud network-services meshes import sidecar-mesh \ --source=mesh.yaml \ --location=global
Configure o servidor TCP
Esta parte do guia não é específica das novas APIs e usa o serviço de back-end, a verificação de estado e os recursos do MIG existentes.
Para fins de demonstração, cria um serviço de back-end com VMs com escala automática
usando grupos de instâncias geridas
que servem um serviço TCP de teste na porta 10000
.
Crie um modelo de instância de VM do Compute Engine com um serviço de teste na 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 &"
Crie um grupo de instâncias gerido com base no modelo.
gcloud compute instance-groups managed create tcp-td-mig-us-east1 \ --zone=ZONE \ --size=1 \ --template=tcp-td-vm-template
Defina as portas com nome no grupo de instâncias geridas criado para a porta 10000.
gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1
--zone=ZONE
--named-ports=tcp:10000Crie uma verificação de funcionamento.
gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
Crie uma regra de firewall para permitir ligações de verificações de estado de funcionamento de entrada a instâncias na sua rede.
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
Crie um serviço de back-end global com um esquema de balanceamento de carga de
INTERNAL_SELF_MANAGED
e anexe a verificação de funcionamento ao serviço de back-end. O exemplo usa o grupo de instâncias gerido que executa o serviço TCP de exemplo que criou anteriormente.gcloud compute backend-services create tcp-helloworld-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=TCP \ --health-checks tcp-helloworld-health-check
Adicione o grupo de instâncias gerido ao serviço de back-end.
gcloud compute backend-services add-backend tcp-helloworld-service \ --instance-group tcp-td-mig-us-east1 \ --instance-group-zone=ZONE \ --global
Configure o encaminhamento com o TCPRoute
Nesta secção, configura o encaminhamento.
Num ficheiro denominado
tcp_route.yaml
, crie a especificaçãoTcpRoute
.Pode usar o
$PROJECT_ID
ou 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'
Usando a especificação
tcp_route.yaml
, crie o recursoTcpRoute
.gcloud network-services tcp-routes import helloworld-tcp-route \ --source=tcp-route.yaml \ --location=global
Crie um cliente TCP com um sidecar do Envoy
Crie um modelo de instância e, em seguida, crie uma VM com o Envoy que esteja ligada à malha de serviço na nuvem.
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
Inicie sessão na VM que criou.
gcloud compute ssh td-vm-client
Valide a conetividade aos serviços de teste que criou através do utilitário
netcat
.echo 'Hi TCP Service' | nc 10.0.0.1 10000
O serviço de teste deve devolver a expressão Hello from TCP
service. Também deve conseguir ver qualquer texto que escreva devolvido pelo serviço netcat
em execução na VM remota.
Limitações
Não pode configurar uma política de segurança do Google Cloud Armor se estiver a usar o encaminhamento de tráfego TCP.