1. Giới thiệu
Trong lớp học lập trình này, bạn sẽ thực hiện kết nối SSH phía nam với GitHub bằng cách sử dụng bộ cân bằng tải proxy tcp nội bộ và nhóm điểm cuối mạng Internet được gọi từ Looker PSC dưới dạng Người dùng dịch vụ.
Private Service Connect là một chức năng của mạng Google Cloud, cho phép người tiêu dùng truy cập vào các dịch vụ được quản lý một cách riêng tư từ bên trong mạng VPC của mình. Tương tự, dịch vụ này cho phép nhà sản xuất dịch vụ được quản lý lưu trữ các dịch vụ này trong mạng VPC riêng của họ và cung cấp kết nối riêng tư cho người dùng. Ví dụ: khi dùng Private Service Connect để truy cập vào Looker, bạn là người sử dụng dịch vụ và Google là nhà sản xuất dịch vụ, như được đánh dấu trong Hình 1.
Hình 1.
Quyền truy cập hướng Nam (còn gọi là PSC đảo ngược) cho phép Người tiêu dùng tạo Dịch vụ đã xuất bản với tư cách là Nhà sản xuất để cho phép Looker truy cập vào các điểm cuối tại chỗ, trong VPC, vào các dịch vụ được quản lý và Internet. Bạn có thể triển khai các kết nối hướng Nam ở bất kỳ khu vực nào, bất kể vị trí triển khai Looker PSC, như được làm nổi bật trong Hình 2.
Hình 2.
Kiến thức bạn sẽ học được
- Yêu cầu về mạng
- Tạo dịch vụ nhà sản xuất Kết nối dịch vụ riêng tư
- Tạo điểm cuối Private Service Connect trong Looker
- Thiết lập khả năng kết nối với GitHub từ Looker bằng cách sử dụng kết nối Kiểm thử
Bạn cần có
- Dự án trên Google Cloud có quyền Chủ sở hữu
- Tài khoản và kho lưu trữ GitHub
- SSH Triển khai khoá được chia sẻ giữa Looker và GitHub
- Phiên bản PSC của Looker hiện có
2. Sản phẩm bạn sẽ tạo ra
Bạn cần thiết lập một mạng Producer, Looker-psc-demo, để triển khai trình cân bằng tải proxy tcp nội bộ và Internet NEG được xuất bản dưới dạng dịch vụ qua Private Service Connect (PSC). Sau khi xuất bản, bạn sẽ thực hiện các hành động sau để xác thực quyền truy cập vào dịch vụ Producer:
- Tạo Điểm cuối PSC trong Looker được liên kết với Tệp đính kèm dịch vụ nhà sản xuất
- Sử dụng Looker Console để tạo một dự án mới và kiểm tra khả năng kết nối SSH với GitHub.com bằng quy trình Kết nối với Git bằng SSH
3. Yêu cầu về mạng
Dưới đây là bảng chi tiết các yêu cầu về mạng đối với mạng Producer, đối tượng tiêu dùng trong lớp học lập trình này là phiên bản Looker PSC.
Mạng nhà sản xuất
Thành phần | Mô tả |
VPC (looker-psc-demo) | VPC chế độ tuỳ chỉnh |
Mạng con PSC NAT | Các gói tin từ mạng VPC của người tiêu dùng được dịch bằng NAT nguồn (SNAT) để địa chỉ IP nguồn ban đầu của chúng được chuyển đổi thành địa chỉ IP nguồn từ mạng con NAT trong mạng VPC của nhà sản xuất. |
Mạng con quy tắc chuyển tiếp PSC | Dùng để phân bổ địa chỉ IP cho Trình cân bằng tải proxy TCP nội bộ theo khu vực |
Mạng con PSC NEG | Dùng để phân bổ địa chỉ IP cho Nhóm thiết bị đầu cuối mạng |
Mạng con chỉ dành cho proxy | Mỗi proxy của bộ cân bằng tải được chỉ định một địa chỉ IP nội bộ. Các gói được gửi từ proxy đến máy ảo hoặc điểm cuối phụ trợ có địa chỉ IP nguồn từ mạng con chỉ có proxy. |
NEG Internet | Một tài nguyên dùng để xác định phần phụ trợ bên ngoài cho trình cân bằng tải. Không thể chỉ truy cập vào điểm cuối qua Cloud VPN hoặc Cloud Interconnect. |
Dịch vụ phụ trợ | Dịch vụ phụ trợ đóng vai trò là cầu nối giữa trình cân bằng tải và tài nguyên phụ trợ. Trong hướng dẫn này, dịch vụ phụ trợ được liên kết với NEG Internet. |
Cloud Router | Cloud NAT dựa vào Bộ định tuyến trên đám mây để có các chức năng của vùng điều khiển, nhưng không dùng để quản lý phiên BGP. |
Cloud NAT | Mạng Internet khu vực NEG sử dụng Cloud NAT để thu thập dữ liệu đầu ra từ Internet. |
4. Cấu trúc liên kết của lớp học lập trình
5. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
- Mã dự án là duy nhất trên tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án của mình (thường được xác định là
PROJECT_ID
). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử dùng email của riêng mình để xem có thể sử dụng hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian diễn ra dự án. - Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh bị tính phí sau khi hoàn tất hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Mặc dù có thể điều khiển Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.
Trong Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:
Quá trình cấp phép và kết nối với môi trường chỉ mất vài phút. Sau khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này được tải sẵn tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong lớp học lập trình này trong một trình duyệt. Bạn không cần cài đặt gì cả.
6. Trước khi bắt đầu
Bật API
Bên trong Cloud Shell, hãy đảm bảo bạn đã thiết lập mã dự án:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
Bật tất cả các dịch vụ cần thiết:
gcloud services enable compute.googleapis.com
7. Tạo mạng VPC của nhà sản xuất
Mạng VPC
Trong Cloud Shell, hãy thực hiện như sau:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Tạo mạng con
Mạng con PSC sẽ được liên kết với Tệp đính kèm dịch vụ PSC nhằm mục đích Dịch địa chỉ mạng.
Bên trong Cloud Shell, hãy tạo PSC NAT Subnet (Mạng con NAT PSC):
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
Bên trong Cloud Shell, hãy tạo mạng con cho quy tắc chuyển tiếp của nhà sản xuất:
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
Bên trong Cloud Shell, hãy tạo mạng con chỉ có proxy theo khu vực cho nhà sản xuất:
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
Tạo cổng NAT công khai
Cổng NAT được trình cân bằng tải proxy tcp nội bộ theo khu vực sử dụng cho đầu ra Internet với tuỳ chọn cấu hình là –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, do đó, NATGW tương tự sẽ không hỗ trợ đầu ra Internet của GCE/GKE. Triển khai thêm một NAT GW với –endpoint-types=ENDPOINT_TYPE_VM cho lưu lượng truy cập Internet GCE/GKE.
Bên trong Cloud Shell, hãy tạo Trình định tuyến trên đám mây:
gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region
Bên trong Cloud Shell, hãy tạo cổng Cloud NAT cho phép truy cập Internet cho trình cân bằng tải proxy tcp:
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
Đặt trước địa chỉ IP của trình cân bằng tải
Bên trong Cloud Shell, hãy đặt trước một địa chỉ IP nội bộ cho trình cân bằng tải:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
Trong Cloud Shell, hãy xem Địa chỉ IP được đặt trước.
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
Ví dụ:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
Thiết lập NEG Internet
Tạo một NEG Internet và đặt –network-endpoint-type thành internet-fqdn-port (tên máy chủ và cổng có thể truy cập vào phần phụ trợ bên ngoài của bạn).
Bên trong Cloud Shell, hãy tạo một NEG Internet dùng cho github.com
gcloud compute network-endpoint-groups create github-internet-neg-ssh \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
Bên trong Cloud Shell, hãy cập nhật Internet NEG github-internet-neg-ssh bằng FQDN github.com và cổng 22
gcloud compute network-endpoint-groups update github-internet-neg-ssh \
--add-endpoint="fqdn=github.com,port=22" \
--region=$region
Tạo Chính sách tường lửa mạng và Quy tắc tường lửa
Trong Cloud Shell, hãy thực hiện như sau:
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
Quy tắc tường lửa sau đây cho phép lưu lượng truy cập từ dải mạng con PSC NAT đến tất cả các thực thể trong mạng.
Trong Cloud Shell, hãy thực hiện như sau:
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. Tạo Dịch vụ nhà sản xuất
Tạo các thành phần cân bằng tải
Bên trong Cloud Shell, hãy thực hiện như sau:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=github-internet-neg-ssh --network-endpoint-group-region=$region --region=$region
Trong Cloud Shell, hãy tạo một proxy TCP mục tiêu để định tuyến các yêu cầu đến dịch vụ phụ trợ:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
Trong cú pháp sau, hãy tạo một quy tắc chuyển tiếp (trình cân bằng tải proxy tcp nội bộ).
Trong Cloud Shell, hãy thực hiện các thao tác sau:
gcloud compute forwarding-rules create producer-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=22
Tạo tệp đính kèm dịch vụ
Bên trong Cloud Shell, hãy tạo Tệp đính kèm dịch vụ, github-svc-attachment-ssh:
gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
Tiếp theo, hãy lấy và để ý đến Tệp đính kèm dịch vụ được liệt kê trong URI tự liên kết, bắt đầu từ các dự án cần định cấu hình điểm cuối PSC trong Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-ssh
Trong Cloud Shell, hãy thực hiện như sau:
gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region
Ví dụ về kết quả đầu ra dự kiến
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '7557641709467614900'
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/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr
Trong Cloud Console, hãy chuyển đến:
Dịch vụ mạng → Private Service Connect → Dịch vụ đã phát hành
9. Thiết lập kết nối thiết bị đầu cuối PSC trong Looker
Trong phần sau, bạn sẽ liên kết Tệp đính kèm dịch vụ của nhà sản xuất với Looker Core PSC thông qua cờ sử dụng –psc-service- bổ sung trong Cloud Shell cho một miền.
Bên trong Cloud Shell, hãy tạo mối liên kết psc bằng cách cập nhật các tham số sau cho phù hợp với môi trường của bạn:
- INSTANCE_NAME: Tên của phiên bản Looker (Lõi Google Cloud) của bạn.
- {/8}_1: githubssh.com
- SERVICE_ARROW_1: URI được thu thập khi mô tả Tệp đính kèm dịch vụ, github-svc-Attach-ssh.
- REGION: Khu vực nơi lưu trữ phiên bản Looker (Lõi Google Cloud).
Trong Cloud Shell, hãy thực hiện như sau:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Ví dụ:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region
Bên trong Cloud Shell, hãy xác thực connectionStatus của serviceAttachments là "ACCEPTED" (ĐÃ CHẤP NHẬN). Cập nhật bằng Looker PSC INSTANCE_NAME của bạn.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Ví dụ:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Ví dụ:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "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": "githubssh.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-31T20:53:04.824018122Z"
}
Xác thực điểm cuối PSC trong Cloud Console
Trong Cloud Console, bạn có thể xác thực Kết nối PSC
Trong Cloud Console, hãy chuyển đến:
Looker → Phiên bản Looker → Chi tiết
10. Kiểm thử khả năng kết nối với GitHub
Trong các bước sau, bạn sẽ sử dụng Looker Console để tạo một dự án nhằm xác thực khả năng kết nối SSH với GitHub.com bằng cách cập nhật miền github.com thành githubssh.com trong giao diện người dùng Looker. Bạn chỉ cần thực hiện thao tác này đối với các kết nối SSH đến GitHub.
11. Tạo dự án mới
Bật Chế độ phát triển
Trong Looker Console, hãy chuyển đến:
Bật Chế độ phát triển (ở dưới cùng bên trái trang), sau khi chọn, biểu ngữ "Bạn đang ở Chế độ phát triển" sẽ xuất hiện.
Tạo dự án mới
Trong Cloud Console, hãy chuyển đến:
Phát triển → Dự án
Chọn New LookML Project (Dự án LookML mới)
Nhập tên cho dự án, chọn Blank Project (Dự án trống) rồi chọn Create Project (Tạo dự án).
Chọn Định cấu hình Git
Định cấu hình Git
Sau khi chọn Tiếp tục, bạn sẽ được thăng cấp để xác thực URL kho lưu trữ và dịch vụ lưu trữ Git.
Thêm Khoá triển khai vào kho lưu trữ GitHub. Đảm bảo cấp quyền ghi. Sau khi cập nhật, hãy chọn Kiểm thử và Hoàn tất thiết lập.
Chọn thao tác Git
Chọn Kiểm thử kết nối Git
Xác thực kiểm thử kết nối Git
12. Dọn dẹp
Xoá các thành phần của lớp học từ một thiết bị đầu cuối Cloud Shell
gcloud compute service-attachments delete github-svc-attachment-ssh --region=$region -q
gcloud compute forwarding-rules delete producer-github-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 looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute network-endpoint-groups delete github-internet-neg-ssh --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
13. 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 với GitHub bằng Looker Console do Private Service Connect cung cấp.
Bạn đã tạo cơ sở hạ tầng nhà sản xuất, tìm hiểu cách tạo NEG Internet, Dịch vụ nhà sản xuất và điểm cuối PSC Looker cho phép kết nối với Dịch vụ nhà sản xuất.
Cosmopup cho rằng lớp học lập trình thật tuyệt vời!!
Tiếp theo là gì?
Hãy xem một số lớp học lập trình này...
- Sử dụng Private Service Connect để xuất bản và sử dụng các dịch vụ
- Kết nối với các dịch vụ tại chỗ thông qua Mạng kết hợp bằng Private Service Connect và bộ cân bằng tải Proxy TCP nội bộ
- Quyền truy cập vào tất cả lớp học lập trình đã xuất bản của Private Service Connect