Looker PSC サウスバウンド ハイブリッド NEG からオンプレミス

1. はじめに

この Codelab では、内部 TCP プロキシ ロードバランサと、サービス ユーザーとして Looker PSC から呼び出されるハイブリッド ネットワーク エンドポイント グループを使用して、H-VPN を介してオンプレミス Postgres データベースへのサウスバウンド接続を行います。

Private Service Connect は Google Cloud ネットワーキング機能の一つで、コンシューマーが VPC ネットワーク内からマネージド サービスにプライベート接続でアクセスできるようにします。同様に、マネージド サービス プロデューサーがこれらのサービスを個別の VPC ネットワークにホストし、コンシューマーとのプライベート接続を提供できるようにします。たとえば、図 1 に示すように、Private Service Connect を使用して Looker にアクセスする場合、ユーザーがサービス コンシューマーで、Google がサービス プロデューサーです。

図 1.

145ea4672c3a3b14.png

下り(南向き)アクセス(逆 PSC とも呼ばれます)により、コンシューマーはパブリッシュされたサービスをプロデューサーとして作成し、Looker がオンプレミス、VPC、マネージド サービス、ハイブリッドのエンドポイントにアクセスできるようにします。図 2 に示すように、Looker PSC のデプロイ場所に関係なく、サウスバウンド接続は任意のリージョンにデプロイできます。

図 2.

259493afd914f68b.png

学習内容

  • ネットワークの要件
  • Private Service Connect プロデューサー サービスを作成する
  • Looker で Private Service Connect エンドポイントを作成する
  • テスト接続を使用して、Looker からオンプレミスの postgres データベースへの接続を確立する

必要なもの

def88091b42bfe4d.png

2. 作成するアプリの概要

プロデューサー ネットワーク looker-psc-demo を確立して、内部 TCP プロキシ ロードバランサと、Private Service Connect(PSC)を介してサービスとして公開されるハイブリッド NEG をデプロイします。オンプレミス データベースをデモするために、HA-VPN を使用して looker-psc-demo VPC に接続された on-prem-demo VPC をデプロイします。

Producer サービスへのアクセスを検証するには、次の操作を行います。

  • プロデューサー サービス アタッチメントに関連付けられた PSC エンドポイントを Looker に作成する
  • Looker コンソールを使用して、オンプレミスの postgres データベースへの接続の検証を行います。

3. ネットワークの要件

この Codelab のプロデューサー ネットワークのネットワーク要件の内訳は次のとおりです。この Codelab のコンシューマーは Looker PSC インスタンスです。

コンポーネント

説明

VPC(looker-psc-demo)

カスタムモード VPC

VPC(オンプレミス デモ)

カスタムモード 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

  • Cloud NAT は、コントロール プレーン機能に Cloud Router を使用しますが、BGP セッションの管理には使用しません。
  • Cloud Router は、psc-looker-demo VPC と オンプレミス-demo VPC の間の HA-VPN 確立用に確立された BGP に使用されます。

HA-VPN

Google Cloud VPC ネットワーク間の HA VPN。このトポロジでは、各ネットワークで HA VPN ゲートウェイを使用して、2 つの Google Cloud VPC ネットワークを接続できます。VPC ネットワークは、同じリージョンに配置することも、複数のリージョンに配置することもできます。

Cloud NAT

オンプレミス デモ VPC でインターネット下り(外向き)に使用されます

4. Codelab のトポロジ

79aeb28b38f237da.png

5. 設定と要件

セルフペース型の環境設定

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

Cloud Shell を起動する

Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

55efc1aaa7a4d3ad.png

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

7ffe5cbb04455448.png

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 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:ポート(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 内で、サービス アタッチメント 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

次に、projects で始まる selfLink URI にリストされているサービス アタッチメントを取得してメモし、Looker で PSC エンドポイントを構成します。

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] → [公開済みサービス]

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Looker で PSC エンドポイント接続を確立する

次のセクションでは、単一ドメインの Cloud Shell で –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 インスタンス] → [詳細]

2d4684d722d31e4b.png

993cdaf748f4c030.png

オンプレミス 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(192.168.10.4)に使用する内部 IPv4 アドレスを予約します。

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

オンプレミス デモ 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-database インスタンスを作成します。

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

オンプレミス デモ用の 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 ゲートウェイ] に移動します。

7f1b504616504866.png

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 トンネル 0 を作成する

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 トンネル 1 を作成する

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

オンプレミス デモ用の VPN トンネルを作成する

各 HA VPN ゲートウェイに 2 つの VPN トンネルを作成します。

VPN トンネル 0 を作成する

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 トンネル 1 を作成する

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 トンネル] に移動します。

c2fcb340a7614070.png

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

オンプレミス-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 トンネルの詳細を表示します。

78ab590317919bf5.png

looker-psc-demo が HA VPN 経由でルートを学習したことを確認する

HA VPN トンネルと BGP セッションが確立されたので、Cloud Router のデフォルトの動作はサブネット ルートをアドバタイズすることです。looker-psc-demo の学習済みルートを表示します。

コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [looker-psc-demo] → [ルート] → [リージョン] → [表示] に移動します。

looker-psc-demo がオンプレミス デモ VPC から database-subnet 192.168.10.0/28 を学習したことを確認します。

c11a11ed8b0491c8.png

オンプレミス デモ VPC が HA VPN 経由でルートを学習したことを確認する

Cloud Router のデフォルトの動作はすべてのサブネットをアドバタイズすることであるため、プロキシ専用サブネットが BGP 経由でアドバタイズされます。ハイブリッド NEG は、server.onprem.database1.com のサーバーと通信するときに、プロキシ専用サブネットを送信元アドレスとして使用します。

オンプレミス デモが looker-psc-demo からプロキシ専用サブネット 10.10.10.0/24 を学習したことを確認します。

コンソールで、[VPC ネットワーク] → [VPC ネットワーク] → [オンプレミス デモ] → [ルート] → [リージョン] → [表示] に移動します。

b0073faed026931f.png

12. Looker postgres-database の作成

次のセクションでは、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:~$ 

次のセクションでは、IPv4 ローカル接続の下の pg_hba.conf ファイルに postgres-database インスタンスの IP(192.168.10.4)とプロキシ専用サブネット(10.10.10.0/24)を挿入します。

sudo nano /etc/postgresql/15/main/pg_hba.conf

次のスクリーンショットは、更新が完了した状態を示しています。eaff2ed6d27fa7cc.png

次のセクションで、次のスクリーンショットのように、すべての「*」IP アドレスをリッスンするように postgresql.conf のコメントを解除します。

sudo nano /etc/postgresql/15/main/postgresql.conf

変更前:

65e0b1074dc48644.png

変更後:

14a0d1fa5455e23e.png

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 コンソールを使用して、オンプレミスの postgres-database インスタンスへのデータベース接続を作成します。

[ADMIN] → [DATABASE] → [CONNECTIONS] に移動し、[ADD CONNECTION] を選択します。

以下のスクリーンショットに従って接続の詳細を入力し、[接続] を選択します。

5900fdf0b698cbfc.png

これで接続が構成されました

4817157fd3b1277e.png

15. Looker の接続を検証する

次のセクションでは、Looker の「test」アクションと TCPDUMP を使用して、オンプレミス 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] に移動します。

[テスト] を選択すると、Looker は次のように postgres-database に接続します。

774f9313ece41034.png

クリーンアップ

単一の 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 コンソールを使用して、HA-VPN 経由でオンプレミス データベースへの接続を構成し、検証しました。

プロデューサー インフラストラクチャを作成し、プロデューサー サービスへの接続を可能にするハイブリッド NEG、プロデューサー サービス、Looker PSC エンドポイントの作成方法を学習しました。

Cosmopup はコードラボが大好きです。

c911c127bffdee57.jpeg

次のステップ

以下の Codelab をご覧ください。

参考資料と動画

リファレンス ドキュメント