1. Giới thiệu
Looker (Google Cloud core) giúp đơn giản hoá và tinh giản quy trình cấp phép, định cấu hình và quản lý một phiên bản Looker từ bảng điều khiển Google Cloud. Bạn cũng có thể thực hiện một số tác vụ quản trị phiên bản trên bảng điều khiển.
Có 3 cấu hình mạng có sẵn cho các phiên bản Looker (Google Cloud core):
- Công khai: Kết nối mạng sử dụng địa chỉ IP bên ngoài có thể truy cập vào Internet.
- Riêng tư: Kết nối mạng sử dụng địa chỉ IP Virtual Private Cloud (VPC) nội bộ do Google lưu trữ.
- Công khai và riêng tư: Kết nối mạng sử dụng cả địa chỉ IP công khai và địa chỉ IP riêng tư, trong đó lưu lượng truy cập đến sẽ được định tuyến qua IP công khai và lưu lượng truy cập đi sẽ được định tuyến qua IP riêng tư.
Trong hướng dẫn này, bạn sẽ triển khai một Mạng riêng tư toàn diện để hỗ trợ kết nối Looker với một VPC tại chỗ qua VPN có tính sẵn sàng cao. VPN này có thể được sao chép để đáp ứng các yêu cầu của bạn về khả năng kết nối nhiều đám mây và tại chỗ.
Looker (Google Cloud core) hỗ trợ IP riêng tư cho những phiên bản đáp ứng các tiêu chí sau:
- Phiên bản của phiên bản phải là Enterprise hoặc Embed.
Sản phẩm bạn sẽ tạo ra
Trong hướng dẫn này, bạn sẽ xây dựng một mạng Looker riêng tư toàn diện trong một VPC độc lập có khả năng kết nối kết hợp với nhiều đám mây và tại chỗ.
Bạn sẽ thiết lập một mạng VPC có tên là on-prem-vpc để biểu thị một môi trường tại chỗ. Đối với việc triển khai của bạn, on-prem-vpc sẽ không tồn tại, thay vào đó, bạn sẽ sử dụng mạng kết hợp cho trung tâm dữ liệu tại cơ sở hoặc nhà cung cấp dịch vụ đám mây.
Dưới đây là các bước chính của hướng dẫn
- Tạo một VPC độc lập trong us-central1
- Phân bổ một mạng con IP cho Private Service Access
- Triển khai phiên bản Looker trong VPC độc lập
- Tạo on-prem-vpc và mạng kết hợp
- Quảng cáo và xác thực dải IP của Looker qua BGP
- Tích hợp và xác thực hoạt động giao tiếp dữ liệu giữa Looker và Postgresql
Figure1

Kiến thức bạn sẽ học được
- Cách tạo VPC và mạng kết hợp liên kết
- Cách triển khai Looker trong một VPC độc lập
- Cách tạo VPC tại chỗ và mạng kết hợp liên kết
- Kết nối on-prem-vpc với analytics-vps qua HA VPN
- Cách quảng cáo mạng con Looker qua mạng kết hợp
- Cách giám sát cơ sở hạ tầng mạng kết hợp
- Cách tích hợp cơ sở dữ liệu Postgresql với Looker Cloud Core
Bạn cần có
- Dự án trên Google Cloud
Quyền IAM
2. Trước khi bắt đầu
Cập nhật dự án để hỗ trợ hướng dẫn
Hướng dẫn này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.
Trong Cloud Shell, hãy thực hiện các bước sau:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Thiết lập VPC
Tạo analytics-vpc
Trong Cloud Shell, hãy thực hiện các bước sau:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Tạo on-prem-vpc
Trong Cloud Shell, hãy thực hiện các bước sau:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Tạo mạng con cơ sở dữ liệu Postgresql
Trong Cloud Shell, hãy thực hiện các bước sau:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Cấu hình Cloud Router và NAT
Cloud NAT được dùng trong hướng dẫn cài đặt gói phần mềm vì phiên bản VM cơ sở dữ liệu không có địa chỉ IP ngoài.
Trong Cloud Shell, hãy tạo Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
Trong Cloud Shell, hãy tạo cổng 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
Tạo thực thể kiểm thử cơ sở dữ liệu
Tạo một thực thể postgres-database sẽ được dùng để kiểm thử và xác thực khả năng kết nối với Looker.
Tạo phiên bản trong 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"
Tạo quy tắc tường lửa
Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:
- Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
- Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.
Từ 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. Quyền truy cập vào dịch vụ riêng tư
Quyền truy cập vào dịch vụ riêng tư là một kết nối riêng tư giữa mạng VPC của bạn và một mạng thuộc sở hữu của Google hoặc bên thứ ba. Google hoặc bên thứ ba, các pháp nhân cung cấp dịch vụ, còn được gọi là nhà sản xuất dịch vụ. Looker Cloud Core là một nhà sản xuất dịch vụ.
Kết nối riêng tư cho phép các phiên bản máy ảo trong mạng VPC và các dịch vụ mà bạn truy cập giao tiếp độc quyền bằng cách sử dụng địa chỉ IP nội bộ.
Ở cấp độ cao, để sử dụng quyền truy cập vào dịch vụ riêng tư, bạn phải phân bổ một dải địa chỉ IP (khối CIDR) trong mạng VPC của mình, sau đó tạo một kết nối riêng tư với nhà sản xuất dịch vụ.
Phân bổ dải địa chỉ IP cho các dịch vụ
Trước khi tạo một kết nối riêng tư, bạn phải phân bổ một dải địa chỉ IPv4 để mạng VPC của nhà sản xuất dịch vụ sử dụng. Điều này đảm bảo không có sự trùng lặp địa chỉ IP giữa mạng VPC của bạn và mạng của nhà sản xuất dịch vụ.
Khi bạn phân bổ một dải trong mạng VPC, dải đó sẽ không đủ điều kiện cho các mạng con (dải chính và dải phụ) và đích đến của các tuyến tĩnh tuỳ chỉnh.
Không hỗ trợ việc sử dụng dải địa chỉ IPv6 với quyền truy cập vào các dịch vụ riêng tư.
Bật Service Networking API cho dự án của bạn trong bảng điều khiển Cloud. Khi bật API, bạn có thể cần làm mới trang bảng điều khiển để xác nhận rằng API đã được bật.
Tạo một địa chỉ IP được phân bổ
Để chỉ định một dải địa chỉ và độ dài tiền tố (mặt nạ mạng con), hãy sử dụng các cờ địa chỉ và độ dài tiền tố. Ví dụ: để phân bổ khối CIDR 192.168.0.0/22, hãy chỉ định 192.168.0.0 cho địa chỉ và 22 cho độ dài tiền tố.
Trong Cloud Shell, hãy tạo chế độ phân bổ IP cho Looker.
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
Trong Cloud Shell, hãy xác thực việc phân bổ IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Ví dụ:
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
Tạo kết nối riêng tư
Sau khi tạo một dải địa chỉ được phân bổ, bạn có thể tạo một kết nối riêng tư đến một nhà sản xuất dịch vụ, Looker Cloud Core. Kết nối riêng tư sẽ thiết lập kết nối VPC Network Peering (Kết nối ngang hàng mạng VPC) giữa mạng VPC của bạn và mạng của nhà sản xuất dịch vụ sau khi phiên bản Looker được thiết lập.
Kết nối riêng tư là mối quan hệ một-một giữa mạng VPC của bạn và một nhà sản xuất dịch vụ. Nếu một nhà sản xuất dịch vụ duy nhất cung cấp nhiều dịch vụ, bạn chỉ cần một kết nối riêng cho tất cả các dịch vụ của nhà sản xuất đó.
Nếu bạn kết nối với nhiều nhà sản xuất dịch vụ, hãy sử dụng một chỉ số phân bổ riêng cho mỗi nhà sản xuất dịch vụ. Phương pháp này giúp bạn quản lý các chế độ cài đặt mạng, chẳng hạn như các quy tắc về tuyến đường và tường lửa, cho từng nhà sản xuất dịch vụ.
Trong Cloud Shell, hãy tạo một kết nối riêng tư và ghi lại tên thao tác.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Ví dụ:
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.
Trong Cloud Shell, hãy kiểm tra xem thao tác có thành công hay không, thay thế OPERATION_NAME bằng tên được tạo ở bước trước.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
Ví dụ:
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. Tạo một phiên bản Looker (Google Cloud core)
Trước khi bắt đầu
Bật Looker API cho dự án của bạn trong bảng điều khiển Cloud của Google. Khi bật API, bạn có thể cần làm mới trang bảng điều khiển để xác nhận rằng API đã được bật.
Thiết lập một Ứng dụng OAuth để xác thực và truy cập vào phiên bản.
Trong phần sau, bạn sẽ cần sử dụng Mã ứng dụng khách OAuth và Khoá bí mật để tạo phiên bản Looker.
Bạn không bắt buộc phải có nguồn gốc JavaScript được phép và URI chuyển hướng.

Trong Cloud Console, hãy tạo một phiên bản dựa trên ảnh chụp màn hình được cung cấp.
Chuyển đến LOOKER → CREATE AN INSTANCE (LOOKER → TẠO MỘT THỰC THỂ)
Điền Mã ứng dụng khách và Khoá bí mật OAuth đã tạo trước đó.



Chọn TẠO
Khi phiên bản đang được tạo, bạn sẽ được chuyển hướng đến trang Instances (Phiên bản) trong bảng điều khiển. Bạn có thể cần làm mới trang để xem trạng thái của phiên bản mới. Bạn cũng có thể xem hoạt động tạo phiên bản bằng cách nhấp vào biểu tượng thông báo trong trình đơn bảng điều khiển Google Cloud. Trong khi phiên bản của bạn đang được tạo, biểu tượng thông báo trong trình đơn bảng điều khiển Google Cloud sẽ được bao quanh bởi biểu tượng tải.
Sau khi phiên bản Looker được tạo, một URL phiên bản sẽ được tạo. Ghi lại URL.

6. Cập nhật mã ứng dụng khách OAuth 2.0
Trong phần sau, bạn sẽ cần cập nhật URI chuyển hướng được uỷ quyền của Mã ứng dụng khách OAuth đã tạo trước đó bằng cách thêm /oauth2callback vào URL của phiên bản.
Sau khi hoàn tất, bạn có thể dùng URL phiên bản để đăng nhập vào giao diện người dùng Looker.
Trong Cloud Console, hãy chuyển đến phần API VÀ DỊCH VỤ → THÔNG TIN XÁC THỰC
Chọn Mã ứng dụng khách OAuth 2.0 và cập nhật URL của phiên bản, ví dụ:

7. Xác thực quyền truy cập vào Looker
Trong Cloud Console, hãy chuyển đến Looker rồi chọn URL thực thể của bạn để mở giao diện người dùng Looker.

Sau khi khởi chạy, bạn sẽ thấy trang đích như trong ảnh chụp màn hình bên dưới để xác nhận quyền truy cập vào Looker Cloud Core.

8. Kết nối kết hợp
Trong phần sau, bạn sẽ tạo một Cloud Router cho phép bạn trao đổi các tuyến đường một cách linh hoạt giữa Đám mây riêng tư ảo (VPC) và mạng ngang hàng bằng cách sử dụng Giao thức cổng nối biên (BGP).
Cloud Router có thể thiết lập một phiên BGP qua đường hầm Cloud VPN để kết nối các mạng của bạn. Thiết bị này tự động tìm hiểu các dải địa chỉ IP mạng con mới và thông báo cho mạng ngang hàng của bạn.
Trong hướng dẫn này, bạn sẽ triển khai VPN có tính sẵn sàng cao giữa analytics-vpc và on-prem-vpc để minh hoạ khả năng kết nối riêng tư với Looker.
Tạo HA VPN GW cho analytics-vpc
Khi mỗi cổng được tạo, hai địa chỉ IPv4 bên ngoài sẽ được phân bổ tự động, mỗi địa chỉ cho một giao diện cổng. Hãy ghi lại các địa chỉ IP này để sử dụng sau trong các bước định cấu hình.
Trong Cloud Shell, hãy tạo HA VPN GW
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Tạo GW VPN có tính sẵn sàng cao cho on-prem-vpc
Khi mỗi cổng được tạo, hai địa chỉ IPv4 bên ngoài sẽ được phân bổ tự động, mỗi địa chỉ cho một giao diện cổng. Hãy ghi lại các địa chỉ IP này để sử dụng sau trong các bước định cấu hình.
Trong Cloud Shell, hãy tạo HA VPN GW.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Xác thực việc tạo HA VPN GW
Trong bảng điều khiển, hãy chuyển đến mục KẾT NỐI KẾT HỢP → VPN → CỔNG VPN TRÊN ĐÁM MÂY.

Tạo Cloud Router cho analytics-vpc
Trong Cloud Shell, hãy tạo Cloud Router nằm ở us-central1
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Tạo Cloud Router cho on-prem-vpc
Trong Cloud Shell, hãy tạo Cloud Router nằm ở us-central1
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Tạo đường hầm VPN cho analytics-vpc
Bạn sẽ tạo 2 đường hầm VPN trên mỗi cổng HA VPN.
Tạo đường hầm VPN0
Trong Cloud Shell, hãy tạo 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
Tạo đường hầm VPN1
Trong Cloud Shell, hãy tạo 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
Tạo đường hầm VPN cho on-prem-vpc
Bạn sẽ tạo 2 đường hầm VPN trên mỗi cổng HA VPN.
Tạo đường hầm VPN0
Trong Cloud Shell, hãy tạo 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
Tạo đường hầm VPN1
Trong Cloud Shell, hãy tạo 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
Xác thực việc tạo đường hầm VPN
Sử dụng bảng điều khiển, chuyển đến mục KẾT NỐI KẾT HỢP → VPN → ĐƯỜNG HẦM CLOUD VPN.

9. Thiết lập các thiết bị lân cận BGP
Tạo phiên BGP
Trong phần này, bạn sẽ định cấu hình các giao diện Cloud Router và các thiết bị ngang hàng BGP.
Tạo giao diện BGP và kết nối ngang hàng cho analytics-vpc
Trong Cloud Shell, hãy tạo giao diện 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
Trong Cloud Shell, hãy tạo BGP ngang hàng:
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
Trong Cloud Shell, hãy tạo giao diện 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
Trong Cloud Shell, hãy tạo BGP ngang hàng:
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
Tạo giao diện BGP và thiết lập quan hệ ngang hàng cho on-prem-vpc
Trong Cloud Shell, hãy tạo giao diện 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
Trong Cloud Shell, hãy tạo BGP ngang hàng:
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
Trong Cloud Shell, hãy tạo giao diện 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
Trong Cloud Shell, hãy tạo BGP ngang hàng:
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
Chuyển đến Hybrid CONNECTIVITY → VPN (Kết nối kết hợp → VPN) để xem thông tin chi tiết về đường hầm VPN.

Xác thực các tuyến đường đã học được của analytics-vpc qua VPN có tính năng HA
Vì các đường hầm VPN có tính sẵn sàng cao và phiên BGP được thiết lập, nên các tuyến đường từ on-prem-vpc được tìm hiểu từ analytics-vpc. Sử dụng bảng điều khiển, chuyển đến VPC network → VPC networks → analytics-vpc → ROUTES → REGION → us-central1 → VIEW (Mạng VPC → Mạng VPC → analytics-vpc → TUYẾN ĐƯỜNG → KHU VỰC → us-central1 → XEM)
Quan sát analytics-vpc đã học được các tuyến đường từ on-prem-vpc database-subnet-us-central1 172.16.10.0/27

Xác thực rằng on-prem-vpc chưa tìm hiểu các tuyến qua HA VPN
analytics-vpc không có mạng con, do đó, Cloud Router sẽ không quảng cáo bất kỳ mạng con nào cho on-prem-vpc . Sử dụng bảng điều khiển, chuyển đến VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW (Mạng VPC → Mạng VPC → on-prem-vpc → TUYẾN ĐƯỜNG → KHU VỰC → us-central1 → XEM)

10. Quảng cáo mạng con Looker cho mạng nội bộ
Bộ định tuyến đám mây analytics-cr-us-central1 không tự động quảng cáo mạng con Looker Private Service Access (PSA) vì mạng con được chỉ định cho PSA chứ không phải VPC.
Bạn sẽ cần tạo một quảng cáo tuyến đường tuỳ chỉnh từ analytics-cr-central1 cho mạng con PSA 192.168.0.0/22 (psa-range-looker) sẽ được quảng cáo cho môi trường tại chỗ và được các tải sử dụng để truy cập vào Looker.
Trên bảng điều khiển, hãy chuyển đến HYBRID CONNECTIVITY (KHẢ NĂNG KẾT NỐI KẾT HỢP) → CLOUD ROUTERS (BỘ ĐỊNH TUYẾN TRÊN ĐÁM MÂY) → analytics-cr-us-central1, rồi chọn CHỈNH SỬA.
Trong phần Tuyến đường được quảng cáo, hãy chọn mục Tạo tuyến đường tuỳ chỉnh, cập nhật các trường dựa trên ví dụ bên dưới, chọn XONG rồi nhấp vào LƯU.

11. Xác thực rằng VPC tại cơ sở đã tìm hiểu được mạng con Looker
Giờ đây, on-prem-vpc sẽ có thể truy cập vào mạng con PSA của Looker vì mạng con này đã được quảng cáo từ analytics-cr-us-central1 dưới dạng một quảng cáo tuyến đường tuỳ chỉnh.
Sử dụng bảng điều khiển để chuyển đến VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW
Quan sát các tuyến đường Looker được thông báo từ analytics-vpc:

12. Xác thực kết nối ngang hàng VPC hiện tại
Mối kết nối giữa Looker Cloud Core và analytics-vpc là thông qua tính năng kết nối ngang hàng VPC, cho phép trao đổi các tuyến đường tuỳ chỉnh được tìm hiểu thông qua BGP. Trong hướng dẫn này, analytics-vpc sẽ cần xuất bản các tuyến đường mà on-prem-vpc đã tìm hiểu được cho Looker. Để bật chức năng này, tính năng kết nối VPC ngang hàng cần được cập nhật để xuất các tuyến đường tuỳ chỉnh.
Xác thực các tuyến đường đã nhập và xuất hiện tại.
Chuyển đến MẠNG VPC → KẾT NỐI NGANG HÀNG MẠNG VPC → servicenetworking-googleapis-com

Ảnh chụp màn hình bên dưới trình bày chi tiết về analytics-vpc nhập psa-range-looker từ mạng vpc ngang hàng do Google quản lý, servicesnetworking.

Chọn EXPORTED ROUTES (TUYẾN ĐƯỜNG ĐƯỢC XUẤT) không có tuyến đường nào được xuất sang mạng VPC ngang hàng vì 1) Mạng con chưa được định cấu hình trong analytics-vpc 2) Bạn chưa chọn Xuất các tuyến đường tuỳ chỉnh

13. Cập nhật kết nối ngang hàng VPC
Chuyển đến MẠNG VPC → VPC NETWORK PEERING (Kết nối mạng VPC ngang hàng) → servicenetworking-googleapis-com → CHỈNH SỬA
Chọn XUẤT TUYẾN ĐƯỜNG TUỲ CHỈNH → LƯU

14. Xác thực VPC Peering đã cập nhật
Xác thực các tuyến đường đã xuất.
Chuyển đến MẠNG VPC → KẾT NỐI NGANG HÀNG MẠNG VPC → servicenetworking-googleapis-com
Chọn EXPORTED ROUTES (TUYẾN ĐƯỜNG ĐƯỢC XUẤT) để cho biết các tuyến đường on-prem-vpc (mạng con cơ sở dữ liệu 172.16.10.0/27) được xuất sang mạng VPC ngang hàng lưu trữ Looker bằng analytics-vpc.

15. Tạo cơ sở dữ liệu postgres của Looker
Trong phần sau, bạn sẽ thực hiện SSH vào VM postgres-database bằng Cloud Shell.
Trong Cloud Shell, hãy thực hiện thao tác ssh đến phiên bản postgres-database**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Trong hệ điều hành, hãy xác định và ghi lại địa chỉ IP (ens4) của phiên bản postgres-database.
ip a
Ví dụ:
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
Trong hệ điều hành, hãy đăng nhập vào postgresql.
sudo -u postgres psql postgres
Trong hệ điều hành, hãy nhập câu lệnh mật khẩu.
\password postgres
Trong hệ điều hành, hãy đặt mật khẩu thành postgres (nhập cùng một mật khẩu hai lần)
postgres
Ví dụ:
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:
Trong hệ điều hành, hãy thoát postgres.
\q
Ví dụ:
postgres=# \q
user@postgres-database:~$
Trong phần sau, bạn sẽ chèn địa chỉ IP của phiên bản postgres-database và mạng con Looker Private Google Access (192.168.0.0/22) vào tệp pg_hba.conf trong mục IPv4 local connections (Các kết nối cục bộ IPv4) theo ảnh chụp màn hình bên dưới:

sudo nano /etc/postgresql/15/main/pg_hba.conf
Trong phần sau, hãy bỏ chú thích postgresql.conf để nghe tất cả địa chỉ IP "*" theo ảnh chụp màn hình bên dưới:
sudo nano /etc/postgresql/15/main/postgresql.conf
Trước:

Sau:

Trong hệ điều hành, hãy khởi động lại dịch vụ postgresql.
sudo service postgresql restart
Trong hệ điều hành, hãy xác thực trạng thái postgresql là đang hoạt động.
sudo service postgresql status
Ví dụ:
Trong hệ điều hành, hãy xác thực trạng thái postgresql là đang hoạt động.
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. Tạo cơ sở dữ liệu postgres
Trong phần sau, bạn sẽ tạo một cơ sở dữ liệu postgres có tên là postgres_looker và giản đồ looker_schema dùng để xác thực khả năng kết nối Looker với cơ sở dữ liệu tại chỗ.
Trong hệ điều hành, hãy đăng nhập vào postgres.
sudo -u postgres psql postgres
Trong hệ điều hành, hãy tạo cơ sở dữ liệu.
create database postgres_looker;
Bên trong hệ điều hành, hãy liệt kê cơ sở dữ liệu.
\l
Trong hệ điều hành, hãy tạo trình xem người dùng bằng trình xem mật khẩu
create user postgres_looker with password 'postgreslooker';
Bên trong hệ điều hành, hãy kết nối với cơ sở dữ liệu.
\c postgres_looker;
Trong hệ điều hành, hãy tạo lược đồ looker-schema rồi thoát về dấu nhắc Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Ví dụ:
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
Thoát khỏi hệ điều hành, đưa bạn trở lại Cloud Shell.
\q
exit
17. Tạo Tường lửa trong on-prem-vpc
Trong phần sau, hãy tạo một tường lửa Ingress có tính năng ghi nhật ký cho phép giao tiếp giữa mạng con Looker và thực thể postgres-database.
Trong Cloud Shell, hãy tạo tường lửa 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. Tạo DNS riêng trong analytics-vpc
Mặc dù Looker được triển khai trong một VPC do Google quản lý, nhưng quyền truy cập vào DNS riêng tư analytics-vpc được hỗ trợ thông qua việc kết nối ngang hàng với mạng dịch vụ.
Trong phần sau, bạn sẽ tạo một Vùng DNS riêng tư trong analytics-vpc bao gồm một bản ghi A của Tên miền đủ điều kiện (postgres.analytics.com) và địa chỉ IP của phiên bản postgres-database.
Trong Cloud Shell, hãy tạo analytics.com của vùng riêng tư.
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"
Trong Cloud Shell, hãy xác định địa chỉ IP của phiên bản postgres-database.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
Ví dụ:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
Trong Cloud Shell, hãy tạo bản ghi A và nhớ thêm địa chỉ IP đã xác định trước đó.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
Ví dụ:
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
Từ Cloud Shell, hãy kết nối ngang hàng dns-suffix analytics.com với mạng dịch vụ, nhờ đó cho phép Looker truy cập vào vùng riêng tư analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. Tích hợp Looker với postgres-database Postgres
Trong phần sau, bạn sẽ sử dụng Cloud Console để tạo một kết nối Cơ sở dữ liệu đến phiên bản postgres-database tại cơ sở.
Trong Cloud Console, hãy chuyển đến Looker rồi chọn URL thực thể của bạn để mở giao diện người dùng Looker.

Sau khi khởi chạy, bạn sẽ thấy trang đích như trong ảnh chụp màn hình bên dưới.

Chuyển đến QUẢN TRỊ → CƠ SỞ DỮ LIỆU → KẾT NỐI → Chọn THÊM KẾT NỐI
Điền thông tin chi tiết về mối kết nối theo ảnh chụp màn hình bên dưới, chọn KẾT NỐI

Kết nối đã thành công

20. Xác thực khả năng kết nối Looker
Trong phần sau, bạn sẽ tìm hiểu cách xác thực khả năng kết nối Looker với cơ sở dữ liệu postgres trong on-prem-vpc bằng cách sử dụng thao tác "kiểm thử" của Looker và TCPDUMP.
Từ Cloud Shell, hãy đăng nhập vào postgres-database nếu phiên đã hết thời gian chờ.
Trong Cloud Shell, hãy thực hiện các bước sau:
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"
Từ hệ điều hành, hãy tạo bộ lọc TCPDUMP bằng mạng con psa-range-looker 192.168.0.0/22
sudo tcpdump -i any net 192.168.0.0/22 -nn
Chuyển đến phần Kết nối dữ liệu QUẢN TRỊ → CƠ SỞ DỮ LIỆU → KẾT NỐI → Chọn → Kiểm thử
Sau khi bạn chọn Kiểm thử, Looker sẽ kết nối thành công với cơ sở dữ liệu postgres như minh hoạ bên dưới:

Quay lại thiết bị đầu cuối của hệ điều hành và xác thực rằng TCPDUMP đã xác định psc-range-looker đang kết nối với phiên bản postgres-database tại cơ sở.
Thêm ghi chú rằng mọi IP trong dải IP PSA sẽ xuất hiện trong Looker
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. Đề xuất bảo mật
Có một số đề xuất về bảo mật và các phương pháp hay nhất liên quan đến việc bảo mật Looker và cơ sở dữ liệu Postgres. Các cách này bao gồm:
- Thiết lập các quyền tài khoản cơ sở dữ liệu có đặc quyền thấp nhất cho Looker nhưng vẫn cho phép Looker thực hiện các chức năng cần thiết.
- Dữ liệu đang truyền giữa Ứng dụng và giao diện người dùng Looker, cũng như giữa Looker và Cơ sở dữ liệu được mã hoá bằng TLS 1.2 trở lên
- Dữ liệu tĩnh được mã hoá theo mặc định, khách hàng cũng có thể tận dụng CMEK cho các phiên bản Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) và cho Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek)
- Quyền kiểm soát truy cập của Looker – Quản trị viên Looker có thể kiểm soát những nội dung mà một người dùng hoặc nhóm người dùng có thể xem và làm trong Looker bằng cách cấp quyền truy cập nội dung, quyền truy cập dữ liệu và quyền truy cập vào tính năng. Các lựa chọn này cho phép Quản trị viên Looker xác định các vai trò cụ thể bao gồm Mô hình và bộ quyền, đồng thời tạo quyền kiểm soát truy cập chi tiết vào dữ liệu.
- Looker hỗ trợ cả Nhật ký kiểm tra và Nhật ký truy cập vào dữ liệu, ghi lại thông tin về người dùng, hành động, thời gian và vị trí. Nhật ký kiểm tra được bật theo mặc định, trong khi Nhật ký truy cập dữ liệu cần được bật một cách rõ ràng.
- Hiện tại, VPC-SC hỗ trợ các thực thể Enterprise và Embed được định cấu hình chỉ bằng IP riêng tư
22. Dọn dẹp
Xoá phiên bản Looker Cloud Core, chuyển đến:
LOOKER → looker-tutorial → DELETE

Trong Cloud Shell, hãy xoá các thành phần hướng dẫn.
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. Xin chúc mừng
Xin chúc mừng, bạn đã định cấu hình và xác thực thành công khả năng kết nối Looker thông qua mạng kết hợp, cho phép giao tiếp dữ liệu trên các môi trường tại chỗ và nhiều đám mây.
Bạn cũng có thể kiểm tra thành công khả năng kết nối Looker Cloud Core với cơ sở dữ liệu postgres bằng cách sử dụng công cụ "Kiểm thử" của Looker Connect và TCPDUMP trong phiên bản cơ sở dữ liệu postgres.
Cosmopup cho rằng các hướng dẫn rất hữu ích!!

Tài liệu đọc thêm và video
- Ra mắt phiên bản tiếp theo của Looker
- Bạn đang di chuyển sang GCP? Điều đầu tiên cần biết: VPC
- Định tuyến linh hoạt bằng Cloud Router