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 クライアントを作成する
インスタンス テンプレートを作成し、Cloud Service Mesh に接続された Envoy で 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
リソースを一覧表示するをご覧ください。この機能はプレビュー中です。