Looker PSA Southbound HTTPS Internet NEG

1. Giới thiệu

Chỉ những phiên bản Looker (Google Cloud core) sử dụng quyền truy cập vào dịch vụ riêng tư cho kết nối riêng tư mới hỗ trợ cấu hình IP riêng tư và IP công khai.

Một thực thể Looker (Google Cloud core) có cả kết nối IP riêng tư (quyền truy cập vào dịch vụ riêng tư) và kết nối IP công khai sẽ có một URL công khai và tất cả lưu lượng truy cập đến sẽ đi qua kết nối IP công khai. Lưu lượng truy cập đi được định tuyến thông qua VPC của bạn. Bạn có thể định cấu hình VPC để chỉ cho phép lưu lượng truy cập IP riêng tư như minh hoạ trong hình 1.

Figure1

9f587c14791dd92e.png

Thông tin liên lạc đến github.com được phân giải thành một địa chỉ IP công khai, do đó không thể truy cập từ một phiên bản Looker được triển khai dưới dạng Riêng tư hoặc Công khai + Riêng tư.

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 GitHub bằng cách sử dụng một 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ừ PSA của Looker.

Kiến thức bạn sẽ học được

  • Yêu cầu về mạng
  • Thiết lập kết nối với GitHub từ Looker bằng cách sử dụng tính năng Kiểm tra kết nối

Bạn cần có

5348de53f0a78a50.png

2. Sản phẩm bạn sẽ tạo ra

Bạn sẽ triển khai một trình cân bằng tải proxy tcp nội bộ và NEG trên Internet được định cấu hình bằng địa chỉ IP đã phân giải của github.com, tận dụng Cloud NAT để truyền dữ liệu ra Internet cho các tổ chức github.com do Looker phân giải.

3. Yêu cầu về mạng

Dưới đây là bảng chi tiết về các yêu cầu đối với mạng:

Thành phần

Mô tả

VPC ($vpc_network)

VPC ở chế độ tuỳ chỉnh

mạng con quy tắc chuyển tiếp

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

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. Chỉ có thể 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à 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 trên Internet.

Cloud Router

Cloud NAT dựa vào Bộ định tuyến đám mây cho các chức năng của lớp điều khiển, nhưng không dựa vào đó để quản lý phiên BGP.

Cloud NAT

NEG Internet theo khu vực tận dụng Cloud NAT để truyền dữ liệu ra bên ngoài Internet.

4. Cấu trúc liên kết lớp học lập trình

c5871e5418d37f13.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.pnga99b7ace416376c4.png5e3ff691252acf41.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à mã 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 diễn ra dự án.
  • Để bạn biết, 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]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network

Bật tất cả các dịch vụ cần thiết:

gcloud services enable compute.googleapis.com

7. Thành phần mạng VPC

Mạng VPC

Điều kiện tiên quyết của hướng dẫn này là bạn phải có một phiên bản Looker PSA hiện có, do đó, VPC được liên kết đã được tạo.

Trong Cloud Shell, hãy tạo mạng con quy tắc chuyển tiếp:

gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --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:

gcloud compute networks subnets create $region-proxyonly-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=$vpc_network \
  --range=10.10.10.0/24

Tạo cổng NAT công khai

Bộ cân bằng tải proxy tcp nội bộ theo khu vực sử dụng Cổng NAT để truyền dữ liệu ra bên ngoài Internet bằng lựa chọn cấu hình –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB. Do đó, cùng một NATGW sẽ không hỗ trợ việc truyền dữ liệu ra bên ngoài Internet của GCE/GKE. Triển khai một NAT GW bổ sung bằng –endpoint-types=ENDPOINT_TYPE_VM cho lưu lượng truy cập Internet ra bên ngoài của GCE/GKE.

Trong Cloud Shell, hãy tạo Cloud Router:

gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region

Trong Cloud Shell, hãy tạo cổng Cloud NAT để cho phép lưu lượng truy cập internet đi ra cho trình cân bằng tải proxy tcp:

gcloud compute routers nats create $vpc_network-natgw \
  --router=$vpc_network-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

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 sẽ được dùng sau này làm bản ghi DNS A cho github.com:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=psa-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

8. NEG Internet

Có hai cách để định cấu hình điểm cuối bên ngoài mà NEG Internet tham chiếu: INTERNET_FQDN_PORT hoặc INTERNET_IP_PORT. Nếu bạn chọn định dạng INTERNET_IP_PORT (Lựa chọn 1), thì bạn chỉ có thể sử dụng địa chỉ IP có thể định tuyến trên Internet công cộng; nếu bạn chọn định dạng INTERNET_FQDN_PORT (Lựa chọn 2), thì FQDN có thể được phân giải thành địa chỉ IP có thể định tuyến trên Internet công cộng hoặc thành địa chỉ IP riêng tư, tuỳ thuộc vào phạm vi của điểm cuối: theo khu vực hoặc trên toàn cầu.

Cách 1: Thiết lập NEG trên Internet bằng địa chỉ IP

NEG trên Internet yêu cầu địa chỉ IP đã phân giải của Github.com. Do đó, để có hiệu suất tốt nhất, hãy mở một thiết bị đầu cuối cục bộ, thực hiện lệnh dig và lấy địa chỉ IP của github.com.

Ví dụ từ một thiết bị đầu cuối cục bộ tạo ra địa chỉ IP đã phân giải 140.82.113.4

bash-3.2$ dig github.com
; <<>> DiG 9.10.6 <<>> github.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.com.                        IN        A
;; ANSWER SECTION:
github.com.                60        IN        A        140.82.113.4
;; Query time: 409 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Sep 26 15:50:45 CDT 2024
;; MSG SIZE  rcvd: 65

Tạo một NEG Internet và đặt –network-endpoint-type thành internet_ip_port.

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 \
    --network-endpoint-type=INTERNET_IP_PORT \
    --network=$vpc_network \
    --region=$region

Trong Cloud Shell, hãy cập nhật NEG Internet github-internet-neg bằng địa chỉ IP đã phân giải của github.com và cổng 443:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=[your-resolved-ip],port=443" \
    --region=$region

Ví dụ:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=140.82.113.4,port=443" \
    --region=$region

Cách 2: Thiết lập NEG trên Internet bằng FQDN

Nếu muốn, bạn có thể tạo một NEG Internet và đặt –network-endpoint-type thành internet_FQDN_port.

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 \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=$vpc_network \
    --region=$region

Trong Cloud Shell, hãy cập nhật NEG Internet github-internet-neg bằng FQDN github.com:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="fqdn=github.com,port=443" \
    --region=$region

9. Tạo dịch vụ Github

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 thao tác sau:

gcloud compute backend-services create psa-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-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=psa-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 psa-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=$vpc_network \
     --subnet=psa-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

10. Vùng DNS của GitHub

Trong phần sau, bạn sẽ tạo một chính sách phản hồi DNS cho GitHub.com bằng bản ghi A bao gồm địa chỉ IP của trình cân bằng tải proxy tcp nội bộ.

Sau đó, tính năng kết nối ngang DNS sẽ chia sẻ vùng github.com với Looker PSA, cho phép kết nối với github thông qua bộ cân bằng tải nội bộ kết hợp với NEG Internet và Cloud NAT.

Trong Cloud Shell, hãy tạo vùng chính sách phản hồi:

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

Trong Cloud Shell, hãy tạo bản ghi DNS A bao gồm địa chỉ IP của trình cân bằng tải proxy tcp, [insert-your-ip-address]:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"

Ví dụ:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

7b41b2f44609e5ed.png

Cập nhật quan hệ ngang hàng DNS

Trong phần này, bạn sẽ sử dụng cú pháp "gcloud services peered-dns-domains create" để tạo một miền DNS được kết nối ngang hàng cho một kết nối dịch vụ riêng tư. Kết nối này sẽ gửi yêu cầu về các bản ghi trong một không gian tên nhất định bắt nguồn từ mạng VPC của nhà sản xuất dịch vụ đến mạng VPC của người dùng để được phân giải.

Trong Cloud Shell, hãy tạo một peered-dns-domain mà Looker sẽ truy vấn cho github.com:

gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.

11. Kiểm tra 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 HTTPS với github.com.

12. 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 (ở cuối trang bên trái). Sau khi bạn chọn, biểu ngữ "Bạn đang ở Chế độ phát triển" sẽ xuất hiện.

70c9ded749decfbe.png

Tạo dự án mới

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

Phát triển → Dự án

e8ae11e0392a776d.png

Chọn Dự án LookML mới

65a3c2573e97e1e9.png

Nhập tên dự án, chọn Blank Project (Dự án trống) rồi chọn Create Project (Tạo dự án).

9185808e001fa540.png

Chọn Định cấu hình Git

42f5e51ce70642ad.png

Định cấu hình Git

Cập nhật URL kho lưu trữ bằng thông tin HTTPS của github, nhớ thêm .git vào URL rồi chọn Tiếp tục.

f5c448f6659b8fc1.png

Ví dụ:

4065ab1d196589f.png

Cập nhật lựa chọn bằng tên người dùng GitHub và Mã truy cập cá nhân (cổ điển), sau đó chọn Kiểm thử và hoàn tất thiết lập.

1dc44d63c555a9ae.png

Chọn Git Actions

b5903668a50a99ca.png

Chọn Kiểm thử kết nối Git

51b722e84f2df38c.png

Xác thực Kiểm thử kết nối Git

8fb7386b739f60be.png

13. 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 forwarding-rules delete psa-github-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete psa-backend-svc --region=$region -q

gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q

gcloud compute routers delete $vpc_network-cloud-router --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q

gcloud services peered-dns-domains delete github-com --network=$vpc_network -q

gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q

gcloud dns response-policies update github-com --networks= -q

gcloud dns response-policies delete github-com

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

Cosmopup cho rằng các lớp học mã rất tuyệt!!

c911c127bffdee57.jpeg

Tiếp theo là gì?

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

Tài liệu tham khảo