1. Giới thiệu
Private Service Connect cho phép nhà sản xuất dịch vụ cung cấp dịch vụ riêng tư cho người tiêu dùng dịch vụ. Private Service Connect mang lại những lợi ích sau:
- Mạng VPC của nhà sản xuất dịch vụ có thể hỗ trợ nhiều người dùng dịch vụ.
- Mỗi người dùng kết nối với một địa chỉ IP nội bộ mà họ xác định. Private Service Connect thực hiện dịch địa chỉ mạng (NAT) để định tuyến yêu cầu đến nhà sản xuất dịch vụ.

Hình 2. Private Service Connect sử dụng các điểm cuối và tệp đính kèm dịch vụ để cho phép người dùng dịch vụ gửi lưu lượng truy cập từ mạng VPC của người dùng đến các dịch vụ trong mạng VPC của nhà sản xuất dịch vụ (nhấp để phóng to).
Kiến thức bạn sẽ học được
- Lợi ích của Private Service Connect
- Các khái niệm chính dành cho người dùng dịch vụ
- Các khái niệm chính dành cho nhà sản xuất dịch vụ
- Tạo môi trường nhà sản xuất
- Hiển thị dịch vụ (môi trường nhà sản xuất) thông qua một tệp đính kèm dịch vụ
- Tạo môi trường người tiêu dùng
- Tạo quy tắc chuyển tiếp trong mạng lưới người tiêu dùng
- Xác thực quyền truy cập của người tiêu dùng
- Bật chế độ kiểm soát quyền truy cập theo chính sách
- Sử dụng quy tắc tường lửa xuất để chặn quyền truy cập vào quy tắc chuyển tiếp của người tiêu dùng
Bạn cần có
- Có kiến thức về việc triển khai Cụm và dịch vụ GKE
- Kiến thức về trình cân bằng tải nội bộ
- Có thể tạo VPC trong 2 dự án
- Có thể tạo Cụm GKE
2. Lợi ích của Private Service Connect
Với PSC, bạn sẽ có một số lợi ích so với việc sử dụng VPC Peering:
Kiểm soát tốt hơn không gian IP riêng tư
- Là người dùng dịch vụ, bạn có thể kiểm soát địa chỉ IP riêng tư được dùng để kết nối với dịch vụ được quản lý mà bạn muốn truy cập.
- Là một người tiêu dùng dịch vụ, bạn không cần lo lắng về việc đặt trước dải địa chỉ IP riêng tư cho các dịch vụ phụ trợ được sử dụng trong VPC của bạn. Bạn chỉ cần chọn một địa chỉ IP trong mạng con của mình để kết nối với các dịch vụ của nhà sản xuất.
- Là nhà sản xuất dịch vụ, bạn có thể chọn triển khai mô hình nhiều đối tượng thuê, trong đó VPC của bạn chứa các dịch vụ phục vụ nhiều VPC của người dùng. Người dùng có dải mạng con trùng lặp không còn là vấn đề nữa.
- Là một nhà cung cấp dịch vụ, bạn có thể mở rộng quy mô dịch vụ của mình đến số lượng phiên bản máy ảo cần thiết mà không cần liên hệ với người dùng để có thêm địa chỉ IP.
Tăng cường bảo mật và tách biệt
- Là một người tiêu dùng dịch vụ, chỉ bạn mới có thể bắt đầu liên lạc với nhà sản xuất dịch vụ. Khả năng kết nối một chiều này giúp đơn giản hoá đáng kể cấu hình tường lửa, nhưng cũng giảm rủi ro do lưu lượng truy cập giả mạo đến từ nhà sản xuất dịch vụ.
- Là nhà sản xuất dịch vụ, bạn không cần thay đổi các quy tắc tường lửa dựa trên dải mạng con trong VPC của người dùng. Bạn chỉ cần tạo các quy tắc tường lửa cho dải địa chỉ IP NAT được định cấu hình cho dịch vụ của mình.
Khả năng mở rộng tốt hơn
- PSC cho phép thiết kế có khả năng mở rộng cao bằng cách hỗ trợ hàng nghìn Người dùng và cho phép Nhà sản xuất dịch vụ cung cấp các dịch vụ đa khách hàng hoặc một khách hàng có khả năng mở rộng cao.
- Là một người tiêu dùng dịch vụ sử dụng Private Service Connect, bạn có thể tạo tài nguyên theo yêu cầu trong VPC của mình. Quy mô của việc này không bị ảnh hưởng bởi số lượng tài nguyên như vậy được tạo trong VPC của nhà sản xuất.
3. Các khái niệm chính dành cho người dùng dịch vụ
Bạn có thể sử dụng các điểm cuối Private Service Connect để sử dụng các dịch vụ nằm ngoài mạng VPC của mình. Người dùng dịch vụ tạo các điểm cuối Private Service Connect kết nối với một dịch vụ mục tiêu.
Điểm cuối
Bạn sử dụng các điểm cuối Private Service Connect để kết nối với một dịch vụ mục tiêu. Các điểm cuối có địa chỉ IP nội bộ trong mạng VPC của bạn và dựa trên tài nguyên quy tắc chuyển tiếp.
Bạn gửi lưu lượng truy cập đến điểm cuối, điểm cuối này sẽ chuyển tiếp lưu lượng truy cập đó đến các mục tiêu bên ngoài mạng VPC.
Mục tiêu
Các điểm cuối Private Service Connect có một mục tiêu, đó là dịch vụ mà bạn muốn kết nối:
- Một gói API:
- Tất cả API: hầu hết các API của Google
- VPC-SC: Các API mà VPC Service Controls hỗ trợ
- Một dịch vụ đã phát hành trong một mạng VPC khác. Dịch vụ này có thể do tổ chức của bạn hoặc bên thứ ba quản lý.
Dịch vụ đã xuất bản
Để kết nối điểm cuối với dịch vụ của nhà sản xuất dịch vụ, bạn cần có tệp đính kèm dịch vụ cho dịch vụ đó. URI đính kèm dịch vụ có định dạng sau: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. Các khái niệm chính dành cho nhà sản xuất dịch vụ
Để cung cấp dịch vụ cho người tiêu dùng, bạn tạo một hoặc nhiều mạng con chuyên dụng để sử dụng cho tính năng chuyển đổi địa chỉ mạng (NAT) của địa chỉ IP người tiêu dùng. Sau đó, bạn tạo một phần đính kèm dịch vụ tham chiếu đến các mạng con đó.
Mạng con Kết nối dịch vụ riêng tư
Để cung cấp một dịch vụ, trước tiên, nhà sản xuất dịch vụ sẽ tạo một hoặc nhiều mạng con cho mục đích Private Service Connect.
Khi một yêu cầu được gửi từ mạng VPC của người dùng, địa chỉ IP nguồn của người dùng sẽ được dịch bằng NAT nguồn (SNAT) thành một địa chỉ IP được chọn trong một trong các mạng con Private Service Connect.
Nếu bạn muốn giữ lại thông tin địa chỉ IP kết nối của người dùng cá nhân, hãy xem phần Xem thông tin kết nối của người dùng cá nhân.
Bạn không thể dùng các mạng con này cho các tài nguyên như phiên bản máy ảo hoặc quy tắc chuyển tiếp. Các mạng con chỉ được dùng để cung cấp địa chỉ IP cho SNAT của các kết nối đến của người tiêu dùng.
Mạng con Private Service Connect phải chứa ít nhất một địa chỉ IP cho mỗi 63 VM người dùng để mỗi VM người dùng được phân bổ 1.024 bộ giá trị nguồn cho tính năng dịch địa chỉ mạng.
Kích thước tối thiểu cho một mạng con Private Service Connect là /24.
Tệp đính kèm dịch vụ
Nhà sản xuất dịch vụ cung cấp dịch vụ của họ thông qua một tệp đính kèm dịch vụ.
- Để hiển thị một dịch vụ, nhà sản xuất dịch vụ sẽ tạo một tệp đính kèm dịch vụ tham chiếu đến quy tắc chuyển tiếp của trình cân bằng tải của dịch vụ.
- Để truy cập vào một dịch vụ, người dùng dịch vụ sẽ tạo một điểm cuối tham chiếu đến tệp đính kèm dịch vụ.
Lựa chọn ưu tiên về kết nối
Khi tạo một dịch vụ, bạn sẽ chọn cách cung cấp dịch vụ đó. Bạn có hai tùy chọn:
- Tự động chấp nhận các kết nối cho tất cả dự án – mọi người dùng dịch vụ đều có thể định cấu hình một điểm cuối và tự động kết nối với dịch vụ.
- Chấp nhận các kết nối cho các dự án đã chọn – người tiêu dùng dịch vụ định cấu hình một điểm cuối để kết nối với dịch vụ và nhà sản xuất dịch vụ chấp nhận hoặc từ chối các yêu cầu kết nối.
Yêu cầu và giới hạn
- Có áp dụng các giới hạn đối với Private Service Connect.
- Bạn có thể tạo một tệp đính kèm dịch vụ trong GKE phiên bản 1.21.4-gke.300 trở lên.
- Bạn không thể sử dụng cùng một mạng con trong nhiều cấu hình đính kèm dịch vụ.
- Bạn phải tạo một dịch vụ GKE sử dụng trình cân bằng tải TCP/UDP nội bộ.
5. Môi trường thử nghiệm
Mạng lưới người tiêu dùng bao gồm một địa chỉ IP tĩnh được dùng để bắt nguồn các yêu cầu đến nhà sản xuất dịch vụ, ngoài target-service-attachment (đính kèm dịch vụ mục tiêu) ánh xạ đến service attachment (đính kèm dịch vụ) của nhà sản xuất (dịch vụ đã xuất bản).

Bây giờ, hãy cùng xem xét mạng lưới nhà sản xuất. Lưu ý rằng mạng nhà sản xuất không có mối liên kết với mạng người tiêu dùng. Thay vào đó, mạng nhà sản xuất chứa một tệp đính kèm dịch vụ (dịch vụ đã xuất bản) mà người tiêu dùng sử dụng cho các dịch vụ. Phần đính kèm dịch vụ của nhà sản xuất được một ILB L4 cổng vào GKE (dịch vụ đã xuất bản) hiển thị, cho phép giao tiếp với các Pod GKE và các ứng dụng được liên kết.
Mạng con NAT được dùng khi một yêu cầu được gửi từ mạng VPC của người dùng, địa chỉ IP nguồn của người dùng được dịch bằng NAT nguồn (SNAT) sang một địa chỉ IP được chọn từ một trong các mạng con Private Service Connect.
Bạn không thể dùng các mạng con này cho các tài nguyên như phiên bản máy ảo hoặc quy tắc chuyển tiếp. Các mạng con chỉ được dùng để cung cấp địa chỉ IP cho SNAT của các kết nối đến của người tiêu dùng.
Để tìm hiểu thêm về L4ILB cho GKE Private Service Connect và có quyền truy cập trực tiếp vào nội dung được dùng để tham khảo phòng thí nghiệm này, hãy xem phần sau.
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ị 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 dùng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
- Mã dự án phải là 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 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). Vì vậy, nếu không thích mã này, bạn có thể tạo một mã ngẫu nhiên khác hoặc thử mã của riêng mình để xem mã đó có dùng được hay không. Sau đó, mã này sẽ "đóng băng" sau khi dự án được tạo. - 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.
- 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, hãy làm theo mọi hướng dẫn "dọn dẹp" ở cuối lớp học lập trình. 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 GCP, 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 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:

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 chỉ cần một trình duyệt là có thể thực hiện mọi thao tác trong phòng thí nghiệm này.
6. Trước khi bắt đầu
Lớp học lập trình yêu cầu 2 dự án, mặc dù không bắt buộc đối với PSC. Lưu ý các tài liệu tham khảo để hỗ trợ một hoặc nhiều dự án.
Single Project – Update project to support producer and consumer network (Dự án đơn lẻ – Cập nhật dự án để hỗ trợ mạng lưới nhà sản xuất và người tiêu dùng)
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-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Nhiều dự án – Cập nhật dự án để hỗ trợ mạng nhà sản xuất
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-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Xin lưu ý quy ước mã hoá màu sau đây:

7. Tạo mạng VPC của Nhà sản xuất

Mạng VPC
Từ Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Tạo mạng con Cụm GKE
Từ Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
Tạo cụm GKE
Từ Cloud Shell
gcloud container clusters create gke-psc-l4 \
--release-channel=rapid \
--enable-ip-alias \
--zone=us-central1-a \
--network gke-producer-l4-vpc \
--num-nodes 1 \
--subnetwork node-subnet1 \
--cluster-secondary-range-name pod \
--services-secondary-range-name service
Tạo một mạng con cho Private Service Connect (Mạng con NAT)
Bạn phải tạo một hoặc nhiều mạng con chuyên dụng để sử dụng với Private Service Connect. Nếu đang sử dụng Google Cloud Console để xuất bản một dịch vụ, bạn có thể tạo các mạng con trong quy trình đó.
Để biết thông tin về các mạng con Private Service Connect, hãy xem bài viết Mạng con Private Service Connect.
Từ Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \
--project $prodproject \
--network gke-producer-l4-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
8. Triển khai khối lượng công việc và các dịch vụ
Tệp kê khai sau đây mô tả một Deployment chạy một hình ảnh vùng chứa ứng dụng web mẫu. Lưu tệp kê khai dưới dạng my-deployment.yaml từ Cloud Shell
apiVersion: apps/v1
kind: Deployment
metadata:
name: psc-ilb
spec:
replicas: 3
selector:
matchLabels:
app: psc-ilb
template:
metadata:
labels:
app: psc-ilb
spec:
containers:
- name: whereami
image: gcr.io/google-samples/whereami:v1.2.1
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
Áp dụng tệp kê khai cho cụm của bạn từ Cloud Shell
kubectl apply -f my-deployment.yaml
Tạo dịch vụ
Tệp kê khai sau đây mô tả một dịch vụ tạo trình cân bằng tải TCP/UDP nội bộ trên cổng TCP 8080. Lưu tệp kê khai dưới dạng my-service.yaml từ Cloud Shell.
apiVersion: v1
kind: Service
metadata:
name: gke-l4-psc
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: psc-ilb
ports:
- port: 80
targetPort: 8080
protocol: TCP
Áp dụng tệp kê khai cho cụm của bạn từ Cloud Shell
kubectl apply -f my-service.yaml
Tạo ServiceAttachment
Tệp kê khai sau đây mô tả một ServiceAttachment cho phép người dùng dịch vụ truy cập vào dịch vụ mà bạn đã tạo. Lưu tệp kê khai dưới dạng my-psc.yaml trong Cloud Shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
Áp dụng tệp kê khai cho cụm của bạn từ Cloud Shell
kubectl apply -f my-psc.yaml
ServiceAttachment có các trường sau:
- connectionPreference: lựa chọn ưu tiên kết nối xác định cách khách hàng kết nối với dịch vụ. Bạn có thể sử dụng tính năng phê duyệt dự án tự động bằng cách dùng ACCEPT_AUTOMATIC hoặc phê duyệt dự án rõ ràng bằng cách dùng ACCEPT_MANUAL. Để biết thêm thông tin, hãy xem bài viết Xuất bản dịch vụ bằng Private Service Connect.
- natSubnets: danh sách tên tài nguyên mạng con để dùng cho tệp đính kèm dịch vụ.
- proxyProtocol: khi được đặt thành true, IP nguồn của người dùng và mã nhận dạng kết nối Private Service Connect sẽ có trong các yêu cầu. Trường này không bắt buộc và mặc định là false nếu không được cung cấp.
- consumerAllowList: danh sách các dự án người dùng được phép kết nối với ServiceAttachment. Bạn chỉ có thể sử dụng trường này khi connectionPreference là ACCEPT_MANUAL. Để biết thêm thông tin về trường này và các lựa chọn khác, hãy xem bài viết Xuất bản các dịch vụ bằng Kết nối dịch vụ riêng tư.
Xác thực nhà sản xuất
Xem thông tin chi tiết về Service Attachment
Bạn có thể xem thông tin chi tiết về một ServiceAttachment bằng lệnh sau đây trong Cloud Shell
kubectl describe serviceattachment emoji-sa
Xem ILB L4 của GKE
Trên bảng điều khiển đám mây, hãy chuyển đến Network Services (Dịch vụ mạng) → Load Balancing (Cân bằng tải) → Frontends (Giao diện người dùng)
Xác định địa chỉ IP giao diện người dùng phù hợp với mạng con của nút 192.168.10.0/24 đã xác định trước đó, hãy lưu ý đến ảnh chụp màn hình bên dưới, địa chỉ IP của bạn có thể khác.

Xem dịch vụ đã xuất bản
Trên bảng điều khiển đám mây, hãy chuyển đến Network Services (Dịch vụ mạng) → Private Service Connect (Dịch vụ kết nối riêng tư) → Published Services (Dịch vụ đã xuất bản)
Xác định dịch vụ bằng mạng được dùng trong phòng thí nghiệm, gke-producer-l4-vpc,,lưu ý ảnh chụp màn hình bên dưới, mặc dù giá trị Dịch vụ và Mục tiêu của bạn có thể khác

Nhấp vào tên dịch vụ để chuyển đến màn hình bên dưới, lưu ý thông tin chi tiết về tệp đính kèm dịch vụ được điền sẵn trong phần Thông tin cơ bản. Ngoài ra, hãy lưu ý rằng phần "Dự án được kết nối" đang trống vì người dùng chưa đăng ký dịch vụ. CHẤP NHẬN và TỪ CHỐI sẽ vẫn bị mờ vì Lựa chọn ưu tiên về kết nối được đặt thành "ACCEPT_AUTOMATICALLY". Bạn có thể thay đổi lựa chọn này thành "ACCEPT_MANUAL" bất cứ lúc nào bằng cách sửa đổi tệp yaml đính kèm dịch vụ (my-psc.yaml).


9. Tạo mạng VPC cho người tiêu dùng

Trong phần sau, VPC người dùng sẽ được định cấu hình trong một dự án riêng biệt. Hoạt động giao tiếp giữa mạng lưới người tiêu dùng và nhà sản xuất được thực hiện thông qua tệp đính kèm dịch vụ được xác định trong mạng lưới người tiêu dùng.
Lớp học lập trình yêu cầu 2 dự án, mặc dù không bắt buộc đối với PSC. Lưu ý các tài liệu tham khảo để hỗ trợ một hoặc nhiều dự án.
Single Project – Update project to support producer and consumer network (Dự án đơn lẻ – Cập nhật dự án để hỗ trợ mạng lưới nhà sản xuất và người tiêu dùng)
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-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Nhiều dự án – Cập nhật dự án để hỗ trợ mạng lưới người tiêu dùng
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-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Mạng VPC
Từ Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Tạo mạng con cho PSC
Từ Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Tạo một mạng con cho các phiên bản máy ảo
Từ Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
Tạo địa chỉ IP tĩnh để truy cập vào dịch vụ đã xuất bản
Từ Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Tạo quy tắc cho tường lửa
Để 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
Từ Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Mặc dù không bắt buộc đối với PSC, hãy tạo một quy tắc tường lửa xuất cảnh để giám sát lưu lượng truy cập PSC của người tiêu dùng đến tệp đính kèm dịch vụ của nhà sản xuất
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. Tạo phiên bản kiểm thử người tiêu dùng 1
Từ Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. Tạo phiên bản kiểm thử người tiêu dùng 2
Từ Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. Tạo một tệp đính kèm dịch vụ
Ở bước trước, bạn đã sao chép chuỗi Producer Service Attachment (Phần đính kèm dịch vụ của nhà sản xuất) vào một nơi an toàn. Hãy chèn giá trị đã lưu trữ vào trường "target-service-attachment".

Từ Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. Xác thực – Người tiêu dùng
Chúng tôi sẽ sử dụng nhật ký CURL và tường lửa để xác thực thông tin liên lạc của người tiêu dùng và nhà sản xuất.
Trong dự án của Consumer, các địa chỉ IP tĩnh được dùng để bắt đầu giao tiếp với Producer. Việc liên kết địa chỉ IP tĩnh với quy tắc chuyển tiếp của Người dùng được xác thực bằng cách thực hiện cú pháp sau.

Từ Consumer VPCs Cloud, hãy xác định quy tắc chuyển tiếp và IP tĩnh
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Đầu ra bên dưới, chúng ta sẽ sử dụng 10.0.60.100 để liên hệ với nhà sản xuất ở bước sau
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
Xem Dịch vụ được kết nối
Trên bảng điều khiển đám mây, hãy chuyển đến Network Services (Dịch vụ mạng) → Private Service Connect (Kết nối dịch vụ riêng tư) → Connected Endpoints (Điểm cuối được kết nối) và xem điểm cuối mới tạo

Hãy đăng nhập vào consumer-instance-1 và kiểm tra quyền truy cập vào Dịch vụ do nhà sản xuất phát hành
Từ Cloud Shell, hãy mở một thẻ mới bằng cách nhấp vào dấu +

Trên Cloud Shell, hãy thực hiện các thao tác sau:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
Sau khi đăng nhập vào phiên bản consumer-instance-1, hãy thực hiện một lệnh curl đối với Địa chỉ IP của quy tắc chuyển tiếp 10.0.60.100
Từ Cloud Shell, hãy thực hiện các thao tác sau:
user@consumer-instance-1:~$ curl 10.0.60.100
Kết quả ví dụ
user@consumer-instance-1:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
"pod_name": "psc-ilb-588887dfdb-w7tbr",
"pod_name_emoji": "🤷",
"project_id": "prodorijectid",
"timestamp": "2021-10-01T17:43:37",
"zone": "us-central1-a"
Hãy đăng nhập vào consumer-instance-2 và kiểm tra quyền truy cập vào Dịch vụ do nhà sản xuất phát hành
Từ Cloud Shell, hãy mở một thẻ mới bằng cách nhấp vào dấu +

Trên Cloud Shell, hãy thực hiện các thao tác sau:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Từ Cloud Shell, hãy thực hiện các thao tác sau:
user@consumer-instance-2:~$ curl 10.0.60.100
Kết quả ví dụ
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
"pod_name": "psc-ilb-588887dfdb-4jdql",
"pod_name_emoji": "🧑🏿",
"project_id": "prodproject",
"timestamp": "2021-10-01T17:49:51",
"zone": "us-central1-a"
14. Ghi nhật ký tường lửa – Xác thực được phân bổ
Sử dụng Trình khám phá nhật ký để xác thực quy tắc tường lửa "vpc-consumner-psc" đang ghi lại luồng giữa thực thể của VM và IP tĩnh
- Trên Cloud Console, hãy xác định mục Ghi nhật ký hoạt động → Trình khám phá nhật ký
- Trong trường Truy vấn, hãy cập nhật mục bên dưới bằng yourconsumerproject rồi chọn "Chạy truy vấn"
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Kết quả truy vấn cung cấp thông tin sau đây cho mỗi ảnh chụp màn hình được cung cấp

- Mở rộng nhật ký (jsonPayload → Connection) và xác định đầu ra được cung cấp bên dưới. Lưu ý rằng dest_ip: 10.0.60.100 là IP TCP TĨNH dùng để truy cập vào Dịch vụ nhà sản xuất và src_ip: 10.0.70.10 hoặc 10.0.70.20 là(các) địa chỉ IP của phiên bản VM. Được phép xử lý.

15. Xác thực – Nhà sản xuất

Trong dự án Producers, hãy xác minh rằng tệp đính kèm dịch vụ đã được kết nối thành công. Chuyển đến Network Services (Dịch vụ mạng) → Private Service Connect (Dịch vụ kết nối riêng tư) → Published Services (Dịch vụ đã phát hành)

Khi bạn nhấp vào dịch vụ này, dự án người dùng đã kết nối và trạng thái của bạn sẽ xuất hiện như minh hoạ bên dưới

16. Hạn chế quyền truy cập vào Dịch vụ đã xuất bản

Cho đến nay, chúng ta đã xác nhận rằng cả hai phiên bản đều có quyền truy cập vào Dịch vụ đã xuất bản. Hãy tạo một Quy tắc tường lửa đầu ra để từ chối quyền truy cập của consumer-instance-2 vào Dịch vụ đã xuất bản.
Theo mặc định, GCP cho phép tất cả lưu lượng truy cập đi nhưng từ chối tất cả lưu lượng truy cập đến. Trong các bước sau, chúng ta sẽ tạo một quy tắc tường lửa dựa trên thẻ mạng "google2" đã xác định trước đó. Thẻ này được dùng khi tạo consumer-instance-2 để từ chối quyền truy cập vào Dịch vụ đã xuất bản.

Mở một thẻ cloud shell mới bằng cách nhấp vào + thực thi quy tắc tường lửa sau trong cloud shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
Bây giờ, hãy kiểm thử xem consumer-instance-2 có thể truy cập vào Dịch vụ đã xuất bản hay không. Nếu phiên của bạn hết thời gian chờ, bạn sẽ cần mở một cloud shell + mới và đăng nhập vào VM như được trình bày chi tiết bên dưới.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Trên Cloud Shell, hãy thực hiện các thao tác sau:
user@consumer-instance-2:~$ curl 10.0.60.100
Kết quả ví dụ
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Ghi nhật ký tường lửa – Xác thực bị từ chối
Sử dụng Trình khám phá nhật ký để xác thực quy tắc tường lửa "psc-endpoint-deny-egress" đang ghi lại luồng dữ liệu giữa phiên bản máy ảo và IP tĩnh
- Trên Cloud Console, hãy xác định mục Ghi nhật ký hoạt động → Trình khám phá nhật ký
- Trong trường Truy vấn, hãy cập nhật mục bên dưới bằng yourconsumerproject rồi chọn "Chạy truy vấn"
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Kết quả truy vấn cung cấp thông tin sau đây cho mỗi ảnh chụp màn hình được cung cấp

- Mở rộng nhật ký và xác định đầu ra được cung cấp bên dưới. Lưu ý rằng dest_ip: 10.0.60.100 là IP TCP TĨNH và src_ip: 10.0.70.10 hoặc 10.0.70.20 là(các) địa chỉ IP của phiên bản VM. Kết quả là Từ chối.

17. Các bước dọn dẹp
Các bước dọn dẹp mạng lưới nhà sản xuất

Xoá các thành phần trong phòng thí nghiệm khỏi một cloud shell trong thiết bị đầu cuối của dự án Producer
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet

Các bước dọn dẹp mạng lưới người tiêu dùng
Xoá các thành phần trong phòng thí nghiệm khỏi một cloud shell trong thiết bị đầu cuối của dự án Consumer
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. 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
- Lợi ích của Private Service Connect
- Các khái niệm chính dành cho người dùng dịch vụ
- Các khái niệm chính dành cho nhà sản xuất dịch vụ
- Tạo môi trường nhà sản xuất
- Hiển thị dịch vụ (môi trường nhà sản xuất) thông qua một tệp đính kèm dịch vụ
- Tạo môi trường người tiêu dùng
- Tạo quy tắc chuyển tiếp trong mạng lưới người tiêu dùng
- Xác thực quyền truy cập của người tiêu dùng
- Bật chế độ kiểm soát quyền truy cập theo chính sách
- Sử dụng quy tắc tường lửa xuất để chặn quyền truy cập vào quy tắc chuyển tiếp cho người tiêu dùng