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 資料通訊
Figure1
課程內容
- 如何建立虛擬私有雲和相關聯的混合式網路
- 如何在獨立虛擬私有雲中部署 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 設定
Cloud NAT 會用於軟體套件安裝教學課程,因為資料庫 VM 執行個體沒有外部 IP 位址。
在 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 是服務供應商。
私人連線可讓虛擬私有雲網路中的 VM 執行個體和您存取的服務只透過內部 IP 位址進行通訊。
整體來說,如要使用私人服務存取權,您必須在虛擬私有雲網路中分配 IP 位址範圍 (CIDR 區塊),然後與服務供應商建立私人連線。
為服務分配 IP 位址範圍
建立私人連線前,您必須分配 IPv4 位址範圍供服務供應商的虛擬私有雲網路使用。這麼做可確保您的虛擬私有雲網路與服務供應商的網路之間沒有 IP 位址衝突。
在虛擬私有雲網路中分配範圍時,該範圍無法用於子網路 (主要和次要範圍) 和自訂靜態路徑的目的地。
不支援具有私人服務存取權的 IPv6 位址範圍。
在 Google Cloud 控制台中,為您的專案啟用 Service Networking API。啟用 API 後,您可能需要重新整理控制台頁面,確認 API 已啟用。
建立 IP 分配
如要指定位址範圍和前置字串長度 (子網路遮罩),請使用位址和前置字串長度標記。舉例來說,如要分配 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 通道
在 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 通道
在 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 database-subnet-us-central1 172.16.10.0/27 得知路徑
驗證 on-prem-vpc 尚未透過高可用性 VPN 得知路徑
analytics-vpc 沒有子網路,因此 Cloud Router 不會向 on-prem-vpc 通告任何子網路。使用控制台,前往「虛擬私有雲網路」→「虛擬私有雲網路」→ on-prem-vpc → ROUTES → REGION → us-central1 → VIEW
10. 將 Looker 子網路通告至地端部署環境
子網路已指派給 PSA,而非虛擬私有雲,因此 analytics-cr-us-central1 Cloud Router 路由器不會自動通告 Looker 私人服務存取權 (PSA) 子網路。
您必須從 analytics-cr-central1 的 PSA 子網路 192.168.0.0/22 (psa-range-looker) 建立自訂路徑通告,再將廣告通告至地端部署環境,供工作負載存取 Looker。
在控制台中前往「HYBRID CONNECTIVITY」→「CLOUD ROUTERS → analytics-cr-us-central1」,然後選取「編輯」。
在「公告路徑」部分中,選取「建立自訂路徑」選項,並根據下方範例更新欄位,選取「完成」,然後按一下「儲存」。
11. 驗證 on-prem-vpc 是否已學習 Looker 子網路
已透過 analytics-cr-us-central1 以自訂路徑通告的形式發布 Looker PSA 子網路,因此 on-prem-vpc 將能存取該子網路。
透過控制台前往「虛擬私有雲網路」→「虛擬私有雲網路」→「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. 驗證更新後的虛擬私有雲對等互連
驗證匯出的路徑。
前往虛擬私有雲網路 → 虛擬私有雲網路 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-database 執行個體的 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-database 執行個體 IP 位址和 Looker 私人 Google 存取權子網路 (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
更新前:
套用後:
在 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 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
退出 OS,返回 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-database 執行個體的 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-database 執行個體的資料庫連線。
在 Cloud 控制台中,前往 Looker 並選取執行個體網址,以便開啟 Looker UI。
這項功能推出後,您將透過下方的螢幕截圖看到到達網頁。
前往「管理」→「資料庫」→「連結」→選取「新增連結」
填寫以下螢幕截圖中的連線詳細資料,然後選取「連結」
連線成功
20. 驗證 Looker 連線
在下一節中,您將瞭解如何透過 Looker「test」驗證與 on-prem-vpc 中 postgres-database 連線的 Looker 連線動作和 TCPDUMP
如果工作階段逾時,透過 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
前往「數據連線」頁面,接著點選「管理員」→「資料庫」→「連結」→「選取」→「測試」。
選取「測試」之後,Looker 就會成功連線至 postgres-database,如下所示:
回到 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-教學課程 → 刪除
透過 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」成功測試 Looker Cloud Core 與 postgres-database 的連線能力Postgres-database 執行個體中的 TCPDUMP 和 TCPDUMP 設定值。
Cosmopup 認為教學課程非常精彩!