Phòng thí nghiệm: Truyền tải PSC NCC

1. Giới thiệu

Tổng quan

Trong phòng thí nghiệm này, người dùng sẽ khám phá cách trung tâm của Network Connectivity Center truyền một điểm cuối Kết nối dịch vụ riêng tư đến các mạng VPC nhánh.

Tài nguyên trung tâm cung cấp một mô hình quản lý kết nối tập trung để kết nối lưu lượng truy cập của các VPC nhánh với các điểm cuối PSC.

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

Trong lớp học lập trình này, bạn sẽ tạo một mạng NCC để truyền một điểm cuối kết nối dịch vụ riêng tư đến phiên bản Cloud SQL.

74bf390e323ea3bb.png

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

  • Sử dụng Private Service Connect để kết nối với một phiên bản Cloud SQL
  • Sử dụng trung tâm NCC để truyền bá mạng con PSC đến tất cả các VPC phụ để cho phép kết nối mạng từ nhiều mạng VPC.

Bạn cần có

  • Kiến thức về Cloud Networking của GCP
  • Kiến thức cơ bản về Cloud SQL
  • Dự án trên Google Cloud
  • Kiểm tra Hạn mức:Mạng truyền hìnhyêu cầu bổ sung Mạng truyền hình nếu cần, ảnh chụp màn hình bên dưới:

6bc606cb34bce7e8.png

Mục tiêu

  • Thiết lập môi trường GCP
  • Thiết lập phiên bản Cloud SQL cho MySql bằng Private Service Connect
  • Định cấu hình Trung tâm kết nối mạng để truyền các điểm cuối PSC
  • Định cấu hình Network Connectivity Center với VPC làm mạng vệ tinh
  • Xác thực đường dẫn dữ liệu
  • Khám phá các tính năng về khả năng sử dụng dịch vụ NCC
  • Dọn dẹp tài nguyên

Trước khi bắt đầu

Bảng điều khiển Google Cloud và Cloud Shell

Để tương tác với GCP, chúng ta sẽ sử dụng cả Google Cloud Console và Cloud Shell trong suốt phòng thực hành này.

Dự án NCC Hub trên Google Cloud Console

Bạn có thể truy cập vào Cloud Console tại https://console.cloud.google.com.

Thiết lập các mục sau trong Google Cloud để dễ dàng định cấu hình Network Connectivity Center:

Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án Google Cloud.

Khởi chạy Cloud Shell. Lớp học lập trình này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.

gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project

Vai trò IAM

NCC yêu cầu các vai trò IAM truy cập vào các API cụ thể. Hãy nhớ định cấu hình người dùng của bạn bằng các vai trò NCC IAM theo yêu cầu.

Vai trò/Nội dung mô tả

Quyền

networkconnectivity.networkAdmin – Cho phép quản trị viên mạng quản lý trung tâm và các mạng vệ tinh.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager – Cho phép thêm và quản lý các spoke trong một trung tâm. Được dùng trong VPC dùng chung, nơi dự án lưu trữ sở hữu Hub, nhưng các quản trị viên khác trong các dự án khác có thể thêm các spoke để đính kèm vào Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – Cho phép người dùng mạng xem các thuộc tính khác nhau của trung tâm và các mạng vệ tinh.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. Thiết lập môi trường mạng

Tổng quan

Trong phần này, chúng ta sẽ triển khai 2 mạng VPC và các quy tắc tường lửa trong một dự án duy nhất. Sơ đồ logic minh hoạ môi trường mạng sẽ được thiết lập trong bước này.

8884a55988881e17.png

Tạo VPC1 và một mạng con

Mạng VPC chứa các mạng con mà bạn sẽ cài đặt GCE VM để xác thực đường dẫn dữ liệu

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}" 

Tạo mạng con PSC trong VPC

Sử dụng lệnh bên dưới để tạo một mạng con trong VPC spoke sẽ được phân bổ cho PSC-EP.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
vpc_spoke_subnet_ip_range="192.168.0.0/24"

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}" 

Tạo VPC3 và một mạng con

vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
vpc_spoke_subnet_ip_range="10.0.3.0/24"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"

Định cấu hình các quy tắc tường lửa của VPC1

Các quy tắc này sẽ cho phép kết nối mạng từ các dải RFC1918 và Identity Access Proxy

vpc_spoke_network_name="vpc1-spoke"

gcloud compute firewall-rules create vpc1-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

gcloud compute firewall-rules create vpc1-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20

Định cấu hình VPC định tuyến và các quy tắc tường lửa VPC

vpc_spoke_network_name="vpc3-spoke"

gcloud compute firewall-rules create vpc3-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

gcloud compute firewall-rules create vpc3-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20

Định cấu hình máy ảo GCE trong VPC1

Bạn cần có quyền truy cập Internet tạm thời để cài đặt các gói, vì vậy, hãy định cấu hình phiên bản để sử dụng địa chỉ IP ngoài.

vm_vpc1_spoke_name="csql-vpc1-vm"
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
region="us-central1"
zone="us-central1-a"

gcloud compute instances create "${vm_vpc1_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'

Định cấu hình máy ảo GCE trong VPC3

Bạn cần có quyền truy cập Internet tạm thời để cài đặt các gói, vì vậy, hãy định cấu hình phiên bản để sử dụng địa chỉ IP ngoài.

vm_vpc_spoke_name="csql-vpc3-vm"
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
region="us-central1"
zone="us-central1-a"

gcloud compute instances create "${vm_vpc_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'

3. Tạo phiên bản Cloud SQL

Sử dụng các lệnh bên dưới để tạo một phiên bản và bật Private Service Connect .

Quá trình này sẽ mất vài phút.

gcloud config set project ${project}

gcloud sql instances create mysql-instance \
--project="${project}" \
--region=us-central1 \
--enable-private-service-connect \
--allowed-psc-projects="${project}" \
--availability-type=zonal \
--no-assign-ip \
--tier=db-f1-micro \
--database-version=MYSQL_8_0 \
--enable-bin-log

Xác định URI của tệp đính kèm dịch vụ của phiên bản Cloud SQL

Sử dụng lệnh gcloud sql instances describe để xem thông tin về một phiên bản có bật Private Service Connect. Ghi lại trường pscServiceAttachmentLink. Trường này hiển thị URI trỏ đến tệp đính kèm dịch vụ của phiên bản. Chúng ta sẽ cần thông tin này trong phần tiếp theo.

gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'

4. Điểm cuối PSC đến Cloud SQL

Dự trữ một địa chỉ IP nội bộ cho điểm cuối PSC

Sử dụng lệnh bên dưới để đặt trước một địa chỉ IP nội bộ cho điểm cuối Private Service Connect,

region="us-central1"
vpc_spoke_subnet_name="csql-psc-subnet"

gcloud compute addresses create csql-psc-ip \
--subnet="${vpc_spoke_subnet_name}" \
--region="${region}" \
--addresses=192.168.0.253

Tra cứu TÊN được liên kết với địa chỉ IP đã đặt trước. This will be used in the forwarding rule configuration.

gcloud compute addresses list \
--filter="name=csql-psc-ip"

Tạo Quy tắc chuyển tiếp Private Service Connect trong VPC1

Sử dụng lệnh bên dưới để tạo điểm cuối Private Service Connect và trỏ điểm cuối đó đến tệp đính kèm dịch vụ Cloud SQL.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
csql_psc_ep_name="csql-psc-ep"
sa_uri=$(gcloud sql instances describe mysql-instance \
  --format='value(pscServiceAttachmentLink)')
echo "$sa_uri"

gcloud compute forwarding-rules create "${csql_psc_ep_name}" \
--address=csql-psc-ip \
--region="${region}" \
--network="${vpc_spoke_network_name}" \
--target-service-attachment="${sa_uri}" \
--allow-psc-global-access

Sử dụng lệnh bên dưới để xác minh rằng tệp đính kèm dịch vụ cSQL chấp nhận điểm cuối

gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'

Xác minh đường dẫn dữ liệu đến MySQL từ VPC1

Khi tạo một phiên bản Cloud SQL mới, bạn phải đặt mật khẩu cho tài khoản người dùng mặc định thì mới có thể kết nối với phiên bản đó.

gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password

Sử dụng lệnh bên dưới để xác định vị trí địa chỉ IP của điểm cuối PSC được liên kết với tệp đính kèm dịch vụ của Cloud SQL.

gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'

Kết nối với phiên bản Cloud SQL từ một VM trong VPC1

Mở một phiên SSH đến csql-vpc1-vm

gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap

Sử dụng lệnh bên dưới để kết nối với phiên bản Cloud SQL. Khi được nhắc, hãy nhập mật khẩu bạn đã tạo ở bước trên.

mysql -h 192.168.0.253 -u root -p 

Kết quả dưới đây sẽ xuất hiện khi bạn đăng nhập thành công,

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8350
Server version: 8.0.31-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

Sử dụng lệnh show databases; để xác minh cơ sở dữ liệu được tạo theo mặc định trên MySql.

MySQL [(none)]> show databases;

Kết nối với phiên bản Cloud SQL từ một máy ảo trong VPC3

Mở một phiên SSH đến csql-vpc3-vm,

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

Sử dụng lệnh bên dưới để kết nối với phiên bản Cloud SQL. Khi được nhắc, hãy nhập mật khẩu bạn đã tạo ở bước trên.

mysql -h 192.168.0.253 -u root -p 

Phiên từ VM nằm trên VPC3 sẽ không thành công vì không có đường dẫn dữ liệu từ VPC3 đến Điểm cuối Kết nối dịch vụ riêng tư. Dùng các tổ hợp phím để thoát khỏi phiên.

Ctrl + C

5. Trung tâm Network Connectivity Center

Tổng quan

Trong phần này, chúng ta sẽ thiết lập một NCC Hub bằng các lệnh gcloud. NCC Hub sẽ đóng vai trò là mặt phẳng điều khiển chịu trách nhiệm xây dựng đường dẫn dữ liệu từ các VPC phụ đến điểm cuối Kết nối dịch vụ riêng tư.

b615efa4bad5f86.png

Bật các dịch vụ API

Bật API kết nối mạng nếu bạn chưa bật:

gcloud services enable networkconnectivity.googleapis.com

Tạo Trung tâm NCC

Sử dụng lệnh gcloud bên dưới để tạo một trung tâm NCC. Cờ "–export-psc" hướng dẫn NCC Hub truyền các điểm cuối PSC đã biết đến tất cả các VPC phụ.

hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc

Mô tả NCC Hub mới tạo. Ghi lại tên và đường dẫn liên kết.

gcloud network-connectivity hubs describe ncc-hub

Định cấu hình VPC1 làm một mạng trung tâm và vệ tinh NCC

hub_name="ncc-hub"
vpc_spoke_name="sql-vpc1-spoke"
vpc_spoke_network_name="vpc1-spoke"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global

Định cấu hình VPC3 làm một NCC spoke

hub_name="ncc-hub"
vpc_spoke_name="sql-vpc3-spoke"
vpc_spoke_network_name="vpc3-spoke"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global

Sử dụng lệnh bên dưới để kiểm tra bảng định tuyến của NCC Hub để tìm một tuyến đến mạng con PSC.

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub

6. Xác minh đường dẫn dữ liệu NCC

Trong bước này, chúng ta sẽ xác thực đường dẫn dữ liệu giữa NCC kết hợp và VPC spoke.

Xác minh đường dẫn dữ liệu đã định cấu hình NCC đến điểm cuối PSC của phiên bản Cloud SQL

Sử dụng đầu ra từ các lệnh gcloud này để đăng nhập vào VM tại chỗ.

 gcloud compute instances list --filter="name=csql-vpc3-vm" 

Đăng nhập vào phiên bản máy ảo nằm trong mạng tại chỗ.

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

Sử dụng lệnh mysql bên dưới để kết nối với phiên bản Cloud SQL. Khi được nhắc, hãy nhập mật khẩu bạn đã tạo ở bước trên.

mysql -h 192.168.0.253 -u root -p 

Kết quả dưới đây sẽ xuất hiện khi bạn đăng nhập thành công,

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8501
Server version: 8.0.31-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.005 sec)

Sử dụng lệnh show databases; để xác minh cơ sở dữ liệu được tạo theo mặc định trên MySql

MySQL [(none)]> show databases;

7. Dọn dẹp

Đăng nhập vào Cloud Shell và xoá các tài nguyên trên GCP.

Xoá các Điểm cuối PSC Cloud SQL

gcloud compute forwarding-rules delete csql-psc-ep \
--region=us-central1 \
--quiet

gcloud compute addresses delete csql-psc-ip \
--region=us-central1 \
--quiet

gcloud compute networks subnets delete csql-psc-subnet \
--region=us-central1 \
--quiet

Xoá phiên bản Cloud SQL

gcloud sql instances delete mysql-instance --quiet

Xoá quy tắc tường lửa

vpc_spoke_network_name="vpc3-spoke"

gcloud compute firewall-rules delete vpc3-allow-all \ --network="${vpc_spoke_network_name}" 
gcloud compute firewall-rules delete vpc3-allow-iap \ --network="${vpc_spoke_network_name}"
vpc_spoke_network_name="vpc1-spoke"

gcloud compute firewall-rules delete vpc1-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc1-allow-iap \ --network="${vpc_spoke_network_name}"

Xoá các phiên bản GCE trong VPC1 và VPC3

vm_vpc1_spoke_name="csql-vpc1-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc1_spoke_name}" \
--zone="${zone}" \
--quiet


vm_vpc_spoke_name="csql-vpc3-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc_spoke_name}" \
--zone="${zone}" --quiet

Xoá các spoke NCC

vpc_spoke_name="sql-vpc1-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \  
--quiet
vpc_spoke_name="sql-vpc3-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \  
--quiet

Xoá NCC Hub

hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
  --project=${project}

Xoá các mạng con trong tất cả VPC

vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet1"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet3"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet

Xoá VPC1 và VPC3

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. Xin chúc mừng!

Bạn đã hoàn tất quá trình truyền tin Private Service Connect bằng Network Connectivity Center Lab!

Nội dung bạn đã đề cập

  • Phân phối điểm cuối Private Service Connect bằng Network Connectivity Center

Các bước tiếp theo