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

1. परिचय

खास जानकारी

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

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

आपको क्या बनाना है

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

74bf390e323ea3bb.png

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

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

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

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

6bc606cb34bce7e8.png

मकसद

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

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

Google Cloud Console और Cloud Shell

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

NCC Hub Project Google Cloud Console

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

नेटवर्क कनेक्टिविटी सेंटर को आसानी से कॉन्फ़िगर करने के लिए, 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 भूमिकाएं

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

भूमिका/जानकारी

अनुमतियां

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

networkconnectivity.hubs.networkconnectivity.spokes.

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

networkconnectivity.spokes.**

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

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

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

खास जानकारी

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

8884a55988881e17.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}" 

VPC में PSC सबनेट बनाना

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 और सबनेट बनाना

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 और आइडेंटिटी ऐक्सेस प्रॉक्सी रेंज से नेटवर्क कनेक्टिविटी की अनुमति मिलेगी

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 के लिए PSC एंडपॉइंट

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

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 में मौजूद किसी VM से 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 में किसी VM से 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 

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

Ctrl + C

5. Network Connectivity Center Hub

खास जानकारी

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

b615efa4bad5f86.png

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

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

gcloud services enable networkconnectivity.googleapis.com

एनसीसी हब बनाना

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

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

नए बनाए गए एनसीसी हब के बारे में जानकारी दें. नाम और उससे जुड़े पाथ को नोट करें.

gcloud network-connectivity hubs describe ncc-hub

VPC1 को एनसीसी स्पोक के तौर पर कॉन्फ़िगर करना

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 को एनसीसी स्पोक के तौर पर कॉन्फ़िगर करना

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

PSC सबनेट के लिए रास्ते की जानकारी पाने के लिए, NCC Hub की रूट टेबल देखने के लिए नीचे दिए गए कमांड का इस्तेमाल करें.

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

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

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

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

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

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

ऑन-प्रीमिस नेटवर्क में मौजूद 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 के पीएससी एंडपॉइंट मिटाना

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

आपने नेटवर्क कनेक्टिविटी सेंटर लैब की मदद से, Private Service Connect का प्रॉपेगेशन पूरा कर लिया है!

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

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

अगले चरण