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 HTTPS phía nam đến môi trường Tự quản lý GitLab bằng cách sử dụng trình cân bằng tải proxy tcp nội bộ và nhóm điểm cuối mạng Internet (NEG) được gọi từ Looker PSC dưới dạng Người dùng dịch vụ.
Private Service Connect là một tính năng của mạng Google Cloud, cho phép người dùng truy cập riêng tư vào các dịch vụ được quản lý từ bên trong mạng VPC của họ. 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 bạn sử dụng Private Service Connect để truy cập vào Looker, bạn là người dùng dịch vụ và Google là nhà cung cấp dịch vụ, như được làm nổi bật trong Hình 1.
Hình 1.
Quyền truy cập từ dưới lên (còn gọi là PSC đảo ngược) cho phép người dùng tạo một Dịch vụ đã xuất bản dưới dạng 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 Private Service Connect
- Tạo điểm cuối Private Service Connect trong Looker
- Thiết lập kết nối với thực thể GitLab tự quản lý
Bạn cần có
- Dự án Google Cloud có quyền của Chủ sở hữu
- Tài khoản và kho lưu trữ GitLab
- Thực thể PSC Looker hiện có
2. Sản phẩm bạn sẽ tạo ra
Bạn sẽ thiết lập một mạng Nhà sản xuất, looker-psc-demo, để triển khai bộ cân bằng tải proxy tcp nội bộ và NEG Internet được phát hành dưới dạng dịch vụ thông qua Private Service Connect (PSC). Sau khi phát hành, bạn sẽ thực hiện các thao tác sau để xác thực quyền truy cập vào dịch vụ Nhà sản xuất:
- 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 HTTPS với môi trường Tự quản lý GitLab.
3. Yêu cầu về mạng
Dưới đây là thông tin chi tiết về các yêu cầu về mạng cho mạng Nhà sản xuất, trong đó người dùng trong lớp học lập trình này là thực thể Looker PSC.
Thành phần | Mô tả |
VPC (looker-psc-demo) | VPC ở chế độ tuỳ chỉnh |
Mạng con PSC NAT | Các gói từ mạng VPC của người 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 của 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 phụ trợ hoặc điểm cuối có địa chỉ IP nguồn từ mạng con chỉ dành cho 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 được định cấu hình dưới dạng FQDN biểu thị FQDN trên máy của Gitlab Tự quản lý. FQDN trên Internet thực hiện tra cứu DNS trong VPC để phân giải. |
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. |
4. Cấu trúc liên kết của lớp học lập trình
5. Cách thiết lập và các 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 một dự án mới hoặc sử dụng lại một 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ị cho 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 có thể cập nhật thông tin này bất cứ lúc nào.
- 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 thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID
). Nếu không thích mã được tạo, bạn có thể tạo một mã 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 giá trị này sau bước này và giá trị này sẽ được giữ nguyên trong suốt thời gian của 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.
- 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 tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để 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. 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. Ứng dụng này cung cấp một thư mục gốc 5 GB ổn định và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất mạng và xác thực. 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
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 cho 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 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ỉ dành cho proxy theo khu vực của 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 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:
Kết quả điểm dữ liệu:
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 mà bạn có thể truy cập vào phần phụ trợ bên ngoài).
Bên trong Cloud Shell, hãy tạo một NEG Internet dùng để truy cập vào phiên bản Gitlab Tự quản lý, gitlabonprem.com.
gcloud compute network-endpoint-groups create gitlab-self-managed-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
Bên trong Cloud Shell, hãy cập nhật NEG Internet gitlab-self-managed-internet-neg bằng FQDN gitlabonprem.com và cổng 443
gcloud compute network-endpoint-groups update gitlab-self-managed-internet-neg \
--add-endpoint="fqdn=gitlabonprem.com,port=443" \
--region=$region
Tạo quy tắc tường lửa mạng
Để 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:
- Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn 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. Phạm vi này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.
Bên trong Cloud Shell, hãy tạo quy tắc tường lửa IAP.
gcloud compute firewall-rules create ssh-iap-looker-psc-demo \
--network looker-psc-demo \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
8. Tạo dịch vụ nhà sản xuất
Tạo thành phần Trình cân bằng tải
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=gitlab-self-managed-internet-neg --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 bước sau:
gcloud compute forwarding-rules create producer-gitlab-self-managed-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=443
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ụ, gitlab-self-managed-svc-attachment-https, với trạng thái phê duyệt tự động cho phép Looker Core kết nối với tệp đính kèm dịch vụ. Nếu bạn muốn kiểm soát quyền truy cập vào tệp đính kèm dịch vụ, bạn có thể chọn yêu cầu phê duyệt rõ ràng.
gcloud compute service-attachments create gitlab-self-managed-svc-attachment-https --region=$region --producer-forwarding-rule=producer-gitlab-self-managed-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
Tiếp theo, hãy lấy và ghi lại Tệp đính kèm dịch vụ được liệt kê trong URI selfLink bắt đầu bằng các dự án để định cấu hình điểm cuối PSC trong Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/gitlab-self-managed-svc-attachment-https
Trong Cloud Shell, hãy thực hiện như sau:
gcloud compute service-attachments describe gitlab-self-managed-svc-attachment-https --region=$region
Ví dụ:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-03-04T18:55:42.254-08:00'
description: ''
enableProxyProtocol: false
fingerprint: MlY9GLLGsgE=
id: '9103522880241140673'
kind: compute#serviceAttachment
name: gitlab-self-managed-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '115404658846991336'
low: '9103522880241140673'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/serviceAttachments/gitlab-self-managed-svc-attachment-https
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/forwardingRules/producer-gitlab-self-managed-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 điểm 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 PSC Looker Core thông qua việc sử dụng cờ –psc-service-attachment 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 thực thể Looker (Google Cloud core).
- DOMAIN_1: gitlabonprem.com
- SERVICE_ATTACHMENT_1: URI được ghi lại khi mô tả Tệp đính kèm dịch vụ, gitlab-self-managed-svc-attachment-https.
- REGION (KHU VỰC): Khu vực lưu trữ thực thể Looker (Google Cloud core) của bạn.
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=gitlabonprem.com,attachment=projects/$project/regions/$region/serviceAttachments/gitlab-self-managed-svc-attachment-https \
--region=$region
Bên trong Cloud Shell, xác thực serviceAttachments connectionStatus là "ACCEPTED" (ĐÃ CHẤP NHẬN), cập nhật bằng INSTANCE_NAME PSC của Looker
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.looker.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.12.28",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "gitlabonprem.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/gitlab-self-managed-svc-attachment-https"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-30T17:47:33.440271635Z"
}
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. phân giải DNS
Trong phần sau, hãy tạo một phiên bản GCE và xác thực việc phân giải DNS cho phiên bản Tự quản lý của Gitlab, gitlabonprem.com bằng cách thực hiện lệnh PING. Như dự kiến, việc phân giải sẽ không thành công do yêu cầu một vùng DNS riêng tư cho gitlabonprem.com.
11. Tạo một phiên bản máy ảo GCE
Bên trong Cloud Shell, hãy tạo thực thể GCE dùng để xác thực việc phân giải DNS.
gcloud compute instances create gce-dns-lookup \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=producer-psc-fr-subnet
Đăng nhập vào consumer-vm bằng IAP trong Cloud Shell để xác thực khả năng kết nối với dịch vụ nhà sản xuất bằng cách thực hiện một lệnh curl. Thử lại nếu hết thời gian chờ.
gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap
Từ hệ điều hành, hãy thực hiện lệnh PING đến gitlabonprem.com, lỗi này dự kiến sẽ xảy ra.
ping gitlabonprem.com
Ví dụ:
user@gce-dns-lookup:~$ ping gitlabonprem.com
ping: gitlabonprem.com: Name or service not known
Thoát khỏi hệ điều hành, đưa bạn trở lại thiết bị đầu cuối Cloud Shell.
exit
12. Tạo vùng DNS riêng
Bên trong Cloud Shell, hãy tạo Khu vực riêng của Cloud DNS.
gcloud dns --project=$projectid managed-zones create gitlab-self-managed --description="" --dns-name="gitlabonprem.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/looker-psc-demo"
Bên trong Cloud Shell, hãy tạo bản ghi A bao gồm Địa chỉ IP của phiên bản Gitlab tự quản lý, 192.168.10.4.
gcloud dns --project=$projectid record-sets create gitlabonprem.com. --zone="gitlab-self-managed" --type="A" --ttl="300" --rrdatas="192.168.10.4"
Đăng nhập vào consumer-vm bằng IAP trong Cloud Shell để xác thực khả năng kết nối với dịch vụ nhà sản xuất bằng cách thực hiện một lệnh curl. Thử lại nếu hết thời gian chờ.
gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap
Từ hệ điều hành, hãy thực hiện lệnh PING đến gitlabonprem.com, lệnh này sẽ phân giải thành 192.168.10.4.
ping gitlabonprem.com
Ví dụ:
user@gce-dns-lookup:~$ ping gitlabonprem.com
PING gitlabonprem.com (192.168.10.4) 56(84) bytes of data
Thoát khỏi hệ điều hành, đưa bạn trở lại thiết bị đầu cuối Cloud Shell.
exit
13. Hybrid Connectivity
Giờ đây, bạn có thể phân giải FQDN gitlabonprem.com bằng Địa chỉ IP riêng tư được lưu trữ tại chỗ. Tiếp theo, bạn phải định cấu hình mạng kết hợp (ví dụ: Kết nối nội bộ, HA-VPN) giữa VPC looker-psc-demo và mạng cục bộ để bật khả năng kết nối.
Dưới đây là các bước cần thiết để thiết lập kết nối NEG kết hợp với mạng cục bộ:
- Chọn sản phẩm Kết nối mạng | Google Cloud
- Trong cấu trúc trung tâm và nan hoa có tính năng kết nối ngang hàng VPC, NEG kết hợp được triển khai trong cùng một VPC với Bộ định tuyến đám mây (trung tâm)
- Đảm bảo rằng tường lửa tại chỗ được cập nhật để phù hợp với phạm vi mạng con chỉ có proxy, vì mạng con này đóng vai trò là địa chỉ IP nguồn để giao tiếp với khối lượng công việc tại chỗ
- Quảng cáo mạng con chỉ dành cho proxy từ Trình định tuyến đám mây dưới dạng quảng cáo tuyến tuỳ chỉnh
14. Kiểm tra khả năng kết nối
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 HTTPS với gitlabonprem.com bằng cách sử dụng quy trình được nêu trong phần Thiết lập và kiểm thử kết nối Git.
15. 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 gitlab-self-managed-svc-attachment-https --region=$region -q
gcloud compute forwarding-rules delete producer-gitlab-self-managed-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-endpoint-groups delete gitlab-self-managed-internet-neg --region=$region -q
gcloud compute instances delete gce-dns-lookup --zone=us-central1-a -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud dns --project=$projectid record-sets delete gitlabonprem.com. --zone="gitlab-sel
f-managed" --type="A"
gcloud dns --project=$projectid managed-zones delete gitlab-self-managed
gcloud compute networks delete looker-psc-demo -q
16. 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 một phiên bản GitLab tự quản lý bằng cách sử dụng Looker Console do Private Service Connect cung cấp.
Bạn đã tạo cơ sở hạ tầng của 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 các lớp học lập trình rấ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 để phát hành và sử dụng 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ả các lớp học lập trình về Private Service Connect đã xuất bản