GKE (जीकेई) की मदद से सेवाएं पब्लिश करने और उनका इस्तेमाल करने के लिए, Private Service Connect का इस्तेमाल करना

1. परिचय

Private Service Connect की मदद से, सेवा देने वाला प्रोड्यूसर, सेवा देने वाले किसी उपभोक्ता को निजी तौर पर सेवाएं दे सकता है. Private Service Connect के ये फ़ायदे हैं:

  • सेवा प्रोड्यूसर VPC नेटवर्क, सेवा देने वाले एक से ज़्यादा उपभोक्ताओं के साथ काम कर सकता है.
  • हर उपभोक्ता उस अंदरूनी आईपी पते से कनेक्ट होता है जिसे वह तय करता है. Private Service Connect, नेटवर्क अड्रेस ट्रांसलेशन (NAT) करता है, ताकि अनुरोध को सर्विस प्रोड्यूसर तक भेजा जा सके.

45b90d50690dd111.png

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

आपको इनके बारे में जानकारी मिलेगी

  • निजी सेवा कनेक्ट के फ़ायदे
  • सेवा उपभोक्ताओं के लिए मुख्य सिद्धांत
  • सर्विस प्रोड्यूसर के लिए खास कॉन्सेप्ट
  • प्रोड्यूसर एनवायरमेंट बनाना
  • सेवा अटैचमेंट की मदद से सेवा (प्रोड्यूसर एनवायरमेंट) दिखाएं
  • उपभोक्ता के लिए एनवायरमेंट बनाना
  • उपभोक्ता नेटवर्क में फ़ॉरवर्ड करने का नियम बनाना
  • उपभोक्ता के ऐक्सेस की पुष्टि करना
  • नीति का ऐक्सेस कंट्रोल चालू करें
  • उपभोक्ता के लिए फ़ॉरवर्ड करने के नियम का ऐक्सेस ब्लॉक करने के लिए, इग्रेस डेटा ट्रैफ़िक के नियम का इस्तेमाल करें

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

  • GKE (जीकेई) क्लस्टर और सेवाओं को डिप्लॉय करने की जानकारी
  • इंटरनल लोड बैलेंसर के बारे में जानकारी
  • दो प्रोजेक्ट में VPC बनाने की सुविधा
  • GKE (जीकेई) क्लस्टर बनाने की सुविधा

2. निजी सेवा कनेक्ट के फ़ायदे

PSC में, VPC पीयरिंग की तुलना में आपको कई फ़ायदे मिलते हैं:

प्राइवेट आईपी स्पेस का बेहतर कंट्रोल

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

बेहतर सुरक्षा और आइसोलेशन

  • सेवा उपभोक्ता के तौर पर, सिर्फ़ आपके पास सेवा प्रोड्यूसर से संपर्क करने की सुविधा होती है. यह एक-तरफ़ा कनेक्टिविटी फ़ायरवॉल कॉन्फ़िगरेशन को बहुत अधिक सरल बना देती है लेकिन यह सेवा निर्माता से आने वाले नुकसानदेह ट्रैफ़िक के जोखिम को भी कम करती है.
  • सेवा प्रोड्यूसर के तौर पर, आपको उपभोक्ता के VPC में सबनेट रेंज के आधार पर अपने फ़ायरवॉल नियमों को बदलने की ज़रूरत नहीं है. आप अपनी सेवा के लिए कॉन्फ़िगर की गई NAT IP पता श्रेणी के लिए आसानी से फ़ायरवॉल नियम बना सकते हैं.

बेहतर बढ़ाए जा सकने की योग्यता

  • PSC के डिज़ाइन में काफ़ी बड़े पैमाने पर बदलाव किए जा सकते हैं. इसके लिए, हज़ारों उपभोक्ताओं की मदद की जाती है. साथ ही, सर्विस प्रोड्यूसर इसे बड़े पैमाने पर मल्टी-टेनेंट या सिंगल-टेनेंट सेवाएं ऑफ़र करने की सुविधा देते हैं.
  • निजी सेवा कनेक्ट का इस्तेमाल करने वाले सेवा उपभोक्ता के तौर पर, आपके पास VPC के मुताबिक, संसाधन बनाने का विकल्प होता है. इस स्केल पर, प्रोड्यूसर VPC में बनाए गए ऐसे संसाधनों की संख्या का कोई असर नहीं पड़ता है.

3. सेवा उपभोक्ताओं के लिए मुख्य सिद्धांत

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

एंडपॉइंट

टारगेट की गई सेवा से कनेक्ट करने के लिए, Private Service Connect के एंडपॉइंट का इस्तेमाल किया जाता है. एंडपॉइंट के पास आपके VPC नेटवर्क में इंटरनल आईपी पता होता है. यह आईपी पता, फ़ॉरवर्ड करने के नियम से जुड़े संसाधन पर आधारित होता है.

एंडपॉइंट पर ट्रैफ़िक भेजा जाता है, जो उसे आपके VPC नेटवर्क से बाहर के टारगेट पर फ़ॉरवर्ड करता है.

टारगेट

Private Service Connect के एंडपॉइंट का एक टारगेट होता है. यह वह सेवा है जिससे आपको कनेक्ट करना है:

  • एपीआई बंडल:
  • सभी एपीआई: ज़्यादातर Google API
  • VPC-SC: ऐसे एपीआई जो VPC सर्विस कंट्रोल के साथ काम करते हैं
  • किसी अन्य VPC नेटवर्क में, पब्लिश की गई सेवा. इस सेवा को आपका संगठन या कोई तीसरा पक्ष मैनेज कर सकता है.

पब्लिश की गई सेवा

अपने एंडपॉइंट को सेवा प्रोड्यूसर की सेवा से कनेक्ट करने के लिए, आपको सेवा के लिए सेवा अटैचमेंट की ज़रूरत होगी. सेवा अटैचमेंट यूआरआई का फ़ॉर्मैट यह है: projects/SERVICE_PROJECT/आखिरी जगह/क्षेत्र/सेवा अटैचमेंट/SERVICE_NAME

4. सर्विस प्रोड्यूसर के लिए खास कॉन्सेप्ट

उपभोक्ताओं को कोई सेवा उपलब्ध कराने के लिए, आप उपभोक्ता आईपी पतों के नेटवर्क अड्रेस ट्रांसलेशन (NAT) का इस्तेमाल करने के लिए एक या उससे ज़्यादा ऐसे सबनेट बनाते हैं जो खास तौर पर बनाए जाते हैं. फिर आप एक सेवा अटैचमेंट बनाते हैं, जो उन सबनेट के बारे में बताता है.

Private Service Connect सबनेट

किसी सेवा को सार्वजनिक करने के लिए, सेवा प्रोड्यूसर पहले Private Service Connect के हिसाब से एक या उससे ज़्यादा सबनेट बनाता है.

जब किसी उपभोक्ता VPC नेटवर्क से कोई अनुरोध भेजा जाता है, तो उपभोक्ता के सोर्स आईपी पते को सोर्स NAT (SNAT) का इस्तेमाल करके, Private Service Connect सबनेट से चुने गए आईपी पते में बदला जाता है.

अगर आपको उपभोक्ता कनेक्शन के आईपी पते की जानकारी बनाए रखनी है, तो उपभोक्ता कनेक्शन की जानकारी देखना पर जाएं.

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

Private Service Connect के सबनेट में, हर 63 उपभोक्ता वीएम के लिए कम से कम एक आईपी पता होना चाहिए. इससे नेटवर्क पते का अनुवाद करने के लिए, हर उपभोक्ता वीएम को 1,024 सोर्स टपल असाइन किए जाएंगे.

Private Service Connect सबनेट का कम से कम साइज़ /24 है.

सेवा अटैचमेंट

सर्विस प्रोड्यूसर, सेवा अटैचमेंट के ज़रिए अपनी सेवा दिखाते हैं.

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

कनेक्शन की सेटिंग

जब आप कोई सेवा बनाते हैं, तो आप चुनते हैं कि उसे कैसे उपलब्ध कराया जाए. ऐसा करने के दो विकल्प हैं:

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

ज़रूरी शर्तें और सीमाएं

  • Private Service Connect की सीमाएं लागू होती हैं.
  • GKE के वर्शन 1.21.4-gke.300 और उसके बाद के वर्शन में सेवा अटैचमेंट बनाया जा सकता है.
  • आप एक से ज़्यादा सेवा अटैचमेंट कॉन्फ़िगरेशन में एक ही सबनेट का इस्तेमाल नहीं कर सकते.
  • आपको ऐसी GKE (जीकेई) सेवा बनानी होगी जो इंटरनल टीसीपी/यूडीपी लोड बैलेंसर का इस्तेमाल करती हो.

5. टेस्ट एनवायरमेंट

उपभोक्ता नेटवर्क में एक स्टैटिक आईपी पता होता है, जिसका इस्तेमाल सेवा बनाने वाले को अनुरोध भेजने के लिए किया जाता है. इसके अलावा, इसमें टारगेट-सेवा-अटैचमेंट के साथ-साथ निर्माता के सेवा अटैचमेंट (पब्लिश की गई सेवा) से जुड़े अनुरोध भी शामिल होते हैं.

1ce5607c0c56d77d.jpeg

चलिए, अब प्रोड्यूसर के नेटवर्क के बारे में बात करते हैं. ध्यान दें कि कैसे निर्माता नेटवर्क के पास, उपभोक्ता नेटवर्क के लिए मैपिंग नहीं है. इसके बजाय, निर्माता नेटवर्क में सेवा अटैचमेंट (पब्लिश की गई सेवा) शामिल है, जिसका इस्तेमाल उपभोक्ता सेवाओं के लिए करता है. GK संबंधित ऐप्लिकेशन.

NAT सबनेट का इस्तेमाल तब किया जाता है, जब किसी उपभोक्ता VPC नेटवर्क से कोई अनुरोध भेजा जाता है. उपभोक्ता के सोर्स आईपी पते का अनुवाद, सोर्स NAT (SNAT) का इस्तेमाल करके, किसी Private Service Connect सबनेट से चुने गए आईपी पते में किया जाता है.

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

GKE Private Service Connect के लिए L4ILB के बारे में ज़्यादा जानने और इस लैब में इस्तेमाल होने वाले कॉन्टेंट का सीधा ऐक्सेस पाने के लिए, यहां जाएं: यहां दिया गया

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

Cloud Shell शुरू करना

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

GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

f6ef2b5f13479f3a.png

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

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

कोडलैब के लिए दो प्रोजेक्ट की ज़रूरत होती है. हालांकि, PSC के लिए ऐसा करना ज़रूरी नहीं है. एक या एक से ज़्यादा प्रोजेक्ट को सपोर्ट करने के लिए रेफ़रंस नोट करें.

सिंगल प्रोजेक्ट - प्रोड्यूसर और कंज़्यूमर नेटवर्क की मदद के लिए प्रोजेक्ट अपडेट करें

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो

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

एक से ज़्यादा प्रोजेक्ट - प्रोड्यूसर के नेटवर्क के साथ काम करने के लिए प्रोजेक्ट अपडेट करना

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो

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

इन कलरिंग कोड कन्वेंशन को ध्यान में रखें:

f251ebb137e37136.png

7. प्रोड्यूसर के लिए VPC नेटवर्क बनाएं

afe738fc869f0d6e.png

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom 

GKE क्लस्टर सबनेट बनाना

Cloud Shell से

gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access

GKE (जीकेई) क्लस्टर बनाएं

Cloud Shell से

gcloud container clusters create gke-psc-l4 \
    --release-channel=rapid \
    --enable-ip-alias \
    --zone=us-central1-a \
    --network gke-producer-l4-vpc \
    --num-nodes 1 \
    --subnetwork node-subnet1 \
    --cluster-secondary-range-name pod \
    --services-secondary-range-name service

Private Service Connect (NAT सबनेट) के लिए सबनेट बनाएं

Private Service Connect के साथ इस्तेमाल करने के लिए, आपको एक या इससे ज़्यादा खास सबनेट बनाने होंगे. अगर किसी सेवा को पब्लिश करने के लिए Google Cloud Console का इस्तेमाल किया जा रहा है, तो उस प्रोसेस के दौरान सबनेट बनाए जा सकते हैं.

Private Service Connect सबनेट के बारे में जानकारी पाने के लिए, Private Service Connect सबनेट देखें.

Cloud Shell से

gcloud beta compute networks subnets create gke-nat-subnet \
    --project $prodproject \
    --network gke-producer-l4-vpc \
    --region us-central1 \
    --range 100.100.10.0/24 \
    --purpose PRIVATE_SERVICE_CONNECT

8. वर्कलोड और सेवाएं डिप्लॉय करें

नीचे दिया गया मेनिफ़ेस्ट ऐसे डिप्लॉयमेंट के बारे में बताता है जो सैंपल वेब ऐप्लिकेशन कंटेनर इमेज चलाता है. मेनिफ़ेस्ट को क्लाउड शेल से my-deployment.yaml के तौर पर सेव करें

apiVersion: apps/v1
kind: Deployment
metadata:
  name: psc-ilb
spec:
  replicas: 3
  selector:
    matchLabels:
      app: psc-ilb
  template:
    metadata:
      labels:
        app: psc-ilb
    spec:
      containers:
      - name: whereami
        image: gcr.io/google-samples/whereami:v1.2.1
        ports:
          - name: http
            containerPort: 8080
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 5
          timeoutSeconds: 1

Cloud शेल से अपने क्लस्टर में मेनिफ़ेस्ट लागू करें

kubectl apply -f my-deployment.yaml

सेवा बनाना

नीचे दिए गए मेनिफ़ेस्ट में ऐसी सेवा के बारे में बताया गया है जो टीसीपी पोर्ट 8080 पर इंटरनल टीसीपी/यूडीपी लोड बैलेंसर बनाती है. मेनिफ़ेस्ट को क्लाउड शेल से my-service.yaml के तौर पर सेव करें.

apiVersion: v1
kind: Service
metadata:
  name: gke-l4-psc
  annotations:
    networking.gke.io/load-balancer-type: "Internal"
spec:
  type: LoadBalancer
  selector:
    app: psc-ilb
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP

Cloud शेल से अपने क्लस्टर में मेनिफ़ेस्ट लागू करें

kubectl apply -f my-service.yaml

सेवा अटैचमेंट बनाएं

नीचे दिए गए मेनिफ़ेस्ट में ऐसे Serviceअटैचमेंट के बारे में बताया गया है जो ग्राहकों को सेवा देने के लिए बनाई गई सेवा की जानकारी देता है. मेनिफ़ेस्ट को Cloud शेल से my-psc.yaml के तौर पर सेव करें.

apiVersion: networking.gke.io/v1beta1
kind: ServiceAttachment
metadata:
 name: emoji-sa
 namespace: default
spec:
 connectionPreference: ACCEPT_AUTOMATIC
 natSubnets:
 - gke-nat-subnet
 proxyProtocol: false
 resourceRef:
   kind: Service
   name: gke-l4-psc

Cloud शेल से अपने क्लस्टर में मेनिफ़ेस्ट लागू करें

kubectl apply -f my-psc.yaml

ServiceAttachment में ये फ़ील्ड होते हैं:

  • कनेक्शन की प्राथमिकता: कनेक्शन की वह प्राथमिकता, जिससे तय होता है कि ग्राहक सेवा से कैसे कनेक्ट करते हैं. आप प्रोजेक्ट को अपने-आप मंज़ूरी देने के लिए ACCEPT_AUTOMATIC का इस्तेमाल कर सकते हैं. इसके अलावा, आप प्रोजेक्ट को मंज़ूरी देने के लिए ACCEPT_AUTOMATIC का इस्तेमाल भी कर सकते हैं. ज़्यादा जानकारी के लिए, Private Service Connect का इस्तेमाल करके सेवाओं को पब्लिश करना लेख पढ़ें.
  • natSubnets: सेवा अटैचमेंट के लिए इस्तेमाल करने के लिए सबनेटवर्क संसाधन के नामों की सूची.
  • प्रॉक्सीProtocol: जब सही पर सेट होता है, तब अनुरोधों में उपभोक्ता स्रोत आईपी और Private Service Connect कनेक्शन आईडी उपलब्ध होते हैं. यह फ़ील्ड ज़रूरी नहीं है. अगर यह फ़ील्ड उपलब्ध नहीं कराया जाता है, तो यह डिफ़ॉल्ट रूप से 'गलत' पर सेट हो जाती है.
  • consumerAllowList: इसमें उन उपभोक्ता प्रोजेक्ट की सूची होती है जिन्हें Serviceमेंटment से कनेक्ट करने की अनुमति दी जाती है. इस फ़ील्ड का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब connectionPreference connectionPreference हो. इस फ़ील्ड और अन्य विकल्पों के बारे में ज़्यादा जानकारी के लिए, Private Service Connect का इस्तेमाल करके सेवाएं पब्लिश करना देखें.

प्रोड्यूसर की पुष्टि

सेवा अटैचमेंट की जानकारी देखना

Cloud शेल पर मौजूद इस कमांड का इस्तेमाल करके, Serviceअटैचमेंट की जानकारी देखी जा सकती है

kubectl describe serviceattachment emoji-sa

GKE L4 ILB देखें

Cloud Console से, नेटवर्क सेवाओं पर जाएं → लोड बैलेंसिंग → फ़्रंटएंड

पहले से तय नोड सबनेट 192.168.10.0/24 से मेल खाने वाले फ़्रंटएंड आईपी पते की पहचान करें. यहां दिया गया स्क्रीनशॉट देखें. आपका आईपी पता अलग हो सकता है.

ed7a25ed4774977b.png

पब्लिश की गई सेवा देखें

Cloud Console से, Network Services → Private Service Connect → पब्लिश की गई सेवाएं पर जाएं

लैब में इस्तेमाल किए गए नेटवर्क gke-producer-l4-vpc, से जुड़ी सेवा की पहचान करें. इसके लिए, नीचे दिया गया स्क्रीनशॉट देखें. हालांकि, आपकी सेवा और टारगेट की वैल्यू अलग-अलग हो सकती हैं

5a00836ee514b918.png

उस सेवा के नाम पर क्लिक करें जो आपको नीचे वाली स्क्रीन पर ले जाता है. बुनियादी जानकारी में अपने-आप सेवा अटैचमेंट की जानकारी भरें. साथ ही, ‘कनेक्ट किए गए प्रोजेक्ट' पर ध्यान दें खाली है, क्योंकि उपभोक्ता को अभी इसके लिए रजिस्टर करना बाकी है. स्वीकार करें और अस्वीकार करें धूसर रहेंगे, क्योंकि कनेक्शन की प्राथमिकता "स्वीकार_autoMATICALLY"' पर सेट है, इसलिए इस विकल्प को सेवा अटैचमेंट yaml (my-psc.yaml) में बदलाव करके किसी भी समय "स्वीकार_MANUAL" में बदला जा सकता है.

497f5f43920018c0.png

e246063a23771273.png

9. उपभोक्ताओं के लिए VPC नेटवर्क बनाएं

1f3c90f1e139e906.png

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

कोडलैब के लिए दो प्रोजेक्ट की ज़रूरत होती है. हालांकि, PSC के लिए ऐसा करना ज़रूरी नहीं है. एक या एक से ज़्यादा प्रोजेक्ट को सपोर्ट करने के लिए रेफ़रंस नोट करें.

सिंगल प्रोजेक्ट - प्रोड्यूसर और कंज़्यूमर नेटवर्क की मदद के लिए प्रोजेक्ट अपडेट करें

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो

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

एक से ज़्यादा प्रोजेक्ट - उपभोक्ता के नेटवर्क की मदद करने के लिए प्रोजेक्ट अपडेट करना

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो

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

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom

PSC के लिए सबनेट बनाना

Cloud Shell से

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1

वीएम इंस्टेंस के लिए सबनेट बनाना

Cloud Shell से

gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject  --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1

पब्लिश की गई सेवा को ऐक्सेस करने के लिए, स्टैटिक आईपी पता बनाना

Cloud Shell से

gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100

फ़ायरवॉल के नियम बनाएं

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

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

Cloud Shell से

gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

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

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

10. उपभोक्ता के लिए टेस्ट इंस्टेंस 1 बनाएं

Cloud Shell से

gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud

11. उपभोक्ता के लिए टेस्ट इंस्टेंस 2 बनाएं

Cloud Shell से

gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud

12. सेवा अटैचमेंट बनाएं

पिछले चरण में, आपने प्रोड्यूसर सेवा की अटैचमेंट स्ट्रिंग को एक सुरक्षित जगह पर कॉपी किया था. अब हम स्टोर की गई वैल्यू को "target-service-अटैचमेंट" में डाल देते हैं फ़ील्ड.

7वेबबैक4e24f1ef7.png

Cloud Shell से

gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment

13. सत्यापन - उपभोक्ता

हम CURL और उपभोक्ता और प्रोड्यूसर कम्यूनिकेशन की पुष्टि करने के लिए, फ़ायरवॉल लॉग.

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

1f3c90f1e139e906.png

उपभोक्ता VPC से Cloud इस्तेमाल शेल, फ़ॉरवर्ड करने के नियम और स्टैटिक आईपी की पहचान करता है

gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1

नीचे दिया गया आउटपुट, हम बाद के चरण में प्रोड्यूसर तक पहुंचने के लिए 10.0.60.100 का इस्तेमाल करेंगे

IPAddress: 10.0.60.100
creationTimestamp: '2021-09-30T21:13:54.124-07:00'
id: '3564572805904938477'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr
network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '36583161500548196'
pscConnectionStatus: ACCEPTED

कनेक्ट की गई सेवा देखें

Cloud Console पर जाकर, Network Services → Private Service Connect → कनेक्टेड एंडपॉइंट और नया बनाया गया एंडपॉइंट देखें

206bc00297aaa260.png

यह उपभोक्ता-इंस्टेंस-1 में लॉग इन करके, प्रोड्यूसर की पब्लिश की गई सेवा के ऐक्सेस की जांच करता है

Cloud Shell से + पर क्लिक करके नया टैब खोलें

81f3210b29faebd3.png

Cloud शेल से ये काम करें:

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

gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"

उपभोक्ता-इंस्टेंस-1 के इंस्टेंस में लॉग इन करने के बाद, फ़ॉरवर्ड करने के नियम के आईपी पते 10.0.60.100 के ख़िलाफ़ कोई कर्ल करें

Cloud शेल से ये काम करें:

user@consumer-instance-1:~$ curl 10.0.60.100

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

user@consumer-instance-1:~$ curl 10.0.60.100
{
  "cluster_name": "gke-psc-l4",
  "host_header": "10.0.60.100",
  "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
  "pod_name": "psc-ilb-588887dfdb-w7tbr",
  "pod_name_emoji": "🤷",
  "project_id": "prodorijectid",
  "timestamp": "2021-10-01T17:43:37",
  "zone": "us-central1-a"

यह उपभोक्ता-इंस्टेंस-2 में लॉग इन करके, प्रोड्यूसर की पब्लिश की गई सेवा के ऐक्सेस की जांच करता है

Cloud Shell से + पर क्लिक करके नया टैब खोलें

81f3210b29faebd3.png

Cloud शेल से ये काम करें:

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

gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"

Cloud शेल से ये काम करें:

user@consumer-instance-2:~$ curl 10.0.60.100

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

deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
  "cluster_name": "gke-psc-l4",
  "host_header": "10.0.60.100",
  "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
  "pod_name": "psc-ilb-588887dfdb-4jdql",
  "pod_name_emoji": "🧑🏿",
  "project_id": "prodproject",
  "timestamp": "2021-10-01T17:49:51",
  "zone": "us-central1-a"

14. फ़ायरवॉल को लॉग करने का तरीका - तय की गई पुष्टि की प्रक्रिया

Logs Explorer का इस्तेमाल करके फ़ायरवॉल नियम "vpc-consumner-psc" की पुष्टि करें वीएम के इंस्टेंस और स्टैटिक आईपी के बीच के फ़्लो को कैप्चर कर रहा हो

  1. Cloud Console में, कार्रवाइयों का लॉगिंग पता लगाएं → लॉग एक्सप्लोरर
  2. क्वेरी फ़ील्ड में, नीचे दी गई एंट्री को yourconsumerproject से अपडेट करें और "क्वेरी चलाएं" चुनें

LogName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.Rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. क्वेरी के नतीजों में दिए गए हर स्क्रीनशॉट के लिए यह जानकारी मिलती है

23e427b3060473.png

  1. लॉग (jsonPayload → कनेक्शन) को बड़ा करें और नीचे दिए गए आउटपुट की पहचान करें. dest_ip पर ध्यान दें: 10.0.60.100, प्रोड्यूसर सेवा को ऐक्सेस करने के लिए इस्तेमाल किया जाने वाला स्टैटआईसी टीसीपी आईपी है और src_ip: 10.0.70.10 या 10.0.70.20, वीएम इंस्टेंस आईपी पते हैं. स्थान की अनुमति है.

2669743fd1f1cb0d.png

15. सत्यापन - निर्माता

afe738fc869f0d6e.png

प्रोड्यूसर प्रोजेक्ट से पुष्टि करें कि सेवा अटैचमेंट सही तरीके से कनेक्ट हो गया है. Network Services → Private Service Connect → पब्लिश की गई सेवाएं पर जाएं

89d87a63888f60.png

सेवा पर क्लिक करने से, आपके जुड़े हुए उपभोक्ता प्रोजेक्ट और स्टेटस का पता चलता है. इसका उदाहरण नीचे दिया गया है

15966d47423ebc5f.png

16. पब्लिश की गई सेवा के ऐक्सेस पर पाबंदी लगाना

1f3c90f1e139e906.png

अब तक हमने पुष्टि की है कि दोनों इंस्टेंस के पास पब्लिश की गई सेवाओं का ऐक्सेस है. अब, पब्लिश की गई सेवाओं का उपभोक्ता-इंस्टेंस-2 ऐक्सेस अस्वीकार करने के लिए, इग्रेस डेटा ट्रैफ़िक का नियम बनाएं.

डिफ़ॉल्ट रूप से, GCP पर सभी इग्रेस डेटा ट्रैफ़िक को अनुमति दी जाती है. हालांकि, इसमें सभी इन्ग्रेस डेटा ट्रैफ़िक को शामिल करने की अनुमति नहीं दी जाती है. नीचे दिए गए चरणों में, हम पहले से तय किए गए नेटवर्किंग टैग 'google2' के आधार पर फ़ायरवॉल नियम बनाएंगे का इस्तेमाल, उपभोक्ता-इंस्टेंस-2 बनाते समय किया जाता है, ताकि पब्लिश की गई सेवा का ऐक्सेस न दिया जा सके.

7fa2cda1dfec33a.png

नया क्लाउड शेल टैब खोलने के लिए, + पर क्लिक करें और क्लाउड शेल में नीचे दिया गया फ़ायरवॉल नियम लागू करें

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

gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging

अब यह देखते हैं कि उपभोक्ता-इंस्टेंस-2, पब्लिश की गई सेवा को ऐक्सेस कर पा रहा है या नहीं. अगर आपके सेशन का समय खत्म हो गया है, तो आपको एक नया क्लाउड शेल + खोलना होगा और यहां बताए गए तरीके से वीएम में लॉग इन करना होगा.

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

gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"

Cloud शेल से ये काम करें:

user@consumer-instance-2:~$ curl 10.0.60.100

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

user@consumer-instance-2:~$ curl 10.0.60.100
curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out

फ़ायरवॉल को लॉग करने का तरीका - पुष्टि करने का अनुरोध अस्वीकार किया गया

Logs Explorer का इस्तेमाल करके, फ़ायरवॉल के नियम "psc-endpoint-deny-e कंट्रोल" की पुष्टि करें वीएम इंस्टेंस और स्टैटिक आईपी के बीच के फ़्लो को कैप्चर कर रहा हो

  1. Cloud Console में, कार्रवाइयों का लॉगिंग पता लगाएं → लॉग एक्सप्लोरर
  2. क्वेरी फ़ील्ड में, नीचे दी गई एंट्री को yourconsumerproject पर अपडेट करें और "क्वेरी चलाएं" को चुनें

LogName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.Rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-eways")

  1. क्वेरी के नतीजों में दिए गए हर स्क्रीनशॉट के लिए यह जानकारी मिलती है

83b4fc7348ac93cd.png

  1. लॉग को बड़ा करें और नीचे दिए गए आउटपुट की पहचान करें. dest_ip पर ध्यान दें: 10.0.60.100, स्टैटआईसी टीसीपी आईपी है और src_ip: 10.0.70.10 या 10.0.70.20, वीएम इंस्टेंस आईपी पते हैं. स्थिति को अस्वीकार किया गया है.

a344f75f67590655.png

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

प्रोड्यूसर नेटवर्क को क्लीनअप करने का तरीका

afe738fc869f0d6e.png

प्रोड्यूसर प्रोजेक्ट टर्मिनल के एक क्लाउड शेल से लैब के कॉम्पोनेंट मिटाएं

gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet

gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet

gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet

gcloud compute networks delete gke-producer-l4-vpc --quiet

1f3c90f1e139e906.png

उपभोक्ता नेटवर्क को हटाने का तरीका

Consumer Project टर्मिनल के एक क्लाउड शेल से लैब के कॉम्पोनेंट मिटाएं

gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet

gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet

gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

18. बधाई हो!

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

इसमें हमने इन विषयों के बारे में बताया

  • निजी सेवा कनेक्ट के फ़ायदे
  • सेवा उपभोक्ताओं के लिए मुख्य सिद्धांत
  • सर्विस प्रोड्यूसर के लिए खास कॉन्सेप्ट
  • प्रोड्यूसर एनवायरमेंट बनाना
  • सेवा अटैचमेंट की मदद से सेवा (प्रोड्यूसर एनवायरमेंट) दिखाएं
  • उपभोक्ता के लिए एनवायरमेंट बनाना
  • उपभोक्ता नेटवर्क में फ़ॉरवर्ड करने का नियम बनाना
  • उपभोक्ता के ऐक्सेस की पुष्टि करना
  • नीति का ऐक्सेस कंट्रोल चालू करें
  • उपभोक्ता के लिए फ़ॉरवर्ड करने के नियम का ऐक्सेस ब्लॉक करने के लिए, इग्रेस डेटा ट्रैफ़िक के नियम का इस्तेमाल किया गया