Private Service Connect: Private Service Connect माइग्रेशन के लिए VPC पीयरिंग

1. परिचय

वीपीसी पियरिंग, प्रोड्यूसर के लिए एक सामान्य तरीका है. इससे वे अपने उपयोगकर्ताओं को सेवा इस्तेमाल करने की सुविधा दे पाते हैं. हालांकि, वीपीसी पियरिंग का इस्तेमाल करने से रूटिंग से जुड़ी कई समस्याएं आती हैं. जैसे, नॉन-ट्रांज़िटिव वीपीसी पियरिंग, आईपी पते का ज़्यादा इस्तेमाल, और पियर किए गए वीपीसी में संसाधनों का ज़्यादा एक्सपोज़र.

Private Service Connect (पीएससी) एक कनेक्टिविटी का तरीका है. इससे सेवा देने वाली कंपनियां, किसी सेवा को एक ऐसे एंडपॉइंट पर उपलब्ध करा सकती हैं जिसे सेवा लेने वाली कंपनी, वर्कलोड वीपीसी में उपलब्ध कराती है. इससे वीपीसी पियरिंग से जुड़ी कई समस्याएं हल हो जाती हैं. पीएसएसी की मदद से कई नई सेवाएं बनाई जा रही हैं. हालांकि, अब भी कई सेवाएं वीपीसी पियरिंग सेवाओं के तौर पर मौजूद हैं.

Google Cloud, सेवाओं के लिए माइग्रेशन का एक पाथ लॉन्च करने के लिए उत्साहित है. इसकी मदद से, वीपीसी पियरिंग के ज़रिए बनाई गई सेवाओं को पीएससी पर आधारित आर्किटेक्चर पर माइग्रेट किया जा सकता है. माइग्रेशन के इस तरीके का इस्तेमाल करने पर, वीपीसी पियरिंग के ज़रिए दिखाई गई प्रोड्यूसर सेवा के आईपी पते को पीएससी पर आधारित आर्किटेक्चर में सुरक्षित रखा जाता है. इसलिए, उपभोक्ता के लिए कम से कम बदलाव करने की ज़रूरत होती है. इस माइग्रेशन को पूरा करने के लिए, तकनीकी चरणों के बारे में जानने के लिए इस कोडलैब को फ़ॉलो करें.

ध्यान दें: माइग्रेशन का यह तरीका सिर्फ़ उन सेवाओं के लिए है जहां प्रोड्यूसर और उपभोक्ता, एक ही Google Cloud संगठन में मौजूद हैं. VPC पीयरिंग का इस्तेमाल करने वाली Google Cloud की किसी भी सेवा या तीसरे पक्ष की सेवाओं के लिए, माइग्रेट करने का तरीका एक जैसा होगा. हालांकि, इसे सेवा के हिसाब से बनाया जाएगा. इन सेवाओं के माइग्रेशन के तरीके के बारे में जानने के लिए, कृपया संबंधित पक्षों से संपर्क करें.

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

  • वीपीसी पियरिंग पर आधारित सेवा सेट अप करने का तरीका
  • पीएसडी2 पर आधारित सेवा सेट अप करने का तरीका
  • VPC पियरिंग के ज़रिए सबनेट माइग्रेशन करने के लिए, Internal-Ranges API का इस्तेमाल करना. इससे VPC पियरिंग से पीएससी सेवा पर माइग्रेट किया जा सकेगा.
  • यह समझना कि सेवा माइग्रेट करने के लिए, डाउनटाइम कब होना चाहिए
  • माइग्रेशन के बाद, डेटा को व्यवस्थित करने का तरीका

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

  • मालिक की अनुमतियों वाला Google Cloud प्रोजेक्ट

2. कोडलैब टोपोलॉजी

आसानी से समझने के लिए, इस कोडलैब में सभी संसाधनों को एक ही प्रोजेक्ट में रखा गया है. कोड लैब में यह बताया जाएगा कि अगर प्रोड्यूसर और उपभोक्ता अलग-अलग प्रोजेक्ट में हैं, तो प्रोड्यूसर और उपभोक्ता को कौन-कौनसी कार्रवाइयां करनी होंगी.

इस कोडलैब में चार स्थितियां होंगी.

7dbf27cf215f9703.png

स्टेट 1, वीपीसी पियरिंग की स्थिति है. दो वीपीसी होंगे: उपभोक्ता-वीपीसी और प्रॉड्यूसर-वीपीसी. इन दोनों को आपस में जोड़ा जाएगा. Producer-vpc में, Apache की एक सामान्य सेवा होगी. इसे इंटरनल नेटवर्क पासथ्रू लोड बैलेंसर के ज़रिए ऐक्सेस किया जा सकेगा. Consumer-vpc में, जांच के लिए सिर्फ़ एक consumer-vm होगा.

7f64427c0e59d417.png

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

98c324c59c1fbf68.png

तीसरी स्थिति, माइग्रेशन की स्थिति होती है. हम प्रोड्यूसर-वीपीसी में सबनेट रेंज को रिज़र्व करेंगे. इस रेंज में, वीपीसी पीयरिंग पर आधारित सेवा को डिप्लॉय किया गया था, ताकि इसका इस्तेमाल कंज्यूमर-वीपीसी में किया जा सके. इसके बाद, हम एक नया पीएससी एंडपॉइंट बनाएंगे. इसका आईपी पता वही होगा जो प्रोड्यूसर-वीपीसी में मौजूद फ़ॉरवर्डिंग के नियम का है.

a64ab7b69132c722.png

चौथी स्थिति, पीएससी की आखिरी स्थिति होती है. हम टेस्ट PSC एंडपॉइंट को हटा देंगे. साथ ही, उपभोक्ता-वीपीसी और प्रॉड्यूसर-वीपीसी के बीच वीपीसी पियरिंग को मिटा देंगे.

3. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग को अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ताओं को, 300 डॉलर का क्रेडिट मिलेगा. वे इसे मुफ़्त में आज़मा सकते हैं.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

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

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

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट सेट अप हो गया हो और वैरिएबल कॉन्फ़िगर किए गए हों.

gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
export region=us-central1
export zone=$region-a
echo $projectid
echo $region
echo $zone

सभी ज़रूरी सेवाएं चालू करें

gcloud services enable compute.googleapis.com
gcloud services enable networkconnectivity.googleapis.com
gcloud services enable dns.googleapis.com

5. प्रोड्यूसर वीपीसी नेटवर्क (प्रोड्यूसर ऐक्टिविटी) बनाना

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

सबनेट बनाना

Cloud Shell से

gcloud compute networks subnets create producer-service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create producer-fr-subnet \
        --network=producer-vpc \
        --range=192.168.0.0/28 \
        --region=$region

प्रोड्यूसर क्लाउड राऊटर और क्लाउड एनएटी बनाना

Cloud Shell से

gcloud compute routers create $region-cr \
   --network=producer-vpc \
   --region=$region

gcloud compute routers nats create $region-nat \
    --router=$region-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

प्रोड्यूसर नेटवर्क के लिए फ़ायरवॉल की नीति और फ़ायरवॉल के नियम बनाना

Cloud Shell से

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, फ़ायरवॉल का ऐसा नियम बनाएं जो:

  • यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
  • इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.

Cloud Shell से

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

हम दो और नियम भी बनाएंगे. इनसे लोड बैलेंसर को सेवा के लिए हेल्थ चेक करने की अनुमति मिलेगी. साथ ही, इनसे उन वीएम से नेटवर्क ट्रैफ़िक की अनुमति मिलेगी जो consumer-vpc से कनेक्ट होंगे.

Cloud Shell से

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "LB healthchecks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:80  \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 3000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from consumer-vpc" \
    --direction INGRESS \
    --src-ip-ranges 10.0.1.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

6. प्रोड्यूसर सर्विस सेट अप (प्रोड्यूसर गतिविधि)

हम एक प्रोड्यूसर सेवा बनाएंगे. इसमें Apache वेब सर्वर चलाने वाला एक वीएम होगा. इसे अनमैनेज्ड इंस्टेंस ग्रुप में जोड़ा जाएगा. इस ग्रुप के सामने, रीजनल इंटरनल नेटवर्क पासथ्रू लोड बैलेंसर होगा.

वीएम और अनमैनेज्ड इंस्टेंस ग्रुप बनाना

Cloud Shell से

gcloud compute instances create producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Cloud Shell से

gcloud compute instance-groups unmanaged create prod-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances prod-uig \
  --zone=$zone \
  --instances=producer-service-vm

रीजनल इंटरनल नेटवर्क पासथ्रू लोड बैलेंसर बनाना

Cloud Shell से

gcloud compute health-checks create http producer-hc \
        --region=$region

gcloud compute backend-services create producer-bes \
  --load-balancing-scheme=internal \
  --protocol=tcp \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

gcloud compute backend-services add-backend producer-bes \
  --region=$region \
  --instance-group=prod-uig \
  --instance-group-zone=$zone

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

gcloud compute forwarding-rules create producer-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

7. उपयोगकर्ता का वीपीसी नेटवर्क बनाएं (उपयोगकर्ता की गतिविधि)

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

सबनेट बनाएं

Cloud Shell से

gcloud compute networks subnets create consumer-vm-subnet \
    --network=consumer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

उपयोगकर्ता के नेटवर्क के लिए फ़ायरवॉल की नीति और फ़ायरवॉल के नियम बनाना

हम consumer-vpc के लिए, एक और नेटवर्क फ़ायरवॉल नीति बनाएंगे.

Cloud Shell से

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy consumer-vpc-policy \
    --network consumer-vpc \
    --name network-consumer-vpc \
    --global-firewall-policy

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy consumer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

8. VPC पीयर बनाएं

प्रॉडक्ट बनाने वाले की गतिविधि

Cloud Shell से

gcloud compute networks peerings create producer-vpc-peering \
    --network=producer-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc

उपयोगकर्ता की गतिविधि

Cloud Shell से

gcloud compute networks peerings create consumer-vpc-peering \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=producer-vpc

उपयोगकर्ता के वीपीसी में रास्तों की सूची देखकर, पुष्टि करें कि पीयरिंग की गई है. आपको उपभोक्ता वीपीसी और प्रोड्यूसर वीपीसी, दोनों के लिए रूट दिखने चाहिए.

उपयोगकर्ता की गतिविधि

Cloud Shell से

gcloud compute routes list --filter="network=consumer-vpc"

अनुमानित आउटपुट

NAME: default-route-49dda7094977e231
NETWORK: consumer-vpc
DEST_RANGE: 0.0.0.0/0
NEXT_HOP: default-internet-gateway
PRIORITY: 1000

NAME: default-route-r-10d65e16cc6278b2
NETWORK: consumer-vpc
DEST_RANGE: 10.0.1.0/28
NEXT_HOP: consumer-vpc
PRIORITY: 0

NAME: peering-route-496d0732b4f11cea
NETWORK: consumer-vpc
DEST_RANGE: 192.168.0.0/28
NEXT_HOP: consumer-vpc-peering
PRIORITY: 0

NAME: peering-route-b4f9d3acc4c08d55
NETWORK: consumer-vpc
DEST_RANGE: 10.0.0.0/28
NEXT_HOP: consumer-vpc-peering
PRIORITY: 0

9. डीएनएस ज़ोन बनाना (उपयोगकर्ता की गतिविधि)

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

हम example.com डोमेन में एक A रिकॉर्ड जोड़ेंगे. यह service.example.com को उस नेटवर्क पासथ्रू लोड बैलेंसर फ़ॉरवर्डिंग नियम के आईपी पते पर ले जाएगा जिसे हमने पहले बनाया था. फ़ॉरवर्डिंग के नियम का आईपी पता 192.168.0.2 है.

Cloud Shell से

gcloud dns managed-zones create "producer-service" \
   --dns-name=example.com \
   --description="producer service dns" \
   --visibility=private \
   --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="producer-service"

gcloud dns record-sets transaction add 192.168.0.2 \
   --name=service.example.com \
   --ttl=300 \
   --type=A \
   --zone="producer-service"

gcloud dns record-sets transaction execute \
   --zone="producer-service"

10. VPC पीयर (उपयोगकर्ता गतिविधि) पर प्रोड्यूसर सेवा की जांच करें

इस समय, स्टेट 1 का आर्किटेक्चर बन जाता है.

उपयोगकर्ता-क्लाइंट VM बनाना

Cloud Shell से

gcloud compute instances create consumer-client \
   --zone=$zone \
   --subnet=consumer-vm-subnet \
   --no-address

कनेक्टिविटी की जांच करना

Cloud Shell से

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

उपयोगकर्ता-क्लाइंट वीएम से

curl service.example.com

अनुमानित आउटपुट

I am a Producer Service. 

उपयोगकर्ता-क्लाइंट वीएम से

exit

11. Private Service Connect के लिए सेवा तैयार करना (प्रोड्यूसर की गतिविधि)

शुरुआती सेटअप के सभी चरणों को पूरा करने के बाद, अब हम वीपीसी-पियर की गई सेवा को Private Service Connect पर माइग्रेट करने के लिए तैयार करेंगे. इस सेक्शन में, हम सर्विस अटैचमेंट के ज़रिए सर्विस को ऐक्सेस करने के लिए कॉन्फ़िगर करके, प्रोड्यूसर-वीपीसी में बदलाव करेंगे. हमें एक नया सबनेट और उस सबनेट में एक नया फ़ॉरवर्डिंग नियम बनाना होगा, ताकि हम मौजूदा सबनेट को consumer-vpc पर माइग्रेट कर सकें. इससे सेवा का मौजूदा आईपी पता बरकरार रहेगा.

वह सबनेट बनाएं जहां लोड बैलेंसर के फ़ॉरवर्डिंग नियम का नया आईपी पता होस्ट किया जाएगा.

Cloud Shell से

gcloud compute networks subnets create producer-psc-fr-subnet \
    --network=producer-vpc \
    --range=10.0.2.64/28 \
    --region=$region

लोड बैलेंसर के फ़ॉरवर्डिंग नियम का इंटरनल आईपी पता बनाएं.

Cloud Shell से

gcloud compute addresses create producer-psc-ip \
  --region $region \
  --subnet producer-psc-fr-subnet \
  --addresses 10.0.2.66

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

Cloud Shell से

gcloud compute forwarding-rules create psc-service-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-psc-fr-subnet \
  --address=producer-psc-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

psc-nat-subnet को, नेटवर्क पता अनुवाद के लिए पीएससी सेवा अटैचमेंट से जोड़ा जाएगा. प्रोडक्शन के इस्तेमाल के मामलों के लिए, इस सबनेट का साइज़ सही होना चाहिए, ताकि इससे जुड़े एंडपॉइंट की संख्या को सपोर्ट किया जा सके. ज़्यादा जानकारी के लिए, पीएससी NAT सबनेट के साइज़ के बारे में दस्तावेज़ देखें.

Cloud Shell से

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.100.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

हमें नेटवर्क फ़ायरवॉल की नीति में एक और फ़ायरवॉल नियम जोड़ना होगा, ताकि अब psc-nat-subnet से ट्रैफ़िक को अनुमति दी जा सके. पीएससी के ज़रिए सेवा को ऐक्सेस करने पर, psc-nat-subnet से ट्रैफ़िक सोर्स किया जाएगा.

Cloud Shell से

gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.100.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

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

Cloud Shell से

gcloud compute service-attachments create producer-sa \
    --region=$region \
    --producer-forwarding-rule=psc-service-fr  \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$projectid=5 \
    --nat-subnets=psc-nat-subnet

Cloud Shell से

gcloud compute service-attachments describe producer-sa --region=$region

आउटपुट का उदाहरण

connectionPreference: ACCEPT_MANUAL
consumerAcceptLists:
- connectionLimit: 5
  projectIdOrNum: $projectid
creationTimestamp: '2025-04-24T11:23:09.886-07:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-sa
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/producer-sa
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/forwardingRules/psc-service-fr

12. "test" उपभोक्ता पीएससी एंडपॉइंट को प्रोड्यूसर सेवा से कनेक्ट करें और टेस्ट करें (उपभोक्ता गतिविधि)

आर्किटेक्चर अब दूसरे चरण में है.

इस समय, वीपीसी पियरिंग के ज़रिए उपलब्ध कराई जा रही मौजूदा प्रोड्यूसर सेवा, प्रोडक्शन के लिए अब भी लाइव है और ठीक से काम कर रही है. हम एक "टेस्ट" पीएससी एंडपॉइंट बनाएंगे. इससे यह पक्का किया जा सकेगा कि मौजूदा वीपीसी पियरिंग सबनेट को उपभोक्ता वीपीसी पर माइग्रेट करने के लिए, आउटेज की अवधि शुरू करने से पहले, दिखाया गया सर्विस अटैचमेंट सही तरीके से काम कर रहा है. कनेक्टिविटी के लिए, हम पीएससी एंडपॉइंट का इस्तेमाल करेंगे. इसका आईपी पता वही होगा जो वीपीसी पियरिंग पर आधारित सेवा के लिए, फ़ॉरवर्ड करने के मौजूदा नियम का है.

पीएससी एंडपॉइंट बनाएं

Cloud Shell से

gcloud compute addresses create test-psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-vm-subnet \
    --addresses 10.0.1.3

यहां दी गई टारगेट सेवा, वह सेवा अटैचमेंट यूआरआई होगी जिसे आपने पिछले चरण में नोट किया था.

Cloud Shell से

gcloud compute forwarding-rules create test-psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=test-psc-endpoint-ip \
  --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa

"test" पीएससी एंडपॉइंट की जांच करना

Cloud Shell से

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

उपयोगकर्ता-क्लाइंट से

curl 10.0.1.3

अनुमानित आउटपुट

I am a Producer Service. 

उपयोगकर्ता-क्लाइंट से

exit

13. मौजूदा प्रोड्यूसर फ़ॉरवर्डिंग नियम वाले सबनेट को माइग्रेट करना

इन चरणों को पूरा करने पर, लाइव वीपीसी पीयरिंग पर आधारित प्रोड्यूसर सेवा के लिए आउटेज शुरू हो जाएगा. अब हम Internal Ranges API का इस्तेमाल करके, फ़ॉरवर्डिंग के नियम वाले सबनेट को प्रोड्यूसर-वीपीसी से कंज्यूमर-वीपीसी पर माइग्रेट करेंगे. इससे सबनेट को कुछ समय के लिए लॉक कर दिया जाएगा. इस दौरान, हम प्रोड्यूसर-वीपीसी में सबनेट को मिटा देंगे और इसे सिर्फ़ माइग्रेशन के लिए इस्तेमाल करेंगे, ताकि इसे कंज्यूमर-वीपीसी में बनाया जा सके.

इंटरनल रेंज एपीआई के लिए, आपको वीपीसी पियरिंग के मौजूदा फ़ॉरवर्डिंग नियम वाले सबनेट (producer-fr-subnet, 192.168.0.0/28) को रिज़र्व करना होगा. साथ ही, consumer-vpc (consumer-psc-subnet) में टारगेट सबनेट का नाम तय करना होगा. हम कुछ ही चरणों में, consumer-vpc में इस नाम का एक नया सबनेट बनाते हैं.

माइग्रेशन के लिए, producer-fr-subnet को रिज़र्व करें

प्रॉडक्ट बनाने वाले की गतिविधि

Cloud Shell से

gcloud network-connectivity internal-ranges create producer-peering-internal-range \
    --ip-cidr-range=192.168.0.0/28 \
    --network=producer-vpc \
    --usage=FOR_MIGRATION \
    --migration-source=projects/$projectid/regions/$region/subnetworks/producer-fr-subnet \
    --migration-target=projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet

सबनेट की स्थिति देखने के लिए, हमने जो internal-range बनाया है उस पर describe कमांड चलाएं.

प्रॉडक्ट बनाने वाले की गतिविधि

Cloud Shell से

gcloud network-connectivity internal-ranges describe producer-peering-internal-range

आउटपुट का उदाहरण

createTime: '2025-04-24T19:26:10.589343291Z'
ipCidrRange: 192.168.0.0/28
migration:
  source: projects/$projectid/regions/$region/subnetworks/producer-fr-subnet
  target: projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
name: projects/$projectid/locations/global/internalRanges/producer-peering-internal-range
network: https://www.googleapis.com/compute/v1/projects/$project/global/networks/producer-vpc
peering: FOR_SELF
updateTime: '2025-04-24T19:26:11.521960016Z'
usage: FOR_MIGRATION

वीपीएन पीयरिंग पर आधारित फ़ॉरवर्डिंग के नियम और सबनेट को मिटाना

प्रॉडक्ट बनाने वाले की गतिविधि

Cloud Shell से

gcloud compute forwarding-rules delete producer-fr --region=$region

gcloud compute addresses delete producer-fr-ip --region=$region

gcloud compute networks subnets delete producer-fr-subnet --region=$region

सबनेट माइग्रेट करना

हमने पहले जिस इंटरनल-रेंज को बनाया था उसका इस्तेमाल करके, एक नया सबनेट बनाएं. इसके बाद, सबनेट को consumer-vpc पर माइग्रेट करें. इस सबनेट का नाम वही होना चाहिए जिसे हमने पहले टारगेट किया था (consumer-psc-subnet). PEER_MIGRATION का खास मकसद यह सूचना देना है कि पीयर किए गए वीपीसी के बीच सबनेट माइग्रेशन के लिए, सबनेट को रिज़र्व किया गया है. इस फ़्लैग का इस्तेमाल करने पर, इस सबनेट में सिर्फ़ रिज़र्व किए गए स्टैटिक आईपी पते और पीएससी एंडपॉइंट हो सकते हैं.

उपयोगकर्ता की गतिविधि

Cloud Shell से

gcloud compute networks subnets create consumer-psc-subnet \
  --purpose=PEER_MIGRATION \
  --network=consumer-vpc \
  --range=192.168.0.0/28 \
  --region=$region

14. एंड स्टेट पीएससी एंडपॉइंट (उपयोगकर्ता की गतिविधि) बनाएं

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

Cloud Shell से

gcloud compute instances create test-consumer-vm \
    --zone=$zone \
    --subnet=consumer-psc-subnet \
    --no-address

अनुमानित आउटपुट

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - Subnetwork must have purpose=PRIVATE.

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

Cloud Shell से

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-psc-subnet \
    --addresses 192.168.0.2

आपको एक बार फिर उसी सर्विस अटैचमेंट यूआरआई का इस्तेमाल करना होगा जिसे आपने पहले नोट किया था. साथ ही, इसका इस्तेमाल "test" पीएससी एंडपॉइंट बनाने के लिए भी किया गया था.

Cloud Shell से

gcloud compute forwarding-rules create psc-endpoint \
    --region=$region \
    --network=consumer-vpc \
    --address=psc-endpoint-ip \
    --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa

15. एंड स्टेट पीएससी एंडपॉइंट (उपयोगकर्ता गतिविधि) की जांच करना

इस समय, आप तीसरे स्टेट के आर्किटेक्चर पर हैं.

Cloud Shell से

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

उपयोगकर्ता-क्लाइंट वीएम से

curl service.example.com

अनुमानित आउटपुट

I am a Producer Service. 

उपयोगकर्ता-क्लाइंट वीएम से

exit

इस समय, सेवा में आई रुकावट खत्म हो गई है और सेवा फिर से चालू हो गई है. ध्यान दें कि हमें मौजूदा डीएनएस में कोई बदलाव नहीं करना पड़ा. उपयोगकर्ता के क्लाइंट में कोई बदलाव करने की ज़रूरत नहीं है. ऐप्लिकेशन, माइग्रेट की गई सेवा पर काम करना जारी रख सकते हैं.

16. माइग्रेशन के बाद की जाने वाली कार्रवाइयां

माइग्रेशन की प्रोसेस पूरी करने के लिए, हमें कुछ चरणों को पूरा करना होगा. हमें संसाधनों को मिटाना और अनलॉक करना होगा.

इंटरनल रेंज वाले सबनेट को अनलॉक करना

इससे माइग्रेट किए गए सबनेट को अनलॉक किया जाएगा, ताकि इसके मकसद को "PEER_MIGRATION" से बदलकर "PRIVATE" किया जा सके.

प्रॉडक्ट बनाने वाले की गतिविधि

Cloud Shell से

gcloud network-connectivity internal-ranges delete producer-peering-internal-range

उपयोगकर्ता की गतिविधि

Cloud Shell से

gcloud compute networks subnets update consumer-psc-subnet \
    --region=$region \
    --purpose=PRIVATE

gcloud compute networks subnets describe consumer-psc-subnet --region=$region

आउटपुट का उदाहरण

creationTimestamp: '2025-04-24T12:29:33.883-07:00'
fingerprint: xxx
gatewayAddress: 192.168.0.1
id: 'xxx'
ipCidrRange: 192.168.0.0/28
kind: compute#subnetwork
name: consumer-psc-subnet
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
privateIpGoogleAccess: false
privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS
purpose: PRIVATE
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet

VPC पियर मिटाना

प्रॉडक्ट बनाने वाले की गतिविधि

Cloud Shell से

gcloud compute networks peerings delete producer-vpc-peering \
    --network=producer-vpc

उपयोगकर्ता की गतिविधि

Cloud Shell से

gcloud compute networks peerings delete consumer-vpc-peering \
        --network=consumer-vpc

"test" पीएससी एंडपॉइंट मिटाएं

Consumer-Activity

Cloud Shell से

gcloud compute forwarding-rules delete test-psc-endpoint --region=$region
gcloud compute addresses delete test-psc-endpoint-ip --region=$region

17. माइग्रेशन के बाद, फ़ाइनल टेस्ट (उपयोगकर्ता की गतिविधि)

इस समय, स्टेट 4 आर्किटेक्चर (आखिरी स्थिति) हासिल कर लिया गया है.

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

Cloud Shell से

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

उपयोगकर्ता-क्लाइंट वीएम से

curl service.example.com

अनुमानित आउटपुट

I am a Producer Service. 

उपयोगकर्ता-क्लाइंट वीएम से

exit

सफल!

18. क्लीनअप करने का तरीका

Cloud Shell से

gcloud compute forwarding-rules delete psc-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q

gcloud dns record-sets delete service.example.com --zone="producer-service" --type=A -q

gcloud dns managed-zones delete "producer-service" -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

gcloud compute networks subnets delete consumer-psc-subnet --region=$region -q

gcloud compute networks subnets delete consumer-vm-subnet --region=$region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute service-attachments delete producer-sa --region=$region -q

gcloud compute forwarding-rules delete psc-service-fr --region=$region -q

gcloud compute addresses delete producer-psc-ip --region=$region -q

gcloud compute backend-services delete producer-bes --region=$region -q

gcloud compute health-checks delete producer-hc --region=$region -q

gcloud compute instance-groups unmanaged delete prod-uig --zone=$zone -q

gcloud compute instances delete producer-service-vm --zone=$zone --project=$projectid -q

gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q

gcloud compute routers delete $region-cr --region=$region -q

gcloud compute networks subnets delete psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks subnets delete producer-service-subnet --region=$region -q

gcloud compute networks delete producer-vpc -q

19. बधाई हो!

कोडलैब पूरा करने के लिए बधाई.

हमने क्या-क्या बताया

  • वीपीसी पियरिंग पर आधारित सेवा सेट अप करने का तरीका
  • पीएसडी2 पर आधारित सेवा सेट अप करने का तरीका
  • VPC पियरिंग के ज़रिए सबनेट माइग्रेशन करने के लिए, Internal-Ranges API का इस्तेमाल करना. इससे VPC पियरिंग से पीएससी सेवा पर माइग्रेट किया जा सकेगा.
  • यह समझना कि सेवा माइग्रेट करने के लिए, डाउनटाइम कब होना चाहिए
  • माइग्रेशन के बाद, डेटा को व्यवस्थित करने का तरीका