Looker PSC Southbound HTTPS Internet NEG Gitlab Tự quản lý

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ thực hiện một kết nối HTTPS theo hướng nam đến môi trường GitLab tự quản lý 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 (NEG) trên Internet được gọi từ Looker PSC dưới dạng Người tiêu 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ự, tính năng 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 tiêu dùng. Ví dụ: khi bạn sử dụng Private Service Connect để truy cập vào Looker, bạn là người tiêu dùng dịch vụ và Google là nhà sản xuất dịch vụ, như minh hoạ trong Hình 1.

Hình 1.

145ea4672c3a3b14.png

Quyền truy cập theo hướng nam, còn được gọi là PSC đảo ngược, cho phép người tiêu 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 cơ sở, 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 chiều nam ở bất kỳ khu vực nào, bất kể bạn triển khai PSC của Looker ở đâu, như minh hoạ trong Hình 2.

Hình 2.

61932a992ba9b6f4.png

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 một điểm cuối Private Service Connect trong Looker
  • Thiết lập kết nối với phiên bản GitLab tự quản lý

Bạn cần có

def88091b42bfe4d.png

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 xuất bản dưới dạng một dịch vụ thông qua Kết nối dịch vụ riêng tư (PSC). Sau khi xuất bản, 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ụ Producer:

  • Tạo một điểm cuối PSC trong Looker được liên kết với Producer Service Attachment
  • Sử dụng Looker Console để tạo một dự án mới và kiểm thử khả năng kết nối HTTPS với môi trường GitLab tự quản lý.

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 đối với mạng Producer. Người dùng trong lớp học lập trình này là phiên bản Looker PSC.

Thành phần

Mô tả

VPC (looker-psc-demo)

VPC ở chế độ tuỳ chỉnh

Mạng con NAT PSC

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 các gói đượ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

Được dùng để phân bổ địa chỉ IP cho Trình cân bằng tải TCP Proxy nội bộ theo khu vực

Mạng con PSC NEG

Được dùng để phân bổ địa chỉ IP cho Nhóm thiết bị đầu cuối mạng

Chỉ mạng con 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ừ một proxy đến một VM hoặc điểm cuối phụ trợ 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 một 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 tại chỗ do 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à các 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 lớp học lập trình

34950ed6ef504309.png

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

  1. Đă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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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ự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này 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ã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án.
  • Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. 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 thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi 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í trị giá 300 USD.

Khởi động Cloud Shell

Mặc dù có thể vận hành 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 Cloud.

Trên 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:

55efc1aaa7a4d3ad.png

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

7ffe5cbb04455448.png

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

6. Trước khi bắt đầu

Bật API

Trong Cloud Shell, hãy đảm bảo rằng 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 các bước 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 PSC Service Attachment cho mục đích Network Address Translation.

Trong Cloud Shell, hãy tạo 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

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

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

Dự trữ địa chỉ IP của trình cân bằng tải

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 dành riêng.

gcloud compute addresses describe internet-neg-lb-ip \
  --region=$region | grep -i address:

Ví dụ về đầu ra:

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 trên 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ụ trợ bên ngoài).

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

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 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.

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 các thành phần của trình cân bằng tải

Trong Cloud Shell, hãy thực hiện các bước 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ợ của bạn:

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ụ

Trong Cloud Shell, hãy tạo Service Attachment (gitlab-self-managed-svc-attachment-https) có chế độ phê duyệt tự động cho phép Looker Core kết nối với Service Attachment. 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ể sử dụng lựa chọn 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 Service Attachment (Tệp đính kèm dịch vụ) có trong URI selfLink bắt đầu bằng projects để đị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 các bước 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

6fa12f77e4640b08.png

43987fabbabb41ad.png

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 Producer Service Attachment với Looker Core PSC bằng cách sử dụng cờ –psc-service-attachment trong Cloud Shell cho một miền duy nhất.

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ả Service Attachment, gitlab-self-managed-svc-attachment-https.
  • KHU VỰC: Khu vực lưu trữ phiên bản Looker (Google Cloud core) của bạn.

Trong Cloud Shell, hãy thực hiện các bước 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

Trong Cloud Shell, hãy xác thực connectionStatus của serviceAttachments là "ACCEPTED", cập nhật bằng INSTANCE_NAME PSC Looker 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.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 Bảng điều khiển Cloud

Bạn có thể xác thực Kết nối PSC trong Cloud Console

Trong Cloud Console, hãy chuyển đến:

Looker → Thực thể Looker → Chi tiết

2d4684d722d31e4b.png

2d600f33dc61cb6d.png

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 Gitlab tự quản lý, gitlabonprem.com bằng cách thực hiện lệnh PING. Như dự kiến, quá trình phân giải sẽ không thành công và yêu cầu một vùng DNS riêng cho gitlabonprem.com.

11. Tạo một phiên bản GCE

Trong Cloud Shell, hãy tạo phiên bản GCE dùng để xác thực quá trình 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 có 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 quay lại thiết bị đầu cuối Cloud Shell.

exit

12. Tạo một vùng DNS riêng tư

Trong Cloud Shell, hãy tạo Vùng DNS riêng tư trên 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"

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 có 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 quay 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ụ: Interconnect, HA-VPN) giữa VPC looker-psc-demo và mạng tại chỗ để bật kết nối.

Sau đâ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 cơ sở tại chỗ:

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 quy trình được nêu trong phần Thiết lập và kiểm thử kết nối Git.

ae3b3884e8ef5db8.png

15. Dọn dẹp

Xoá các thành phần trong phòng thí nghiệm khỏi 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 Bảng điều khiển Looker dựa trên Private Service Connect.

Bạn đã tạo cơ sở hạ tầng nhà sản xuất, tìm hiểu cách tạo NEG trên Internet, Dịch vụ nhà sản xuất và điểm cuối PSC của 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!!

c911c127bffdee57.jpeg

Tiếp theo là gì?

Hãy xem một số lớp học lập trình này...

Tài liệu đọc thêm và video

Tài liệu tham khảo