1. Giới thiệu
Với Private Service Connect, nhà sản xuất dịch vụ có thể hiển thị các dịch vụ trong môi trường VPC thông qua Tệp đính kèm dịch vụ và cho phép người dùng trong một môi trường VPC khác truy cập vào các dịch vụ đó thông qua điểm cuối Private Service Connect. Đôi khi, các dịch vụ nhà sản xuất này được thiết kế dưới dạng cụm máy ảo, trong đó mỗi máy ảo hiển thị cùng một dịch vụ trên các số cổng giống hệt nhau. Trước đây, các thiết kế dịch vụ này yêu cầu triển khai nhiều điểm cuối Private Service Connect ở phía người dùng hoặc sử dụng tính năng chuyển tiếp IP ở phía nhà sản xuất để đảm bảo nhắm đến đúng máy ảo nhà sản xuất.
Private Service Connect hiện có thể nhắm đến đích đến chính xác ngay từ đầu bằng cách sử dụng tính năng Liên kết cổng. Trong lớp học này, bạn sẽ tìm hiểu về các trường hợp sử dụng cần có tính năng này và cách triển khai NEG ánh xạ cổng vào một khối lượng công việc Private Service Connect.
Kiến thức bạn sẽ học được
- Các trường hợp sử dụng tính năng Ánh xạ cổng Private Service Connect
- Lợi ích chính của tính năng Ánh xạ cổng PSC
- Yêu cầu về mạng
- Tạo dịch vụ nhà sản xuất Private Service Connect bằng cách sử dụng tính năng ánh xạ cổng.
- Tạo điểm cuối Private Service Connect
- Thực hiện lệnh gọi thông qua điểm cuối Private Service Connect đến dịch vụ nhà sản xuất
Bạn cần có
- Dự án Google Cloud có quyền của Chủ sở hữu
2. Các trường hợp sử dụng tính năng Ánh xạ cổng Private Service Connect
Tính năng Ánh xạ cổng sử dụng NEG Ánh xạ cổng (Nhóm điểm cuối mạng) dành riêng cho các trường hợp sử dụng PSC.
Các loại nhà sản xuất phổ biến nhất có thể hưởng lợi từ việc sử dụng tính năng Liên kết cổng là nhà sản xuất cơ sở dữ liệu NoSQL và nhà sản xuất Kafka. Tuy nhiên, bất kỳ nhà sản xuất nào yêu cầu một cụm máy ảo hiển thị cùng một dịch vụ trên các cổng giống nhau với các yêu cầu liên kết máy ảo cụ thể đều có thể sử dụng tính năng này.
Trình tạo xác định mối liên kết giữa cổng ứng dụng và máy ảo trình tạo + cổng đích. Sau đó, nhà sản xuất cần chia sẻ thông tin này với người tiêu dùng. Bên tiêu thụ sử dụng các cổng được xác định trước để xác định duy nhất máy ảo nhà sản xuất + cổng đích mà họ cần kết nối. Cổng mà trình tiêu thụ sử dụng là một cổng khác mà trình tạo sử dụng.
Các lợi ích chính của tính năng Liên kết cổng PSC
- Đơn giản: Nhà sản xuất triển khai các thành phần PSC bằng ánh xạ cổng và người dùng triển khai điểm cuối PSC. PSC tự động xử lý việc dịch địa chỉ mạng.
- Tiết kiệm chi phí: Không cần thêm tài nguyên PSC hoặc chu kỳ CPU của máy ảo nhà sản xuất. Mức giá này giống với các loại triển khai PSC khác
- Hiệu suất cao: Tính năng liên kết cổng cung cấp cùng tốc độ truyền tải theo tốc độ đường truyền và độ trễ thấp như các chế độ PSC khác
- Có thể mở rộng và sử dụng IP hiệu quả: Một địa chỉ IP từ VPC của người dùng có thể truy cập vào tối đa 1.000 máy ảo của nhà sản xuất và 1.000 mối liên kết cổng
3. Yêu cầu về mạng
- Tính năng Ánh xạ cổng yêu cầu sử dụng Trình cân bằng tải truyền qua mạng nội bộ làm trình cân bằng tải của nhà sản xuất.
- Bạn chỉ có thể sử dụng các điểm cuối PSC với tính năng Liên kết cổng (không phải Phần phụ trợ PSC hoặc Giao diện PSC).
- NEG liên kết cổng là các cấu trúc theo khu vực.
- Bạn chỉ có thể sử dụng NEG liên kết cổng trên kết nối PSC. Các quy tắc này sẽ không hoạt động nếu máy ảo ứng dụng gọi trực tiếp quy tắc chuyển tiếp của trình cân bằng tải của nhà sản xuất. Điều này được thể hiện trong cách kiểm thử dịch vụ nhà sản xuất trong lớp học lập trình này.
- Điểm cuối PSC và ngăn xếp dịch vụ của nhà sản xuất phải nằm trong các VPC khác nhau.
4. Cấu trúc liên kết của lớp học lập trình
Trong VPC của nhà sản xuất, hệ thống sẽ tạo 2 máy ảo, mỗi máy chạy 2 máy chủ web, một máy chạy trên cổng 1000 và một máy chạy trên cổng 2000. Chúng ta sẽ kiểm thử từng dịch vụ trước khi thiết lập Portmap NEG, Trình cân bằng tải truyền qua mạng nội bộ và Tệp đính kèm dịch vụ.
Trong VPC của người dùng, chúng ta sẽ thiết lập một điểm cuối PSC và kiểm thử khả năng kết nối với dịch vụ của nhà sản xuất từ một máy ảo khách.
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 luôn có thể cập nhật thông tin này.
- 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 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.
- 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 sẽ 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=us-central1 zone=us-central1-a echo $project echo $region echo $zone
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
gcloud compute networks create producer-vpc --subnet-mode custom
Tạo mạng con
Trong Cloud Shell
gcloud compute networks subnets create producer-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --purpose=PRIVATE_SERVICE_CONNECT
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. Đối với các trường hợp sử dụng chính thức, bạn cần định cỡ mạng con này cho phù hợp để hỗ trợ lượng lưu lượng truy cập đến từ tất cả các điểm cuối PSC được đính kèm. Hãy xem tài liệu về cách định cỡ mạng con NAT PSC để biết thêm thông tin.
Tạo Chính sách tường lửa mạng và Quy tắc tường lửa
Trong Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy producer-vpc-policy --network producer-vpc --name network-producer-vpc --global-firewall-policy
Để 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.
Trong Cloud Shell
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy producer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
Quy tắc tường lửa sau đây cho phép lưu lượng truy cập trên cổng TCP 1000-2000 từ mạng con PSC đến tất cả các thực thể trong mạng. Trong môi trường sản xuất, quy tắc tường lửa này chỉ nên giới hạn ở các thực thể liên kết với dịch vụ nhà sản xuất cụ thể.
Trong Cloud Shell
gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Quy tắc tường lửa sau đây cho phép tất cả lưu lượng truy cập trong mạng con dịch vụ trên cổng TCP 1000-2000. Quy tắc này sẽ được dùng để kiểm tra xem dịch vụ nhà sản xuất của chúng ta có hoạt động đúng cách hay không.
Trong Cloud Shell
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Tạo và định cấu hình máy ảo của nhà sản xuất
Tạo máy ảo
Trong Cloud Shell
gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address
Trong phần sau, hãy khởi động máy chủ http trên cổng 1000 và 2000 trên mỗi máy ảo Nhà sản xuất.
Định cấu hình máy ảo
Trong Cloud Shell
gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project
Trong Cloud Shell từ phiên portmap-vm1
mkdir 1000 cd 1000 echo "portmap-vm1 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm1 2000">index.html sudo python3 -m http.server 2000 &
Mở một Cửa sổ Cloud Shell mới
Bắt đầu bằng cách đặt lại các biến. Trong Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project
Trong Cloud Shell từ phiên portmap-vm2
mkdir 1000 cd 1000 echo "portmap-vm2 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm2 2000">index.html sudo python3 -m http.server 2000 &
8. Dịch vụ nhà sản xuất kiểm thử
Trước tiên, chúng ta cần lấy địa chỉ IP của các thực thể bản đồ cổng. Ghi lại cả hai địa chỉ IP này.
Mở một Cửa sổ Cloud Shell mới
Bắt đầu bằng cách đặt lại các biến. Trong Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute instances describe portmap-vm1 \ --format='get(networkInterfaces[0].networkIP)' --zone $zone gcloud compute instances describe portmap-vm2\ --format='get(networkInterfaces[0].networkIP)' --zone $zone
Đăng nhập vào thực thể kiểm thử. Trong Cloud Shell
gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project curl [portmap-vm1 IP]:1000
Kết quả dự kiến
portmap-vm1 1000
Trong Cloud Shell
curl [portmap-vm1 IP]:2000
Kết quả dự kiến
portmap-vm1 2000
Trong Cloud Shell
curl [portmap-vm2 IP]:1000
Kết quả dự kiến
portmap-vm2 1000
Trong Cloud Shell
curl [portmap-vm2 IP]:2000
Kết quả dự kiến
portmap-vm2 2000
Thoát khỏi test-client-vm
9. Tạo Dịch vụ nhà sản xuất bằng Portmap NEG
Tạo thành phần Trình cân bằng tải
Trong Cloud Shell
gcloud compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP
Thêm các điểm cuối vào Portmap NEG để tạo mối liên kết từ cổng ứng dụng khách đến cổng nhà sản xuất. Phương thức sản xuất tạo mối liên kết này và sẽ có phương thức riêng để truyền đạt thông tin này cho phương thức tiêu thụ. Việc ánh xạ cổng cụ thể không được chia sẻ thông qua PSC.
Trong Cloud Shell
gcloud compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000
Hoàn tất việc xây dựng trình cân bằng tải.
Trong Cloud Shell
gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes
Tạo tệp đính kèm dịch vụ
Trong Cloud Shell
gcloud compute service-attachments create portmap-service-attachment --region=$region --producer-forwarding-rule=portmap-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet
Tiếp theo, hãy truy xuất và ghi lại URI tệp đính kèm dịch vụ để định cấu hình điểm cuối PSC trong môi trường người dùng.
Trong Cloud Shell
gcloud compute service-attachments describe portmap-service-attachment --region=$region
Ví dụ về kết quả đầu ra dự kiến
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2024-07-19T10:02:29.432-07:00' description: '' enableProxyProtocol: false fingerprint: LI8D6JNQsLA= id: '6207474793859982026' kind: compute#serviceAttachment name: portmap-service-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: '94288091358954472' low: '6207474793859982026' 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/portmap-service-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-fr
10. Tạo mạng VPC dành cho người dùng
Mạng VPC
Trong Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Tạo mạng con
Trong Cloud Shell
gcloud compute networks subnets create consumer-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access
Tạo Chính sách tường lửa mạng và Quy tắc tường lửa
Trong Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
Mạng người dùng chỉ cần quyền truy cập SSH từ IAP.
11. Tạo máy ảo, Điểm cuối PSC và Kiểm thử khả năng kết nối
Lúc này, bạn sẽ thấy 3 cửa sổ Cloud Shell đang mở. Bạn phải có một phiên đang mở với portmap-vm1. Một phiên sẽ mở với portmap-vm2 và một phiên sẽ là phiên đang hoạt động.
Tạo Máy ảo thử nghiệm
Trong Cloud Shell
gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address
Tạo Điểm cuối PSC
Trong Cloud Shell
gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10 gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]
Kiểm thử khả năng kết nối
Trong Cloud Shell
gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project curl 10.0.0.10:1001
Kết quả dự kiến
portmap-vm1 1000
Trong Cloud Shell
curl 10.0.0.10:1002
Kết quả dự kiến
portmap-vm1 2000
Trong Cloud Shell
curl 10.0.0.10:1003
Kết quả dự kiến
portmap-vm2 1000
Trong Cloud Shell
curl 10.0.0.10:1004
Kết quả dự kiến
portmap-vm2 2000
12. Các bước dọn dẹp
Thoát khỏi phiên bản máy ảo (tất cả cửa sổ)
exit
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 psc-portmap-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy=consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-client-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete portmap-service-attachment --region=$region -q gcloud compute forwarding-rules delete portmap-fr --region=$region -q gcloud compute backend-services delete portmap-bes --region=$region -q gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q gcloud compute instances delete test-client-vm --zone=$zone -q gcloud compute instances delete portmap-vm2 --zone=$zone -q gcloud compute instances delete portmap-vm1 --zone=$zone -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-service-subnet --region $region -q gcloud compute networks delete producer-vpc -q
13. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này.
Nội dung đã đề cập
- Các trường hợp sử dụng tính năng Ánh xạ cổng Private Service Connect
- Lợi ích chính của tính năng Ánh xạ cổng PSC
- Yêu cầu về mạng
- Tạo dịch vụ nhà sản xuất Private Service Connect bằng cách sử dụng tính năng ánh xạ cổng.
- Tạo điểm cuối Private Service Connect
- Thực hiện lệnh gọi thông qua điểm cuối Private Service Connect đến dịch vụ nhà sản xuất