1. 簡介
Looker (Google Cloud Core) 可透過 Google Cloud 控制台,簡化並簡化 Looker 執行個體的佈建、設定與管理作業。某些執行個體的管理工作也可能會透過控制台執行。
Looker (Google Cloud Core) 執行個體有三種可用的網路設定:
- 公開:網路連線使用可以透過外部網際網路存取的 IP 位址。
- 私人:網路連線會使用託管於 Google 的內部虛擬私有雲 (VPC) IP 位址。
- 公開與私人:網路連線使用公開 IP 位址和私人 IP 位址,而傳入流量會透過公開 IP 轉送,傳出流量則會透過私人 IP 轉送。
在本教學課程中,您將部署全方位的端對端私人網路 ,以便讓 Looker 連線至地端部署虛擬私有雲 (透過高可用性 VPN),進行複製的連接作業,滿足您對多雲端和地端部署連線的需求。
Looker (Google Cloud Core) 支援私人 IP,供符合下列條件的執行個體使用:
- 執行個體版本必須為 Enterprise 或 Embed。
建構項目
在這個教學課程中,您會透過獨立虛擬私有雲,在具備混合式連線能力,可連線至多雲端和地端部署系統的情況下,建構全方位的私有 Looker 網路部署作業。
您會設定名為 on-prem-vpc
的虛擬私有雲網路,代表地端部署環境。對於您的部署作業,不會有 on-prem-vpc,而是會使用連線至內部部署資料中心或雲端供應商的混合式網路。
以下是本教學課程的主要步驟
- 在 us-central1 中建立獨立虛擬私有雲
- 將 IP 子網路分配給私人服務存取權
- 在獨立虛擬私有雲中部署 Looker 執行個體
- 建立 on-prem-vpc 和混合式網路
- 透過 BGP 通告及驗證 Looker IP 範圍
- 整合並驗證 Looker 和 Postgresql 資料通訊
圖 1
課程內容
- 如何建立虛擬私有雲和相關聯的混合式網路
- 如何在獨立虛擬私有雲中部署 Looker
- 如何建立 on-prem-vpc 和相關的混合式網路
- 透過高可用性 VPN 的 analytics-vps 連線至 On-prem-vpc
- 如何透過混合型網路通告 Looker 子網路
- 如何監控混合型網路基礎架構
- 如何將 Postgresql 資料庫與 Looker Cloud Core 整合
軟硬體需求
- Google Cloud 專案
IAM 權限
2. 事前準備
更新專案以支援教學課程
本教學課程將使用 $variables,協助在 Cloud Shell 中實作 gcloud 設定。
在 Cloud Shell 中執行以下操作:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. 虛擬私有雲設定
建立 analytics-vpc
在 Cloud Shell 中執行下列操作:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
建立 on-prem-vpc
在 Cloud Shell 中執行以下操作:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
建立 Postgresql 資料庫子網路
在 Cloud Shell 中執行以下操作:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Cloud Router 和 NAT 設定
由於資料庫 VM 執行個體沒有外部 IP 位址,因此本教學課程會使用 Cloud NAT 安裝軟體套件。
在 Cloud Shell 中建立 Cloud Router。
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
在 Cloud Shell 中建立 NAT 閘道。
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
建立資料庫測試執行個體
建立 postgres-database 執行個體,將用於測試及驗證 Looker 連線能力。
在 Cloud Shell 中建立執行個體。
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
建立防火牆規則
如要允許 IAP 連線至您的 VM 執行個體,請建立下列防火牆規則:
- 適用於您要透過 IAP 存取的所有 VM 執行個體。
- 允許來自 IP 範圍 35.235.240.0/20 的輸入流量。這個範圍包含 IAP 用於 TCP 轉送的所有 IP 位址。
透過 Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. 私人服務存取權
私人服務存取權可讓您在虛擬私有雲網路與 Google 或第三方擁有的網路之間進行私人連線。Google 或第三方 (提供服務的實體) 也稱為「服務供應商」。Looker Cloud Core 是服務製作者。
私人連線可讓您 VPC 網路中的 VM 執行個體和您存取的服務能夠透過內部 IP 位址進行專屬通訊。
整體來說,如要使用私人服務存取權,您必須在虛擬私有雲網路中分配 IP 位址範圍 (CIDR 區塊),然後與服務供應商建立私人連線。
為服務分配 IP 位址範圍
建立私人連線之前,您必須分配要給服務供應商的虛擬私人雲端網路使用的 IPv4 位址範圍。這麼做可確保您的虛擬私有雲網路與服務供應商的網路之間沒有 IP 位址衝突。
在虛擬私人雲端網路中分配的範圍無法用於子網路 (主要與次要範圍) 及自訂靜態路徑的目的地。
不支援使用 IPv6 位址範圍搭配私人服務存取權。
在 Google Cloud 控制台中,為您的專案啟用 Service Networking API。啟用 API 後,您可能需要重新整理控制台頁面,確認 API 已啟用。
建立 IP 分配
如要指定位址範圍與前置字串長度 (子網路遮罩),請使用 addresses 和 prefix-length 標記。例如,如要分配 CIDR 區塊 192.168.0.0/22,請將位址指定為 192.168.0.0,並將前置字串長度指定為 22。
在 Cloud Shell 中,建立 Looker 的 IP 分配方式。
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
在 Cloud Shell 中驗證 IP 分配。
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
範例:
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
建立私人連線
建立分配範圍後,您可以建立與服務供應商 (Looker Cloud Core) 的私人連線。建立 Looker 執行個體後,私人連線會在您的虛擬私有雲網路與服務供應商的網路之間建立虛擬私有雲端網路對等互連連線。
私人連線是您的虛擬私有雲網路與服務供應商之間的一對一關係。如果單一服務供應商提供多項服務,針對供應商的所有服務,您只需要一個私人連線即可。
如要連線至多個服務供應商,請為每個服務供應商使用不重複的分配範圍。這個做法可協助您針對各個服務供應商,管理網路設定,例如路徑和防火牆規則。
在 Cloud Shell 中建立私人連線,並記下作業名稱。
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
範例:
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
在 Cloud Shell 中檢查作業是否成功,並將 OPERATION_NAME 替換為先前步驟產生的名稱。
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
範例:
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
5. 建立 Looker (Google Cloud Core) 執行個體
事前準備
在 Google Cloud 控制台中為專案啟用 Looker API。啟用 API 時,您可能需要重新整理控制台頁面,確認 API 是否已啟用。
設定 OAuth 用戶端以驗證及存取執行個體。
在下一節中,您需要使用 OAuth 用戶端 ID 和密鑰建立 Looker 例項。
不需要已授權的 JavaScript 來源和重新導向 URI。
在 Cloud 控制台中,根據提供的螢幕截圖建立執行個體。
前往「查詢」→「建立執行個體」
填入先前建立的 OAuth 用戶端 ID 和密鑰。
選取「建立」
正在建立執行個體,系統會將您重新導向至控制台的「Instances」(執行個體) 頁面。您可能需要重新整理頁面,才能查看新執行個體的狀態。您也可以按一下 Google Cloud 控制台選單中的通知圖示,查看執行個體建立活動。建立執行個體時,Google Cloud 控制台選單中的通知圖示會顯示載入圖示。
產生 Looker 執行個體後,系統會產生執行個體網址。請記下網址。
6. 更新 OAuth 2.0 用戶端 ID
在下一個章節中,您需要將 /oauth2callback
附加至執行個體網址,藉此更新先前建立的 OAuth 用戶端 ID 已授權的重新導向 URI。
完成後,您可以使用執行個體網址登入 Looker UI。
在 Cloud 控制台中,前往「API 和服務」→「憑證」
選取 OAuth 2.0 用戶端 ID,然後更新執行個體網址,範例如下:
7. 驗證 Looker 存取權
在 Cloud 控制台中,前往 Looker 並選取執行個體網址,以便開啟 Looker UI。
啟動後,您會看到下方螢幕截圖中的到達網頁,確認您有權存取 Looker Cloud Core。
8. 混合式連線
在下一節中,您將建立 Cloud Router,以便使用邊界閘道通訊協定 (BGP),在虛擬私有雲 (VPC) 和對等互連網路之間動態交換路徑。
Cloud Router 可以透過 Cloud VPN 通道設定 BGP 工作階段,以連線至您的網路。它會自動取得新的子網路 IP 位址範圍,並宣告至您的對等網路。
在本教學課程中,您將在 analytics-vpc 和 on-prem-vpc 之間部署高可用性 VPN,藉此說明與 Looker 之間的私人連線。
為 analytics-vpc 建立高可用性 VPN GW
建立每個閘道時,系統會自動分配兩個外部 IPv4 位址 (每個閘道介面各一個)。請記下這些 IP 位址,稍後在設定步驟中會用到。
在 Cloud Shell 中建立高可用性 VPN GW
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
為 on-prem-vpc 建立高可用性 VPN GW
建立每個閘道時,系統會自動分配兩個外部 IPv4 位址 (每個閘道介面各一個)。請記下這些 IP 位址,稍後在設定步驟中會用到。
在 Cloud Shell 中建立高可用性 VPN GW。
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
驗證高可用性 VPN GW 建立作業
在控制台中前往「HYBRID CONNECTIVITY」→「VPN」→「Cloud VPN GATEWAYS」。
為 analytics-vpc 建立 Cloud Router
在 Cloud Shell 中,建立位於 us-central1 的 Cloud Router
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
為 on-prem-vpc 建立 Cloud Router
在 Cloud Shell 中,建立位於 us-central1 的 Cloud Router
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
建立 analytics-vpc 的 VPN 通道
您將在每個高可用性 VPN 閘道上建立兩個 VPN 通道。
建立 VPN 通道 0
在 Cloud Shell 中建立 tunnel0:
gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 0
建立 VPN 通道 1
在 Cloud Shell 中建立 tunnel1:
gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 1
建立 on-prem-vpc 的 VPN 通道
您將在每個高可用性 VPN 閘道上建立兩個 VPN 通道。
建立 VPN 通道 0
在 Cloud Shell 中建立 tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 0
建立 VPN 通道 1
在 Cloud Shell 中建立 tunnel1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
驗證 VPN 通道的建立作業
使用控制台前往「HYBRID CONNECTIVITY」→「VPN」→「Cloud VPN TUNNELS」。
9. 建立 BGP 鄰居
建立 BGP 工作階段
在本節中,您將設定 Cloud Router 介面和 BGP 對等點。
為 analytics-vpc 建立 BGP 介面和對等互連
在 Cloud Shell 中建立 BGP 介面:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel0 \
--region us-central1
在 Cloud Shell 中建立 BGP 對等點:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
在 Cloud Shell 中建立 BGP 介面:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel1 \
--region us-central1
在 Cloud Shell 中建立 BGP 對等點:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
為 on-prem-vpc 建立 BGP 介面和對等互連
在 Cloud Shell 中建立 BGP 介面:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-analytics-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
在 Cloud Shell 中建立 BGP 對等點:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel0 \
--interface if-tunnel1-to-analytics-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
在 Cloud Shell 中建立 BGP 介面:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-analytics-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
在 Cloud Shell 中建立 BGP 對等點:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel1\
--interface if-tunnel2-to-analytics-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
如要查看 VPN 通道的詳細資料,請前往「混合式連線」→「VPN」。
驗證透過高可用性 VPN 使用的 Analytics-vpc 已知路徑
高可用性 VPN 通道和 BGP 工作階段已建立,因此系統會從 analytics-vpc 取得來自-prem-vpc 的路徑。透過控制台前往「虛擬私有雲網路」→「虛擬私有雲網路」→「analytics-vpc」→「ROUTES」→「REGION」→ us-central1 → VIEW
觀察 analytics-vpc 已從 on-prem-vpc 資料庫-subnet-us-central1 172.16.10.0/27 得知路徑
驗證 on-prem-vpc 未透過高可用性 VPN 學習路由
analytics-vpc 沒有子網路,因此 Cloud Router 不會向 on-prem-vpc 通告任何子網路。使用控制台前往「虛擬私有雲網路」→「虛擬私有雲網路」→「on-prem-vpc」→「路由」→「地區」→「us-central1」→「查看」
10. 將 Looker 子網路宣傳至內部
子網路已指派給 PSA,而非虛擬私有雲,因此 analytics-cr-us-central1 雲端路由器不會自動通告 Looker 私人服務存取權 (PSA) 子網路。
您必須為 PSA 子網路 192.168.0.0/22 (psa-range-looker) 從 analytics-cr-central1 建立自訂路徑通告,該通告會宣傳至內部部署環境,並供工作負載用來存取 Looker。
在控制台中前往「HYBRID CONNECTIVITY」→「CLOUD ROUTERS → analytics-cr-us-central1」,然後選取「編輯」。
在「宣傳路線」部分,選取「建立自訂路線」選項,根據下方範例更新欄位,選取「完成」,然後點選「儲存」。
11. 驗證 on-prem-vpc 是否已學習 Looker 子網路
由於 Looker PSA 子網路已從 analytics-cr-us-central1 宣告為自訂路徑廣告,因此 on-prem-vpc 現在可以存取該子網路。
透過控制台,依序前往「VPC NETWORK」→「VPC NETWORKS」→ on-prem-vpc → ROUTES → REGION → us-central1 → VIEW。
查看透過 analytics-vpc 通告的 Looker 路徑:
12. 驗證目前的虛擬私有雲對等互連
Looker Cloud Core 和 analytics-vpc 之間的連線會透過虛擬私有雲對等互連,交換透過 BGP 取得的自訂路徑。在這個教學課程中,analytics-vpc 需要將 on-prem-vpc 學習的路徑發布至 Looker。如要啟用這項功能,虛擬私有雲對等互連功能必須更新,才能匯出自訂路徑。
驗證目前匯入和匯出的路徑。
前往虛擬私有雲網路 → 虛擬私有雲網路 PEERING → servicenetworking-googleapis-com
下方的螢幕截圖詳述 analytics-vpc 會從 Google 代管的對等互連虛擬私有雲網路、servicenetworking 匯入 psa-range-looker。
選取 EXPORTED ROUTES 撤銷之後,沒有將任何路徑匯出至對等虛擬私有雲網路的路徑:1) 未在 analytics-vpc 2 中設定子網路) 未選取匯出自訂路徑
13. 更新虛擬私有雲對等互連
依序前往「VPC NETWORK」→「VPC NETWORK PEERING」→ servicenetworking-googleapis-com → 「編輯」
依序選取「匯出自訂路徑」→「儲存」
14. 驗證更新後的虛擬私有雲對等互連
驗證匯出的路徑。
前往「VPC NETWORK」→「VPC NETWORK PEERING」→「servicenetworking-googleapis-com」
選取「EXPORTED ROUTES」即可顯示 on-prem-vpc 路徑 (資料庫子網路 172.16.10.0/27) 會由 analytics-vpc 匯出至代管 Looker 的對等互連虛擬私有雲網路,
15. 建立 Looker postgres-database
在下一節中,您將使用 Cloud Shell 透過 SSH 連線至 postgres-database VM。
在 Cloud Shell 中,透過 SSH 連至 postgres-database 執行個體**。**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
在作業系統中,找出並記下 postgres 資料庫執行個體的 IP 位址 (ens4)。
ip a
範例:
user@postgres-database:~$ 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
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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/64 scope link
valid_lft forever preferred_lft forever
在 OS 中登入 postgresql。
sudo -u postgres psql postgres
在作業系統中輸入密碼提示。
\password postgres
在作業系統中,將密碼設為 postgres (輸入相同的密碼兩次)
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 位址和 Looker Private Google Access 子網路 (192.168.0.0/22):
sudo nano /etc/postgresql/15/main/pg_hba.conf
在下列部分,取消註解 postgresql.conf 以監聽所有「*」IP 位址,如以下螢幕截圖所示:
sudo nano /etc/postgresql/15/main/postgresql.conf
更新前:
套用後:
在作業系統中重新啟動 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 Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. 建立 postgres 資料庫
在下一節中,您將建立一個 postgres 資料庫,名為 postgres_looker 和 schema Looker_schema,用於驗證 Looker 與地端部署連線的連線。
在 OS 中登入 postgres。
sudo -u postgres psql postgres
在 OS 中建立資料庫。
create database postgres_looker;
在 OS 中列出資料庫。
\l
在 OS 中,使用密碼尋找工具建立使用者 Looker
create user postgres_looker with password 'postgreslooker';
在 OS 中連線至資料庫。
\c postgres_looker;
在 OS 中建立結構定義 Looker 結構定義,然後退出 Cloud Shell 提示。
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
範例:
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
退出作業系統,返回 Cloud Shell。
\q
exit
17. 在 on-prem-vpc 中建立防火牆
在下一節中,建立具備記錄功能的 Ingress 防火牆,允許 Looker 子網路與 postgres-database 執行個體進行通訊。
在 Cloud Shell 中建立 on-prem-vpc 防火牆。
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
18. 在 analytics-vpc 中建立私人 DNS
雖然 Looker 部署在 Google 代管虛擬私有雲中,但服務網路對等互連仍支援 analytics-vpc 私人 DNS 存取權。
在下一節中,您將在 analytics-vpc 中建立私人 DNS 區域,其中包含 postgres-database 例項的完整網域名稱 (postgres.analytics.com)
) 和 IP 位址的 A 記錄。
在 Cloud Shell 中建立不公開區域 analytics.com。
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
在 Cloud Shell 中,找出 postgres 資料庫執行個體的 IP 位址。
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
範例:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
透過 Cloud Shell 建立 A 記錄,請務必新增先前識別的 IP 位址。
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
範例:
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
在 Cloud Shell 中,將 dns-suffix analytics.com 連結至服務網路,讓 Looker 能夠存取 analytics-vpc 私人區域。
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. 將 Looker 與 Postgres postgres-database 整合
在下一節中,您將使用 Cloud 控制台建立資料庫連線,連線至內部部署的 postgres 資料庫執行個體。
在 Cloud 控制台中前往 Looker,然後選取要開啟 Looker UI 的執行個體網址。
啟動後,畫面上會顯示到達網頁,如下圖所示。
前往「管理」→「資料庫」→「連結」→選取「新增連結」
按照下方螢幕截圖填寫連線詳細資料,然後選取「連結」
連線成功
20. 驗證 Looker 連線
在下一個章節中,您將瞭解如何使用 Looker「test」動作和 TCPDUMP,驗證 Looker 與 on-prem-vpc 中 postgres 資料庫的連線情形。
如果工作階段逾時,透過 Cloud Shell 登入 postgres-database。
在 Cloud Shell 中執行以下操作:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
在 OS 中,使用 psa-range-looker 子網路 192.168.0.0/22 建立 TCPDUMP 篩選器
sudo tcpdump -i any net 192.168.0.0/22 -nn
前往「資料連線」頁面:「管理」→「資料庫」→「連線」→「選取」→「測試」
選取「Test」後,Looker 就會成功連線至 postgres 資料庫,如下所示:
回到 OS 終端機,驗證 TCPDUMP 已找到 psc-range-looker 連線至內部部署 Postgres-database 執行個體。
請新增附註,說明 Looker 中的 IP 範圍中的所有 IP 都會顯示
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. 安全性建議
關於保護 Looker 和 Postgres 資料庫的安全,有一些安全性建議和最佳做法。包括:
- 為 Looker 設定最低特殊權限資料庫帳戶權限,仍允許其執行所需功能。
- 在用戶端和 Looker UI 之間傳輸的資料,以及從 Looker 傳輸至資料庫的資料,會使用 TLS 1.2 以上版本加密
- 根據預設,靜態資料會加密,客戶也可以為 Looker 執行個體 (https://cloud.google.com/looker/docs/looker-core-cmek) 和 Postgres (https://cloud.google.com/sql/docs/postgres/configure-cmek) 使用 CMEK
- Looker 存取權控管:Looker 管理員可授予內容存取權、資料存取權和功能存取權,控管使用者能在 Looker 中查看和執行哪些項目。這些選項可讓 Looker 管理員定義特定角色,包括模型和權限組合,並建立精細的資料存取權控管機制。
- Looker 支援稽核記錄和資料存取記錄,可記錄人事時地物。稽核記錄預設為啟用,但資料存取記錄需要明確啟用。
- 目前,VPC-SC 僅支援企業和嵌入式執行個體,且這些執行個體只設定私人 IP
22. 清除所用資源
刪除 Looker Cloud Core 執行個體,前往:
LOOKER → looker-tutorial → DELETE
在 Cloud Shell 中刪除教學課程元件。
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. 恭喜
恭喜!您已成功設定和驗證 Looker 連線的混合型網路,讓資料可以在地端部署和多雲端環境之間進行通訊。
此外,您可以使用 Lookers Connect 的「Test」工具,並在 postgres-database 執行個體中使用 TCPDUMP 測試 Looker Cloud Core 與 postgres-database 的連線能力。
Cosmopup 認為教學課程很棒!