1. مقدمه
نمای کلی
در این آزمایشگاه، کاربران بررسی خواهند کرد که هاب مرکز اتصال شبکه چگونه یک نقطه پایانی اتصال سرویس خصوصی را به پره های VPC منتشر می کند.
منبع هاب یک مدل مدیریت اتصال متمرکز را برای اتصال ترافیک پره های VPC به نقاط پایانی PSC ارائه می دهد.
چیزی که خواهی ساخت
در این لبه کد، شما یک شبکه NCC می سازید که یک نقطه پایانی اتصال سرویس خصوصی را به نمونه Cloud SQL منتشر می کند.
چیزی که یاد خواهید گرفت
- از Private Service Connect برای اتصال به یک نمونه Cloud SQL استفاده کنید
- از هاب NCC برای انتشار زیرشبکه PSC به همه پره های VPC استفاده کنید تا امکان اتصال شبکه از چندین شبکه VPC فراهم شود.
آنچه شما نیاز دارید
- دانش GCP Cloud Networking
- دانش اولیه Cloud SQL
- پروژه Google Cloud
- سهمیه: شبکه های خود را بررسی کنید و در صورت نیاز شبکه های اضافی را درخواست کنید ، اسکرین شات زیر:
اهداف
- محیط 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 و قوانین فایروال را در یک پروژه واحد مستقر خواهیم کرد. نمودار منطقی محیط شبکه ای را که در این مرحله راه اندازی می شود را نشان می دهد.
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 خواهد بود.
خدمات 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 کامل کرده اید!
آنچه شما پوشش داده اید
- انتشار نقطه پایانی اتصال سرویس خصوصی با مرکز اتصال شبکه
مراحل بعدی