TCP 서비스 설정
이 가이드에서는 TCP 서비스 및 TCPRoute
리소스를 사용하도록 Cloud Service Mesh를 설정하는 방법을 설명합니다.
TCP 서비스 및 TCPRoute
가 사용되는 Cloud Service Mesh는 HTTP 서비스가 사용되는 Envoy 사이드카 프록시 구성과 비슷합니다. 예외적으로 백엔드 서비스가 TCP 서비스를 제공하고 라우팅은 HTTP 프로토콜 대신 TCP/IP 파라미터를 기반으로 합니다.
시작하기 전에
Envoy 및 프록시리스 워크로드 설정 준비에 설명된 작업을 완료해야 합니다.
Mesh
리소스 구성
mesh.yaml
이라는 파일에서mesh
리소스 사양을 만듭니다.name: sidecar-mesh
mesh.yaml
파일을 사용해서mesh
리소스를 만듭니다.gcloud network-services meshes import sidecar-mesh \ --source=mesh.yaml \ --location=global
TCP 서버 구성
이 가이드는 새 API에 한정되지 않으며 기존 백엔드 서비스, 상태 점검, MIG 리소스를 사용합니다.
여기서는 데모용으로 포트 10000
에서 테스트 TCP 서비스를 제공하는 관리형 인스턴스 그룹을 사용하여 자동 확장된 VM으로 백엔드 서비스를 만듭니다.
포트
10000
에서 테스트 서비스를 사용하여 Compute Engine VM 인스턴스 템플릿을 만듭니다.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 &"
템플릿을 기반으로 관리형 인스턴스 그룹을 만듭니다.
gcloud compute instance-groups managed create tcp-td-mig-us-east1 \ --zone=ZONE \ --size=1 \ --template=tcp-td-vm-template
생성된 관리형 인스턴스 그룹에서 이름이 지정된 포트를 포트 10000으로 설정합니다.
gcloud compute instance-groups set-named-ports tcp-td-mig-us-east1
--zone=ZONE
--named-ports=tcp:10000상태 점검을 만듭니다.
gcloud compute health-checks create tcp tcp-helloworld-health-check --port 10000
네트워크 인스턴스에 들어오는 상태 점검 연결을 허용하는 방화벽 규칙을 만듭니다.
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
INTERNAL_SELF_MANAGED
의 부하 분산 스킴과 함께 전역 백엔드 서비스를 만들고 백엔드 서비스에 상태 확인을 연결합니다. 이 예시에서는 이전에 만든 샘플 TCP 서비스를 실행하는 관리형 인스턴스 그룹이 사용됩니다.gcloud compute backend-services create tcp-helloworld-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=TCP \ --health-checks tcp-helloworld-health-check
관리형 인스턴스 그룹을 백엔드 서비스에 추가합니다.
gcloud compute backend-services add-backend tcp-helloworld-service \ --instance-group tcp-td-mig-us-east1 \ --instance-group-zone=ZONE \ --global
TCPRoute
로 라우팅 설정
이 섹션에서는 라우팅을 설정합니다.
tcp_route.yaml
이라는 파일에서TcpRoute
사양을 만듭니다.$PROJECT_ID
또는$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'
tcp_route.yaml
사양을 사용해서TcpRoute
리소스를 만듭니다.gcloud network-services tcp-routes import helloworld-tcp-route \ --source=tcp-route.yaml \ --location=global
Envoy 사이드카로 TCP 클라이언트 만들기
인스턴스 템플릿을 만든 후 Envoy가 Cloud Service Mesh에 연결된 VM을 만듭니다.
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
만든 VM에 로그인합니다.
gcloud compute ssh td-vm-client
netcat
유틸리티를 사용하여 생성한 테스트 서비스와의 연결을 확인합니다.echo 'Hi TCP Service' | nc 10.0.0.1 10000
테스트 서비스는 Hello from TCP service라는 문구를 반환해야 합니다. 또한 원격 VM에서 실행 중인 netcat
서비스에서 반환된 모든 텍스트를 볼 수 있어야 합니다.
다음 단계
Mesh
또는Gateway
리소스와 연결된 경로 리소스 나열에 관한 자세한 내용은Route
리소스 나열을 참조하세요. 이 기능은 미리보기 버전으로 제공됩니다.