1. はじめに
この Codelab では、内部 TCP プロキシ ロードバランサと、サービス コンシューマとして Looker PSC から呼び出されるハイブリッド ネットワーク エンドポイント グループを使用して、H-VPN を介したオンプレミス postgres データベースへの下り(内向き)接続を行います。
Private Service Connect は Google Cloud ネットワーキング機能の一つで、コンシューマーが VPC ネットワーク内からマネージド サービスにプライベート接続でアクセスできるようにします。同様に、マネージド サービス プロデューサーがこれらのサービスを個別の VPC ネットワークにホストし、コンシューマーとのプライベート接続を提供できるようにします。たとえば、図 1 に示すように、Private Service Connect を使用して Looker にアクセスする場合、ユーザーがサービス コンシューマーで、Google がサービス プロデューサーです。
図 1.
下り(外向き)アクセス(リバース PSC)を使用すると、コンシューマはプロデューサーとして公開サービスを作成し、Looker がオンプレミス、VPC、マネージド サービス、ハイブリッドのエンドポイントにアクセスできるようにできます。サウスバウンド接続は、Looker PSC がデプロイされている場所に関係なく、任意のリージョンにデプロイできます(図 2 を参照)。
図 2.
学習内容
- ネットワークの要件
- Private Service Connect プロデューサー サービスを作成する
- Looker で Private Service Connect エンドポイントを作成する
- テスト接続を使用して Looker からオンプレミス Postgres データベースへの接続を確立する
必要なもの
- オーナー権限を持つ Google Cloud プロジェクト
- 既存の Looker PSC インスタンス
2. 作成するアプリの概要
プロデューサー ネットワーク looker-psc-demo を確立して、Private Service Connect(PSC)を介してサービスとして公開された内部 TCP プロキシ ロードバランサとハイブリッド NEG をデプロイします。オンプレミス データベースをデモするため、HA-VPN を使用して looker-psc-demo VPC に接続された on-prem-demo VPC をデプロイします。
Producer サービスへのアクセスを検証するには、次の操作を行います。
- プロデューサーのサービス アタッチメントに関連付けられた PSC エンドポイントを Looker で作成する
- Looker Console を使用して、オンプレミス postgres データベースへの接続検証を実行する
3. ネットワークの要件
以下に、プロデューサー ネットワークのネットワーク要件の詳細を示します。この Codelab のコンシューマは Looker PSC インスタンスです。
コンポーネント | 説明 |
VPC(looker-psc-demo) | カスタムモード VPC |
VPC(on-prem-demo) | カスタムモード VPC |
PSC NAT サブネット | コンシューマ VPC ネットワークからのパケットは送信元 NAT(SNAT)を使用して変換され、元の送信元 IP アドレスが、プロデューサーの VPC ネットワーク内にある NAT サブネットからの送信元 IP アドレスに変換されます。 |
PSC 転送ルールのサブネット | リージョン内部 TCP プロキシ ロードバランサの IP アドレスの割り振りに使用されます。 |
PSC NEG サブネット | ネットワーク エンドポイント グループの IP アドレスの割り振りに使用 |
プロキシ専用サブネット | 各ロードバランサのプロキシ には内部 IP アドレスが割り当てられます。プロキシからバックエンド VM またはエンドポイントに送信されるパケットには、プロキシ専用サブネットからの送信元 IP アドレスが含まれています。 |
ハイブリッド NEG | オンプレミスなどのクラウド サービスは、他の Cloud Load Balancing のバックエンドと同様に扱われます。主な違いは、ハイブリッド接続 NEG を使用してこれらのバックエンドのエンドポイントを構成することです。エンドポイントは、Cloud VPN や Cloud Interconnect などのハイブリッド接続プロダクトを使用してロードバランサが到達できる有効な IP:ポートの組み合わせにする必要があります。 |
バックエンド サービス | バックエンド サービスは、ロードバランサとバックエンド リソース間のブリッジとして機能します。このチュートリアルでは、バックエンド サービスがハイブリッド NEG に関連付けられています。 |
Cloud Router |
|
HA-VPN | Google Cloud VPC ネットワーク間の HA VPN。このトポロジでは、各ネットワークで HA VPN ゲートウェイを使用して、2 つの Google Cloud VPC ネットワークを接続できます。VPC ネットワークは、同じリージョンまたは複数のリージョンに配置できます。 |
Cloud NAT | インターネット下り(外向き)に on-prem-demo VPC によって使用されます。 |
4. Codelab トポロジ
5. 設定と要件
セルフペース型の環境設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_ID
と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell を起動する
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。
プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。
この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。
6. 始める前に
API を有効にする
Cloud Shell で、プロジェクト ID が設定されていることを確認します。
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
必要なサービスをすべて有効にします。
gcloud services enable compute.googleapis.com
7. プロデューサー VPC ネットワークを作成する
VPC ネットワーク
Cloud Shell で次の操作を行います。
gcloud compute networks create looker-psc-demo --subnet-mode custom
サブネットを作成する
PSC サブネットは、ネットワーク アドレス変換のために PSC サービス アタッチメントに関連付けられます。
Cloud Shell で、PSC NAT サブネットを作成します。
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
Cloud Shell で、プロデューサー転送ルールのサブネットを作成します。
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
Cloud Shell で、プロデューサーのリージョン プロキシ専用サブネットを作成します。
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
ロードバランサの IP アドレスを予約する
Cloud Shell で、ロードバランサの内部 IP アドレスを予約します。
gcloud compute addresses create hybrid-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
Cloud Shell で、予約済みの IP アドレスを表示します。
gcloud compute addresses describe hybrid-neg-lb-ip \
--region=$region | grep -i address:
出力例:
gcloud compute addresses describe hybrid-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
ハイブリッド NEG を設定する
ハイブリッド NEG を作成し、-network-endpoint-type を NON_GCP_PRIVATE_IP_PORT に設定します。
Cloud Shell で、オンプレミス データベースへのアクセスに使用するハイブリッド NEG を作成します。
gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--network=looker-psc-demo \
--zone=$zone
Cloud Shell で、チュートリアルの後半のステップで生成したオンプレミス データベースの IP:Port(192.168.10.4 とポート 5432)を使用して、ハイブリッド NEG を更新します。
gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
--add-endpoint=ip=192.168.10.4,port=5432 \
--zone=$zone
リージョン ヘルスチェックを作成する
Cloud Shell で、オンプレミス データベース ポート 5432 をプローブするヘルスチェックを作成します。
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
--region=$region \
--port=5432
ネットワーク ファイアウォール ポリシーとファイアウォール ルールを作成する
Cloud Shell で次の操作を行います。
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
次のファイアウォール ルールは、PSC NAT サブネット範囲からネットワーク内のすべてのインスタンスへのトラフィックを許可します。
Cloud Shell で次の操作を行います。
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. プロデューサー サービスを作成する
ロードバランサのコンポーネントを作成する
Cloud Shell で、バックエンド サービスを作成します。
gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region
Cloud Shell で、ハイブリッド NEG バックエンドをバックエンド サービスに追加します。
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region
Cloud Shell で、リクエストをバックエンド サービスに転送するターゲット TCP プロキシを作成します。
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
次の構文で、転送ルール(内部 TCP プロキシ ロードバランサ)を作成します。
Cloud Shell で次の操作を行います。
gcloud compute forwarding-rules create producer-hybrid-neg-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=hybrid-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=5432
サービス アタッチメントを作成する
Cloud Shell で、Service Attachment onpremdatabase1-svc-attachment を作成します。
gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
次に、Looker で PSC エンドポイントを構成するために、selfLink URI に記載されている Service Attachment を取得してメモします。
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
Cloud Shell で次の操作を行います。
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
期待される出力の例:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr
Cloud コンソールで、次の場所に移動します。
[ネットワーク サービス] → [Private Service Connect] → [公開サービス]
9. Looker で PSC エンドポイント接続を確立する
次のセクションでは、Cloud Shell で 1 つのドメインの –psc-service-attachment フラグを使用して、プロデューサー サービス アタッチメントを Looker Core PSC に関連付けます。
Cloud Shell で、次のパラメータを環境に合わせて更新して psc アソシエーションを作成します。
- INSTANCE_NAME: Looker(Google Cloud コア)インスタンスの名前。
- DOMAIN_1: onprem.database1.com
- SERVICE_ATTACHMENT_1: サービス アタッチメントの作成時にキャプチャされた URI(onpremdatabase1-svc-attachment)
- REGION: Looker(Google Cloud コア)インスタンスがホストされるリージョン。
Cloud Shell で次の操作を行います。
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
例:
gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region
Cloud Shell で、serviceAttachments の connectionStatus が「ACCEPTED」であることを確認して、Looker PSC インスタンス名で更新します。
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
例:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
例:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "looker.cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.14.18",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "onprem.database1.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-09-01T23:15:07.426372901Z"
}
Cloud コンソールで PSC エンドポイントを検証する
Cloud コンソールから PSC 接続を検証できます。
Cloud コンソールで、次の場所に移動します。
Looker → Looker インスタンス → 詳細
オンプレミス VPC ネットワークを作成する
VPC ネットワーク
Cloud Shell で次の操作を行います。
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
Postgresql データベース サブネットを作成する
Cloud Shell で次の操作を行います。
gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region
Cloud Shell で、onprem.database1.com に使用される内部 IPv4 アドレス(192.168.10.4)を予約します。
gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4
on-prem-demo VPC の Cloud Router を作成する
このチュートリアルでは、VM インスタンスに外部 IP アドレスがないため、ソフトウェア パッケージのインストールに Cloud NAT を使用します。
Cloud Shell で、Cloud NAT と HA-VPN で使用する Cloud Router を作成します。
gcloud compute routers create on-prem-cr \
--region=$region \
--network=on-prem-demo \
--asn=65002
Cloud Shell で、NAT ゲートウェイを作成します。
gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region
データベース テスト インスタンスを作成する
Looker への接続をテストして検証するために使用する postgres データベース インスタンスを作成します。
Cloud Shell でインスタンスを作成します。
gcloud compute instances create postgres-database \
--project=$project \
--zone=$zone \
--machine-type=e2-medium \
--subnet=database-subnet \
--no-address \
--private-network-ip 192.168.10.4 \
--image-family debian-12 \
--image-project debian-cloud \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
ネットワーク ファイアウォール ポリシーとファイアウォール ルールを作成する
Cloud Shell で次の操作を行います。
gcloud compute network-firewall-policies create on-prem-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy
IAP に VM インスタンスへの接続を許可するには、次のファイアウォール ルールを作成します。
- IAP を使用してアクセス可能にするすべての VM インスタンスに適用します。
- IP 範囲 35.235.240.0/20 からの上り(内向き)トラフィックを許可します。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。
Cloud Shell で次の操作を行います。
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
次のファイアウォール ルールは、プロキシ専用サブネット範囲からネットワーク内のすべてのインスタンスへのトラフィックを許可します。
Cloud Shell で次の操作を行います。
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp
10. ハイブリッド接続
次のセクションでは、Border Gateway Protocol(BGP)を使用して、Virtual Private Cloud(VPC)とピア ネットワーク間でルートを動的に交換できる Cloud Router を作成します。
Cloud Router は、Cloud VPN トンネルを介して BGP セッションを設定してネットワークを接続できます。新しいサブネット IP アドレス範囲を自動的に学習し、ピア ネットワークに通知します。
次の手順では、looker-psc-demo VPC と on-prem-demo VPC の間に HA VPN をデプロイして、onprem.database1.com へのハイブリッド NEG 接続を示します。
looker-psc-demo の HA VPN GW を作成します。
各ゲートウェイが作成されると、ゲートウェイ インターフェースごとに 1 つずつ、自動的に 2 つの外部 IPv4 アドレスが割り振られます。
Cloud Shell で、HA VPN GW を作成します。
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
--network=looker-psc-demo \
--region=$region
on-prem-demo の HA VPN GW を作成する
各ゲートウェイが作成されると、ゲートウェイ インターフェースごとに 1 つずつ、自動的に 2 つの外部 IPv4 アドレスが割り振られます。
Cloud Shell で、HA VPN GW を作成します。
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
HA VPN GW の作成を確認する
コンソールを使用して、[ハイブリッド接続]、[VPN]、[Cloud VPN ゲートウェイ] の順に移動します。
looker-psc-demo の Cloud Router を作成する
Cloud Shell で、Cloud Router を作成します。
gcloud compute routers create looker-psc-demo-cr \
--region=$region \
--network=looker-psc-demo\
--asn=65001
looker-psc-demo 用の VPN トンネルを作成する
各 HA VPN ゲートウェイに 2 つの VPN トンネルを作成します。
VPN tunnel0 を作成する
Cloud Shell で、tunnel0 を作成します。
gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 0
VPN tunnel1 を作成する
Cloud Shell で、tunnel1 を作成します。
gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 1
on-prem-demo 用の VPN トンネルを作成する
各 HA VPN ゲートウェイに 2 つの VPN トンネルを作成します。
VPN tunnel0 を作成する
Cloud Shell で、tunnel0 を作成します。
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 0
VPN tunnel1 を作成する
Cloud Shell で、tunnel1 を作成します。
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 1
VPN トンネルの作成を確認する
コンソールを使用して、[ハイブリッド接続]、[VPN]、[Cloud VPN トンネル] の順に移動します。
11. BGP ネイバーを確立する
looker-psc-demo の BGP インターフェースとピアリングを作成する
Cloud Shell で、BGP インターフェースを作成します。
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel0 \
--region $region
Cloud Shell で BGP ピアを作成します。
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region $region
Cloud Shell で、BGP インターフェースを作成します。
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel1 \
--region $region
Cloud Shell で BGP ピアを作成します。
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region $region
on-prem-demo の BGP インターフェースとピアリングを作成する
Cloud Shell で、BGP インターフェースを作成します。
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel0-to-looker-psc-demo \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region $region
Cloud Shell で BGP ピアを作成します。
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel0 \
--interface if-tunnel1-to-looker-psc-demo \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region $region
Cloud Shell で、BGP インターフェースを作成します。
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel1-to-looker-psc-demo \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region $region
Cloud Shell で、BGP ピアを作成します。
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel1\
--interface if-tunnel2-to-looker-psc-demo \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region $region
[ハイブリッド接続] > [VPN] に移動して、VPN トンネルの詳細を表示します。
looker-psc-demo が HA VPN 経由で学習したルートを検証する
HA VPN トンネルと BGP セッションが確立されたので、Cloud Router のデフォルトの動作として、サブネット ルートをアドバタイズします。looker-psc-demo で学習したルートを表示します。
コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [looker-psc-demo] → [ルート] → [リージョン] → [表示] に移動します。
looker-psc-demo が on-prem-demo VPC からデータベース サブネット 192.168.10.0/28 を学習したことを確認します。
on-prem-demo VPC が HA VPN 経由でルートを学習したことを確認する
Cloud Router のデフォルトの動作はすべてのサブネットをアドバタイズするため、プロキシ専用サブネットが BGP 経由でアドバタイズされます。ハイブリッド NEG は、サーバー onprem.database1.com と通信するときに、プロキシ専用サブネットを送信元アドレスとして使用します。
on-prem-demo が looker-psc-demo からプロキシ専用サブネット 10.10.10.0/24 を学習したことを確認します。
コンソールを使用して、[VPC ネットワーク] > [VPC ネットワーク] > [on-prem-demo] > [ルート] > [リージョン] > [表示] に移動します。
12. Looker postgres データベースの作成
次のセクションでは、Cloud Shell を使用して postgres-database VM に SSH 接続します。
Cloud Shell で、postgres-database インスタンスに ssh を実行します。
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
OS 内で、postgres-database インスタンスの IP アドレス(ens4)を特定してメモします。
ip a
例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 192.168.10.4/32 metric 100 scope global dynamic ens4
valid_lft 66779sec preferred_lft 66779sec
inet6 fe80::4001:c0ff:fea8:a04/64 scope link
valid_lft forever preferred_lft forever
OS 内で postgresql にログインします。
sudo -u postgres psql postgres
OS 内で、パスワード プロンプトを入力します。
\password postgres
OS 内で、パスワードを postgres に設定します(同じパスワードを 2 回入力します)。
postgres
例:
user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
OS 内で postgres を終了します。
\q
例:
postgres=# \q
user@postgres-database:~$
次のセクションでは、pg_hba.conf ファイルの IPv4 ローカル接続に、postgres データベース インスタンスの IP(192.168.10.4)とプロキシ専用サブネット(10.10.10.0/24)を挿入します。
sudo nano /etc/postgresql/15/main/pg_hba.conf
次のスクリーンショットは、更新が完了した状態です。
次のセクションで、postgresql.conf のコメントを解除して、次のスクリーンショットのようにすべての「*」IP アドレスをリッスンするようにします。
sudo nano /etc/postgresql/15/main/postgresql.conf
プログラム開始前:
申し込みの後:
OS 内で postgresql サービスを再起動します。
sudo service postgresql restart
OS 内で、postgresql のステータスがアクティブであることを確認します。
sudo service postgresql status
例:
OS 内で、postgresql のステータスがアクティブであることを確認します。
user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 20486 (code=exited, status=0/SUCCESS)
CPU: 2ms
Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
13. postgres データベースを作成する
次のセクションでは、Looker とオンプレミス間の接続を検証するために使用される postgres_looker という名前の postgres データベースとスキーマ looker_schema を作成します。
OS 内で postgres にログインします。
sudo -u postgres psql postgres
OS 内でデータベースを作成します。
create database postgres_looker;
OS 内でデータベースを一覧表示します。
\l
OS 内で、パスワード postgreslooker を使用してユーザー postgres_looker を作成します。
create user postgres_looker with password 'postgreslooker';
OS 内でデータベースに接続します。
\c postgres_looker;
OS 内でスキーマ looker-schema を作成し、Cloud Shell プロンプトに戻ります。
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Exit from the OS, returning you to cloud shell:
\q
例:
user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.
postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
postgres_looker | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
(4 rows)
postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q
14. Looker を Postgres postgres-database と統合する
次のセクションでは、Looker Console を使用して、オンプレミスの postgres データベース インスタンスへのデータベース接続を作成します。
[ADMIN] → [DATABASE] → [CONNECTIONS] → [ADD CONNECTION] を選択します。
以下のスクリーンショットに沿って接続の詳細を入力し、[接続] を選択します。
接続が構成されました
15. Looker の接続を確認する
次のセクションでは、Looker の「test」アクションと TCPDUMP を使用して、on-prem-vpc の postgres-database への Looker の接続を検証する方法について説明します。
セッションがタイムアウトした場合は、Cloud Shell から postgres-database にログインします。
Cloud Shell で次の操作を行います。
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
OS から、プロキシ専用サブネット 10.10.10.0/24 を使用して TCPDUMP フィルタを作成します。
sudo tcpdump -i any net 10.10.10.0/24 -nn
データ接続に移動 [ADMIN] → [DATABASE] → [CONNECTIONS] → [postgres-database] → [Test]
[Test] を選択すると、Looker は以下のように postgres データベースに接続します。
クリーンアップ
1 つの Cloud Shell ターミナルからラボ コンポーネントを削除する
gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q
gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q
gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q
gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q
gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q
gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q
gcloud compute instances delete postgres-database --zone=$zone -q
gcloud compute addresses delete on-prem-database1-ip --region=$region -q
gcloud compute networks subnets delete database-subnet --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy --name=on-prem-demo --global-firewall-policy -q
gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q
gcloud compute networks delete on-prem-demo -q
gcloud compute networks delete looker-psc-demo -q
16. 完了
これで、Private Service Connect を活用した Looker Console を使用して、HA-VPN を介したオンプレミス データベースへの接続を正常に構成し、検証できました。
プロデューサー インフラストラクチャを作成し、プロデューサー サービスへの接続を許可するハイブリッド NEG、プロデューサー サービス、Looker PSC エンドポイントを作成する方法を学習しました。
Cosmopup はコードラボが大好きです。
次のステップ
以下の Codelab をご覧ください。
- Private Service Connect でサービスを公開して使用する
- Private Service Connect と内部 TCP プロキシ ロードバランサを使用して、ハイブリッド ネットワーキング経由でオンプレミス サービスに接続する
- 公開されているすべての Private Service Connect Codelab にアクセスする