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

۱. مقدمه

نمای کلی

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

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

آنچه خواهید ساخت

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

74bf390e323ea3bb.png

آنچه یاد خواهید گرفت

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

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

  • آشنایی با شبکه ابری GCP
  • دانش پایه در مورد SQL ابری
  • پروژه ابری گوگل
  • Quota:Networks خود را بررسی کنید و در صورت لزوم، شبکه‌های اضافی را درخواست کنید ، تصویر زیر را ببینید:

6bc606cb34bce7e8.png

اهداف

  • راه‌اندازی محیط GCP
  • راه‌اندازی نمونه Cloud SQL برای MySql با سرویس خصوصی Sonnect
  • پیکربندی Network Connectivity Center Hub برای انتشار نقاط پایانی PSC
  • پیکربندی مرکز اتصال شبکه با VPC همانطور که گفته شد
  • اعتبارسنجی مسیر داده
  • ویژگی‌های سرویس‌پذیری NCC را بررسی کنید
  • پاکسازی منابع

قبل از اینکه شروع کنی

کنسول ابری گوگل و پوسته ابری

برای تعامل با GCP، در طول این آزمایش از هر دو کنسول ابری گوگل و پوسته ابری استفاده خواهیم کرد.

پروژه مرکز NCC، کنسول ابری گوگل

کنسول ابری از طریق آدرس https://console.cloud.google.com قابل دسترسی است.

برای آسان‌تر کردن پیکربندی Network Connectivity Center، موارد زیر را در Google Cloud تنظیم کنید:

در کنسول گوگل کلود، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.

Cloud Shell را اجرا کنید. این Codelab از $variables برای کمک به پیاده‌سازی پیکربندی 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 نیاز دارد. حتماً کاربر خود را در صورت نیاز با نقش‌های IAM مربوط به NCC پیکربندی کنید.

نقش/توضیحات

مجوزها

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

اتصال شبکه.هاب‌ها. اتصال شبکه.اسپوک‌ها.

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

اتصال شبکه.اسپوک.**

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

اتصال شبکه.هاب‌ها.دریافت اتصال شبکه.هاب‌ها.لیست اتصال شبکه.اسپوک‌ها.دریافت اتصال شبکه.لیست اتصال شبکه.اسپوک‌ها.لیست اتصال شبکه.اسپوک‌ها.لیست تجمیعی

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

نمای کلی

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

۸۸۸۴a۵۵۹۸۸۸۸۱e۱۷.png

ایجاد VPC1 و یک زیرشبکه

شبکه 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 spoke که به 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 و یک زیرشبکه

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 در 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 در 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'

۳. نمونه SQL ابری را ایجاد کنید

از دستورات زیر برای ایجاد یک نمونه و فعال کردن 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 instances describe برای مشاهده اطلاعات مربوط به یک نمونه با قابلیت اتصال خصوصی سرویس (Private Service Connect) استفاده کنید. به فیلد pscServiceAttachmentLink که URI مربوط به پیوست سرویس نمونه را نمایش می‌دهد، توجه کنید. ما در بخش بعدی به این نیاز خواهیم داشت.

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

۴. نقطه پایانی 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

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

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

ایجاد قانون ارسال اتصال سرویس خصوصی در 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)'

اتصال به Cloud Sql Instance از یک ماشین مجازی در VPC1

یک جلسه 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 ایجاد شده‌اند، از دستور show databases; استفاده کنید.

MySQL [(none)]> show databases;

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

یک جلسه 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 

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

Ctrl + C

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

نمای کلی

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

b615efa4bad5f86.png

فعال کردن سرویس‌های API

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

gcloud services enable networkconnectivity.googleapis.com

ایجاد مرکز NCC

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

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

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

gcloud network-connectivity hubs describe ncc-hub

پیکربندی VPC1 به عنوان یک NCC spoke

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

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

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

۶. مسیر داده NCC را تأیید کنید

در این مرحله، مسیر داده بین NCC hybrid و VPC spoke را اعتبارسنجی خواهیم کرد.

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

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

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

به نمونه ماشین مجازی که در شبکه داخلی شرکت قرار دارد، وارد شوید.

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 ایجاد شده‌اند، از دستور show databases; استفاده کنید.

MySQL [(none)]> show databases;

۷. تمیز کردن

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

نقاط پایانی 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

نمونه 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_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 

۸. تبریک می‌گویم!

شما انتشار Private Service Connect را با آزمایشگاه مرکز اتصال به شبکه تکمیل کرده‌اید!

آنچه را که پوشش دادید

  • انتشار نقطه پایانی Private Service Connect با مرکز اتصال شبکه

مراحل بعدی