آزمایشگاه: NCC PSC Propagation

1. مقدمه

نمای کلی

در این آزمایشگاه، کاربران بررسی خواهند کرد که هاب مرکز اتصال شبکه چگونه یک نقطه پایانی اتصال سرویس خصوصی را به پره های VPC منتشر می کند.

منبع هاب یک مدل مدیریت اتصال متمرکز را برای اتصال ترافیک پره های VPC به نقاط پایانی PSC ارائه می دهد.

چیزی که خواهی ساخت

در این لبه کد، شما یک شبکه NCC می سازید که یک نقطه پایانی اتصال سرویس خصوصی را به نمونه Cloud SQL منتشر می کند.

74bf390e323ea3bb.png

چیزی که یاد خواهید گرفت

  • از Private Service Connect برای اتصال به یک نمونه Cloud SQL استفاده کنید
  • از هاب NCC برای انتشار زیرشبکه PSC به همه پره های VPC استفاده کنید تا امکان اتصال شبکه از چندین شبکه VPC فراهم شود.

آنچه شما نیاز دارید

  • دانش GCP Cloud Networking
  • دانش اولیه Cloud SQL
  • پروژه Google Cloud
  • سهمیه: شبکه های خود را بررسی کنید و در صورت نیاز شبکه های اضافی را درخواست کنید ، اسکرین شات زیر:

6bc606cb34bce7e8.png

اهداف

  • محیط GCP را راه اندازی کنید
  • راه اندازی نمونه Cloud SQL برای MySql با Private Service Sonnect
  • مرکز اتصال شبکه را برای انتشار نقاط پایانی PSC پیکربندی کنید
  • مرکز اتصال شبکه را با VPC به عنوان اسپیکر پیکربندی کنید
  • اعتبارسنجی مسیر داده
  • ویژگی های سرویس دهی NCC را کاوش کنید
  • منابع را پاکسازی کنید

قبل از شروع

Google Cloud Console و Cloud Shell

برای تعامل با GCP، از Google Cloud Console و Cloud Shell در سراسر این آزمایشگاه استفاده خواهیم کرد.

NCC Hub Project Google Cloud Console

در https://console.cloud.google.com می‌توانید به کنسول Cloud دسترسی پیدا کنید.

موارد زیر را در Google Cloud تنظیم کنید تا پیکربندی مرکز اتصال شبکه را آسان‌تر کنید:

در Google Cloud Console، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید.

Cloud Shell را راه اندازی کنید. این Codelab از متغیرهای $ برای کمک به پیاده سازی پیکربندی gcloud در Cloud Shell استفاده می کند.

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

نقش های IAM

NCC برای دسترسی به API های خاص به نقش های IAM نیاز دارد. حتماً کاربر خود را با نقش‌های NCC IAM در صورت لزوم پیکربندی کنید.

نقش/توضیحات

مجوزها

networkconnectivity.networkAdmin - به مدیران شبکه اجازه می دهد هاب و پره ها را مدیریت کنند.

اتصال به شبکه. هاب ها. Networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - به اضافه کردن و مدیریت پره ها در هاب اجازه می دهد. برای استفاده در VPC مشترک که در آن پروژه میزبان مالک Hub است، اما مدیران دیگر در پروژه‌های دیگر می‌توانند پره‌هایی را برای پیوست‌های خود به هاب اضافه کنند.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - به کاربران شبکه اجازه می دهد تا ویژگی های مختلف هاب و پره ها را مشاهده کنند.

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

2. محیط شبکه را راه اندازی کنید

نمای کلی

در این بخش، دو شبکه VPC و قوانین فایروال را در یک پروژه واحد مستقر خواهیم کرد. نمودار منطقی محیط شبکه ای را که در این مرحله راه اندازی می شود را نشان می دهد.

8884a55988881e17.png

VPC1 و یک Subnet ایجاد کنید

شبکه VPC شامل زیرشبکه هایی است که GCE VM را برای اعتبارسنجی مسیر داده نصب خواهید کرد

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}" 

یک زیر شبکه PSC در VPC ایجاد کنید

از دستور زیر برای ایجاد یک زیرشبکه در اسپیکر VPC استفاده کنید که به 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}" 

VPC3 و یک Subnet ایجاد کنید

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}"

قوانین فایروال VPC1 را پیکربندی کنید

این قوانین امکان اتصال شبکه را از محدوده RFC1918 و 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

مسیریابی VPC و قوانین فایروال 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

GCE VM را در VPC1 پیکربندی کنید

برای نصب بسته ها به دسترسی موقت به اینترنت نیاز دارید، بنابراین نمونه را برای استفاده از یک آدرس IP خارجی پیکربندی کنید.

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'

GCE VM را در VPC3 پیکربندی کنید

برای نصب بسته ها به دسترسی موقت به اینترنت نیاز دارید، بنابراین نمونه را برای استفاده از یک آدرس IP خارجی پیکربندی کنید.

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. Cloud SQL Instance را ایجاد کنید

از دستورات زیر برای ایجاد یک نمونه و فعال کردن Private Service Connect استفاده کنید.

این چند دقیقه طول می کشد.

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

URI پیوست سرویس نمونه Cloud SQL را شناسایی کنید

از دستور توصیف نمونه‌های gcloud sql برای مشاهده اطلاعات یک نمونه با فعال بودن Private Service Connect استفاده کنید. به فیلد pscServiceAttachmentLink توجه کنید که URI را نشان می دهد که به پیوست سرویس نمونه اشاره می کند. ما در بخش بعدی به این نیاز خواهیم داشت.

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

4. نقطه پایانی PSC به Cloud Sql

یک آدرس IP داخلی برای نقطه پایانی PSC رزرو کنید

از دستور زیر برای رزرو یک آدرس IP داخلی برای نقطه پایانی 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

NAME مرتبط با آدرس IP رزرو شده را جستجو کنید. این در پیکربندی قانون حمل و نقل استفاده خواهد شد.

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

قانون حمل و نقل Private Service Connect Forwarding را در VPC1 ایجاد کنید

از دستور زیر برای ایجاد نقطه پایانی Private Service Connect استفاده کنید و آن را به پیوست سرویس 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

برای بررسی اینکه پیوست سرویس cSQL نقطه پایانی را می پذیرد از دستور زیر استفاده کنید

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

مسیر داده به MySQL را از VPC1 تأیید کنید

هنگامی که یک نمونه Cloud SQL جدید ایجاد می کنید، قبل از اینکه بتوانید به نمونه متصل شوید، باید یک رمز عبور برای حساب کاربری پیش فرض تعیین کنید.

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

از دستور زیر برای پیدا کردن آدرس IP نقطه پایانی PSC که به پیوست سرویس Cloud SQL مرتبط است، استفاده کنید.

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

از VM در VPC1 به Cloud Sql Instance متصل شوید

یک جلسه SSH را به csql-vpc1-vm باز کنید

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

از دستور زیر برای اتصال به نمونه Cloud Sql استفاده کنید. هنگامی که از شما خواسته شد رمز عبور ایجاد شده در مرحله بالا را وارد کنید.

mysql -h 192.168.0.253 -u root -p 

خروجی زیر با ورود موفقیت آمیز نمایش داده می شود

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)]> 

از پایگاه داده های نمایش استفاده کنید. دستور تأیید پایگاه داده هایی که به طور پیش فرض در MySql ایجاد شده است.

MySQL [(none)]> show databases;

از یک VM در VPC3 به Cloud Sql Instance متصل شوید

یک جلسه SSH را به csql-vpc3-vm باز کنید،

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

از دستور زیر برای اتصال به نمونه Cloud Sql استفاده کنید. هنگامی که از شما خواسته شد رمز عبور ایجاد شده در مرحله بالا را وارد کنید.

mysql -h 192.168.0.253 -u root -p 

جلسه از VM مستقر در VPC3 با شکست مواجه می شود زیرا هیچ مسیر داده ای از VPC3 به نقطه پایانی اتصال سرویس خصوصی وجود ندارد. از ضربات کلیدی برای خروج از جلسه استفاده کنید.

Ctrl + C

5. مرکز اتصال شبکه هاب

نمای کلی

در این بخش، یک NCC Hub را با استفاده از دستورات gcloud پیکربندی می کنیم. NCC Hub به عنوان صفحه کنترل مسئول ایجاد مسیر داده از پره های VPC به نقطه پایانی Private Service Connect خواهد بود.

b615efa4bad5f86.png

خدمات API را فعال کنید

در صورتی که API اتصال شبکه هنوز فعال نشده است را فعال کنید:

gcloud services enable networkconnectivity.googleapis.com

NCC Hub را ایجاد کنید

از دستور gcloud زیر برای ایجاد یک هاب NCC استفاده کنید. پرچم "–export-psc" به NCC Hub دستور می دهد تا نقاط پایانی شناخته شده PSC را به همه پره های VPC منتشر کند.

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

NCC Hub جدید ایجاد شده را توضیح دهید. به نام و مسیر مرتبط توجه کنید.

gcloud network-connectivity hubs describe ncc-hub

VPC1 را به عنوان اسپیکر 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

VPC3 را به عنوان اسپیکر 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

از دستور زیر برای بررسی جدول مسیر NCC Hub برای یک مسیر به زیر شبکه PSC استفاده کنید.

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

6. مسیر داده NCC را بررسی کنید

در این مرحله، مسیر داده بین NCC Hybrid و VPC speaker را تایید می‌کنیم.

مسیر داده پیکربندی شده NCC را به نقطه پایانی Cloud Sql Instances PSC تأیید کنید

از خروجی این دستورات gcloud برای ورود به VM prem استفاده کنید.

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

به نمونه VM موجود در شبکه on-prem وارد شوید.

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

از دستور mysql زیر برای اتصال به نمونه Cloud Sql استفاده کنید. هنگامی که از شما خواسته شد رمز عبور ایجاد شده در مرحله بالا را وارد کنید.

mysql -h 192.168.0.253 -u root -p 

خروجی زیر با ورود موفقیت آمیز نمایش داده می شود

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)

از پایگاه داده های نمایش استفاده کنید. دستور تأیید پایگاه داده هایی که به طور پیش فرض در MySql ایجاد شده است

MySQL [(none)]> show databases;

7. پاکسازی کنید

به پوسته ابری وارد شوید و منابع GCP را حذف کنید.

نقاط پایانی Cloud Sql PSC را حذف کنید

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

نمونه Cloud Sql را حذف کنید

gcloud sql instances delete mysql-instance --quiet

قوانین فایروال را حذف کنید

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}"

موارد GCE را در VPC1 و 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

پره های 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

NCC Hub را حذف کنید

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

زیرشبکه ها را در تمام 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

VPC1 و VPC3 را حذف کنید

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. تبریک!

شما انتشار Private Service Connect را با Network Connectivity Center Lab کامل کرده اید!

آنچه شما پوشش داده اید

  • انتشار نقطه پایانی اتصال سرویس خصوصی با مرکز اتصال شبکه

مراحل بعدی