लैब: एनसीसी पीएससी प्रोपेगेशन

1. परिचय

खास जानकारी

इस लैब में, उपयोगकर्ता यह जानेंगे कि Network Connectivity Center का हब, Private Service Connect एंडपॉइंट को वीपीसी स्पोक में कैसे भेजता है.

हब रिसॉर्स, कनेक्टिविटी को मैनेज करने का एक ऐसा मॉडल उपलब्ध कराता है जिसकी मदद से, वीपीसी स्पोक के ट्रैफ़िक को पीएससी-एंडपॉइंट से इंटरकनेक्ट किया जा सकता है.

आपको क्या बनाने को मिलेगा

इस कोडलैब में, आपको एक एनसीसी नेटवर्क बनाना होगा. यह Cloud SQL इंस्टेंस को एक प्राइवेट सर्विस कनेक्ट एंडपॉइंट देगा.

74bf390e323ea3bb.png

आपको क्या सीखने को मिलेगा

  • Cloud SQL इंस्टेंस से कनेक्ट करने के लिए, Private Service Connect का इस्तेमाल करना
  • एक से ज़्यादा वीपीसी नेटवर्क से नेटवर्क कनेक्टिविटी की अनुमति देने के लिए, पीएससी सबनेट को सभी वीपीसी स्पोक पर भेजने के लिए, एनसीसी हब का इस्तेमाल करें.

आपको किन चीज़ों की ज़रूरत होगी

  • GCP Cloud Networking की जानकारी
  • Cloud SQL की बुनियादी जानकारी
  • Google Cloud प्रोजेक्ट
  • अपने कोटा:नेटवर्क की जांच करें. अगर ज़रूरी हो, तो अतिरिक्त नेटवर्क का अनुरोध करें. स्क्रीनशॉट यहां दिया गया है:

6bc606cb34bce7e8.png

मकसद

  • GCP एनवायरमेंट सेट अप करना
  • Private Service Connect का इस्तेमाल करके, MySQL के लिए Cloud SQL इंस्टेंस सेट अप करना
  • पीएससी एंडपॉइंट को आगे बढ़ाने के लिए, Network Connectivity Center हब को कॉन्फ़िगर करना
  • वीपीसी को स्पोक के तौर पर इस्तेमाल करके, Network Connectivity Center को कॉन्फ़िगर करना
  • डेटा पाथ की पुष्टि करना
  • एनसीसी की सेवा से जुड़ी सुविधाओं के बारे में जानें
  • संसाधन मिटाना

शुरू करने से पहले

Google Cloud Console और Cloud Shell

GCP के साथ इंटरैक्ट करने के लिए, हम इस लैब में Google Cloud Console और Cloud Shell, दोनों का इस्तेमाल करेंगे.

NCC हब प्रोजेक्ट Google Cloud Console

Cloud Console को https://console.cloud.google.com पर जाकर ऐक्सेस किया जा सकता है.

Network Connectivity Center को आसानी से कॉन्फ़िगर करने के लिए, Google Cloud में ये आइटम सेट अप करें:

Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.

Cloud Shell लॉन्च करें. इस कोडलैब में, Cloud Shell में gcloud कॉन्फ़िगरेशन लागू करने में मदद करने के लिए, $variables का इस्तेमाल किया गया है.

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

IAM रोल

NCC को कुछ खास एपीआई ऐक्सेस करने के लिए, IAM भूमिकाओं की ज़रूरत होती है. ज़रूरत के मुताबिक, उपयोगकर्ता को NCC IAM की भूमिकाएं असाइन करना न भूलें.

भूमिका/ब्यौरा

अनुमतियां

networkconnectivity.networkAdmin - इससे नेटवर्क एडमिन को हब और स्पोक मैनेज करने की अनुमति मिलती है.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - इस भूमिका की मदद से, हब में स्पोक जोड़े और मैनेज किए जा सकते हैं. इसका इस्तेमाल शेयर किए गए वीपीसी में किया जाता है. इसमें होस्ट-प्रोजेक्ट के पास हब का मालिकाना हक होता है. हालांकि, अन्य प्रोजेक्ट के एडमिन, हब से अटैचमेंट के लिए स्पोक जोड़ सकते हैं.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - इससे नेटवर्क के उपयोगकर्ता, हब और स्पोक के अलग-अलग एट्रिब्यूट देख सकते हैं.

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

2. नेटवर्क एनवायरमेंट सेट अप करना

खास जानकारी

इस सेक्शन में, हम एक ही प्रोजेक्ट में दो वीपीसी नेटवर्क और फ़ायरवॉल के नियमों को डिप्लॉय करेंगे. इस लॉजिकल डायग्राम में, उस नेटवर्क एनवायरमेंट के बारे में बताया गया है जिसे इस चरण में सेट अप किया जाएगा.

8884a55988881e17.png

VPC1 और सबनेट बनाना

वीपीसी नेटवर्क में सबनेट होते हैं. आपको डेटा पाथ की पुष्टि करने के लिए, GCE वीएम इंस्टॉल करना होगा

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

वीपीसी में पीएससी सबनेट बनाना

वीपीसी स्पोक में एक सबनेट बनाने के लिए, यहां दिए गए निर्देश का इस्तेमाल करें. यह सबनेट, पीएससी-ईपी को असाइन किया जाएगा.

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

VPC1 में GCE वीएम कॉन्फ़िगर करना

पैकेज इंस्टॉल करने के लिए, आपको कुछ समय के लिए इंटरनेट ऐक्सेस की ज़रूरत होगी. इसलिए, इंस्टेंस को बाहरी आईपी पते का इस्तेमाल करने के लिए कॉन्फ़िगर करें.

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'

VPC3 में GCE वीएम कॉन्फ़िगर करना

पैकेज इंस्टॉल करने के लिए, आपको कुछ समय के लिए इंटरनेट ऐक्सेस की ज़रूरत होगी. इसलिए, इंस्टेंस को बाहरी आईपी पते का इस्तेमाल करने के लिए कॉन्फ़िगर करें.

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 इंस्टेंस बनाना

एक इंस्टेंस बनाने और 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

Cloud SQL इंस्टेंस के सेवा अटैचमेंट यूआरआई की पहचान करना

Private Service Connect की सुविधा चालू किए गए इंस्टेंस के बारे में जानकारी देखने के लिए, gcloud sql instances describe कमांड का इस्तेमाल करें. pscServiceAttachmentLink फ़ील्ड पर ध्यान दें. यह उस यूआरआई को दिखाता है जो इंस्टेंस के सर्विस अटैचमेंट की ओर ले जाता है. हमें इसकी ज़रूरत अगले सेक्शन में पड़ेगी.

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

4. Cloud SQL के लिए पीएससी एंडपॉइंट

पीएससी एंडपॉइंट के लिए इंटरनल आईपी पता रिज़र्व करना

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 देखें. इसका इस्तेमाल, फ़ॉरवर्ड करने के नियम के कॉन्फ़िगरेशन में किया जाएगा.

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

VPC1 में Private Service Connect फ़ॉरवर्डिंग का नियम बनाएं

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

VPC1 से MySQL तक के डेटापाथ की पुष्टि करें

नया Cloud SQL इंस्टेंस बनाते समय, आपको डिफ़ॉल्ट उपयोगकर्ता खाते के लिए पासवर्ड सेट करना होगा. इसके बाद ही, इंस्टेंस से कनेक्ट किया जा सकेगा.

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

Cloud SQL के सर्विस अटैचमेंट से जुड़े पीएससी एंडपॉइंट का आईपी पता ढूंढने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करें.

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

VPC1 में मौजूद किसी वीएम से Cloud SQL इंस्टेंस से कनेक्ट करना

csql-vpc1-vm से कनेक्ट करने के लिए, SSH सेशन खोलें

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;

VPC3 में मौजूद किसी वीएम से Cloud SQL इंस्टेंस से कनेक्ट करना

csql-vpc3-vm के लिए SSH सेशन खोलें,

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

Cloud SQL इंस्टेंस से कनेक्ट करने के लिए, यहां दिए गए निर्देश का इस्तेमाल करें. जब कहा जाए, तो ऊपर दिए गए चरण में बनाया गया पासवर्ड डालें.

mysql -h 192.168.0.253 -u root -p 

वीपीसी3 पर मौजूद वीएम का सेशन पूरा नहीं हो पाता, क्योंकि वीपीसी3 से Private Service Connect एंडपॉइंट तक कोई डेटापाथ नहीं है. सेशन से बाहर निकलने के लिए, कीस्ट्रोक का इस्तेमाल करें.

Ctrl + C

5. Network Connectivity Center हब

खास जानकारी

इस सेक्शन में, हम gcloud कमांड का इस्तेमाल करके NCC हब को कॉन्फ़िगर करेंगे. एनसीसी हब, कंट्रोल प्लेन के तौर पर काम करेगा. इसकी ज़िम्मेदारी, वीपीसी स्पोक से Private Service Connect एंडपॉइंट तक डेटापाथ बनाने की होगी.

b615efa4bad5f86.png

एपीआई सेवाएं चालू करना

अगर नेटवर्क कनेक्टिविटी एपीआई चालू नहीं है, तो इसे चालू करें:

gcloud services enable networkconnectivity.googleapis.com

NCC Hub बनाना

एनसीसी हब बनाने के लिए, यहां दिए गए gcloud कमांड का इस्तेमाल करें. "–export-psc" फ़्लैग, NCC हब को यह निर्देश देता है कि वह जाने-पहचाने पीएससी एंडपॉइंट को सभी वीपीसी स्पोक पर भेजे.

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 हब की रूट टेबल की जांच करने के लिए, यहां दिए गए निर्देश का इस्तेमाल करें.

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

6. एनसीसी डेटा पाथ की पुष्टि करना

इस चरण में, हम NCC हाइब्रिड और वीपीसी स्पोक के बीच डेटा पाथ की पुष्टि करेंगे.

Cloud SQL इंस्टेंस के पीएससी एंडपॉइंट से कनेक्ट करने के लिए, कॉन्फ़िगर किए गए एनसीसी के डेटापाथ की पुष्टि करना

gcloud कमांड के आउटपुट का इस्तेमाल करके, ऑन-प्रेम वीएम में लॉग इन करें.

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

ऑन-प्रिमाइसेस नेटवर्क में मौजूद वीएम इंस्टेंस में लॉग ऑन करें.

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

Cloud SQL इंस्टेंस से कनेक्ट करने के लिए, यहां दिया गया mysql कमांड इस्तेमाल करें. जब कहा जाए, तो ऊपर दिए गए चरण में बनाया गया पासवर्ड डालें.

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;

7. क्लीन अप करें

Cloud Shell में लॉगिन करें और 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}"

VPC1 और VPC3 में मौजूद GCE इंस्टेंस मिटाएं

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

एनसीसी स्पोक मिटाना

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_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. बधाई हो!

आपने Network Connectivity Center Lab की मदद से, Private Service Connect के प्रोपगेशन की प्रोसेस पूरी कर ली है!

आपने क्या कवर किया

  • Network Connectivity Center की मदद से, Private Service Connect एंडपॉइंट का प्रमोशन करना

अगले चरण