1. Giới thiệu
Chỉ những phiên bản Looker (cốt lõi của Google Cloud) 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ó 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 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
Thông tin liên lạc với github.com được phân giải thành một địa chỉ IP công khai, do đó không thể truy cập được từ một phiên bản Looker được triển khai ở chế độ 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 kết nối HTTPS từ phía nam đến GitHub 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 PSA.
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 Kết nối thử nghiệm
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ữ GitHub
- Mã truy cập cá nhân trên GitHub (Cổ điển)
- Thực thể PSA Looker hiện có với chế độ Công khai + Riêng tư hoặc chỉ Riêng tư được bật
2. Sản phẩm bạn sẽ tạo ra
Bạn sẽ triển khai bộ cân bằng tải proxy tcp nội bộ và Internet NEG đượ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 cho lưu lượng truy cập Internet đến 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à thông tin chi tiết về các yêu cầu về mạng:
Thành phần | Mô tả |
VPC ($vpc_network) | VPC ở chế độ tuỳ chỉnh |
mạng con của quy tắc chuyển tiếp | 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 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 | 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 để cung cấp 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 | NEG Internet theo khu vực tận dụng Cloud NAT cho lưu lượng truy cập 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]
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à một thực thể Looker PSA hiện có, do đó, VPC được liên kết đã được tạo.
Bên 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
Bên trong Cloud Shell, hãy tạo mạng con chỉ có 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
Cổng NAT được bộ cân bằng tải proxy tcp nội bộ theo khu vực sử dụng cho lưu lượng truy cập Internet với tuỳ chọn cấu hình –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, do đó, cùng một NATGW sẽ không hỗ trợ lưu lượng truy cập 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 $vpc_network-cloud-router --network $vpc_network --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 $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
Đặ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 bộ cân bằng tải. Địa chỉ này sẽ được dùng sau này làm bản ghi A DNS 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 đượ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
8. NEG Internet
Có hai cách để định cấu hình điểm cuối bên ngoài được tham chiếu bởi Internet NEG: INTERNET_FQDN_PORT hoặc INTERNET_IP_PORT. Nếu bạn chọn định dạng INTERNET_IP_PORT (Tuỳ chọn 1), bạn chỉ có thể sử dụng địa chỉ IP có thể định tuyến trên Internet công khai; nếu bạn chọn định dạng INTERNET_FQDN_PORT (Tuỳ chọn 2), FQDN có thể được phân giải thành địa chỉ IP có thể định tuyến trên Internet công khai hoặc đị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 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 đó, để đạt được hiệu suất tốt nhất, hãy mở một thiết bị đầu cuối cục bộ và thực hiện lệnh dig để 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.
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 \
--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.
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 \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=$vpc_network \
--region=$region
Bên 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 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 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ợ:
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 chính sách phản hồi DNS cho GitHub.com bằng một 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 liên kết DNS sẽ chia sẻ vùng github.com với PSA Looker, 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 Internet NEG 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 A DNS 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"
Cập nhật tính năng liên kết 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 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 các yêu cầu cho 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 miền 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 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 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 (ở 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)
Đặt tên 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
Cập nhật URL kho lưu trữ bằng thông tin chi tiết về github HTTPS, nhớ thêm .git vào URL rồi chọn Tiếp tục.
Ví dụ:
Cập nhật lựa chọn bằng tên người dùng GitHub và Mã thông báo truy cập cá nhân (cũ), sau đó chọn Kiểm thử và Hoàn tất thiết lập.
Chọn Hành động Git
Chọn Kiểm thử kết nối Git
Xác thực kiểm thử kết nối Git
13. 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 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 lập trình rất tuyệt vời!!