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

1. Giới thiệu

Tổng quan

Trong lớp học này, người dùng sẽ khám phá cách trung tâm của Trung tâm kết nối mạng truyền điểm cuối Kết nối dịch vụ riêng tư đến các luồng VPC.

Tài nguyên trung tâm cung cấp 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 luồng VPC 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ẽ xây dựng một mạng NCC để truyền đ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 tải mạng con PSC đến tất cả các nhánh VPC nhằm cho phép kết nối mạng từ nhiều mạng VPC.

Bạn cần có

  • 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ạngyêu cầu thêm Mạng 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 Sonnect
  • Định cấu hình Trung tâm kết nối mạng để truyền điểm cuối PSC
  • Định cấu hình Trung tâm kết nối mạng với VPC làm luồng
  • Xác thực đường dẫn dữ liệu
  • Khám phá các tính năng về khả năng bảo dưỡng của nhà cung cấp dịch vụ (NCC)
  • Dọn dẹp tài nguyên

Trước khi bắt đầu

Google Cloud Console 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 lớp học này.

Google Cloud Console của dự án NCC Hub

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 Trung tâm kết nối mạng:

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

Chạy Cloud Shell. Lớp học lập trình này sử dụng $variables để hỗ trợ 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ò trong 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ò IAM NCC 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ý nút trung tâm và nút nhánh.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager – Cho phép thêm và quản lý các nan hoa trong một trung tâm. Để sử dụng trong VPC dùng chung, trong đó dự án lưu trữ sở hữu Trung tâm, nhưng các quản trị viên khác trong các dự án khác có thể thêm các rô-to cho các tệp đính kèm của họ vào Trung tâm.

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à nan hoa.

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 hai mạng VPC và các quy tắc tường lửa trong một dự án. 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 máy ảo GCE để 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 luồng VPC 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 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à Proxy truy cập danh tính

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à 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 sẽ 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 thực thể để sử dụng địa chỉ IP bên 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 sẽ 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 thực thể để sử dụng địa chỉ IP bên 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 thực thể 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 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 thực thể đã bật Private Service Connect. Hãy lưu ý trường pscServiceAttachmentLink hiển thị URI trỏ đến tệp đính kèm dịch vụ của thực thể. Chúng ta sẽ cần đế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

Đặt trước địa chỉ IP nội bộ cho Điểm cuối PSC

Sử dụng lệnh bên dưới để đặt trước đị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

Truy vấn TÊN được liên kết với địa chỉ IP được đặt trước. Giá trị này sẽ được dùng trong cấu hình quy tắc chuyển tiếp.

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 dưới đây để tìm đị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áy ảo trong VPC1

Mở 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 dưới đây để kết nối với phiên bản Cloud SQL. Khi được nhắc, hãy nhập mật khẩu đã 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ác 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áy ảo trong VPC3

Mở 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 dưới đây để kết nối với phiên bản Cloud SQL. Khi được nhắc, hãy nhập mật khẩu đã tạo ở bước trên.

mysql -h 192.168.0.253 -u root -p 

Phiên từ máy ảo nằm trên VPC3 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ư. Sử dụng các thao tác nhấn phím để thoát khỏi phiên.

Ctrl + C

5. Trung tâm kết nối mạng

Tổng quan

Trong phần này, chúng ta sẽ định cấu hình Trung tâm NCC bằng các lệnh gcloud. Trung tâm NCC sẽ đóng vai trò là vùng điều khiển chịu trách nhiệm tạo đường dẫn dữ liệu từ các luồng VPC đến điểm cuối Kết nối dịch vụ riêng tư.

b615efa4bad5f86.png

Bật Dịch vụ API

Bật API kết nối mạng trong trường hợp API này chưa được 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 Trung tâm NCC truyền các điểm cuối PSC đã biết đến tất cả các luồng VPC.

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

Mô tả Trung tâm NCC mới tạo. Lưu ý 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 luồng 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 luồng NCC

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 dưới đây để kiểm tra bảng định tuyến của NCC Hub để tìm 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 được định cấu hình NCC đến điểm cuối PSC của Phiên bản Cloud SQL

Sử dụng kết quả từ các lệnh gcloud này để đăng nhập vào máy ảo trên máy.

 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 cục bộ.

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

Sử dụng lệnh mysql dưới đây để kết nối với phiên bản Cloud SQL. Khi được nhắc, hãy nhập mật khẩu đã 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ác 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 màn hình shell trên đám mây và xoá tài nguyên GCP.

Xoá Điểm cuối PSC của 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 nan 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á Trung tâm nhà sáng tạo nội dung

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 Private Service Connect với Phòng thí nghiệm Trung tâm kết nối mạng!

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

  • Truyền điểm cuối Private Service Connect bằng Network Connectivity Center

Các bước tiếp theo