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

1. परिचय

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

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

45b90d50690dd111.png

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

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

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

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

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

2. Private Service Connect के फ़ायदे

वीपीसी पियरिंग का इस्तेमाल करने की तुलना में, पीएससी के कई फ़ायदे हैं:

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

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

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

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

बढ़ाने लायक बेहतर क्षमता

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

3. सेवा का इस्तेमाल करने वालों के लिए मुख्य सिद्धांत

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

एंडपॉइंट

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

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

टारगेट

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

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

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

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

4. सेवा बनाने वाली कंपनियों के लिए मुख्य कॉन्सेप्ट

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

Private Service Connect सबनेट

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

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

अगर आपको उपभोक्ता के कनेक्शन के आईपी पते की जानकारी सेव रखनी है, तो उपभोक्ता के कनेक्शन की जानकारी देखना लेख पढ़ें.

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

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

Private Service Connect सबनेट का कम से कम साइज़ /24 होना चाहिए.

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

सेवा देने वाली कंपनियां, सर्विस अटैचमेंट के ज़रिए अपनी सेवा को उपलब्ध कराती हैं.

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

कनेक्शन की प्राथमिकताएं

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

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

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

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

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

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

1ce5607c0c56d77d.jpeg

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

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

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

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

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

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

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

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

Cloud Shell शुरू करें

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

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

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

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

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. प्रोड्यूसर वीपीसी नेटवर्क बनाना

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 Shell से, अपने क्लस्टर पर मेनिफ़ेस्ट लागू करें

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 Shell से, अपने क्लस्टर पर मेनिफ़ेस्ट लागू करें

kubectl apply -f my-service.yaml

ServiceAttachment बनाएं

नीचे दिए गए मेनिफ़ेस्ट में, एक ऐसे ServiceAttachment के बारे में बताया गया है जो आपकी बनाई गई सेवा को सेवा का इस्तेमाल करने वालों के लिए उपलब्ध कराता है. क्लाउड शेल से, मेनिफ़ेस्ट को 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 Shell से, अपने क्लस्टर पर मेनिफ़ेस्ट लागू करें

kubectl apply -f my-psc.yaml

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

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

Producer की पुष्टि करना

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

Cloud Shell में, नीचे दिए गए कमांड का इस्तेमाल करके ServiceAttachment की जानकारी देखी जा सकती है

kubectl describe serviceattachment emoji-sa

GKE L4 ILB देखें

Cloud Console में, Network Services → Load Balancing → Frontends पर जाएं

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

ed7a25ed4774977b.png

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

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

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

5a00836ee514b918.png

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

497f5f43920018c0.pnge246063a23771273.png

9. उपयोगकर्ताओं का वीपीसी नेटवर्क बनाना

1f3c90f1e139e906.png

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

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

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

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 से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है

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-attachment" फ़ील्ड में डालेंगे.

7abaccc4e24f1ef7.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

उपयोगकर्ता के वीपीसी के Cloud Shell से, फ़ॉरवर्डिंग के नियम और स्टैटिक आईपी का पता लगाएं

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 में, नेटवर्क सेवाएं → Private Service Connect → कनेक्ट किए गए एंडपॉइंट पर जाएं. इसके बाद, नया बनाया गया एंडपॉइंट देखें

206bc00297aaa260.png

आइए, consumer-instance-1 में लॉग इन करें और Producer Published Service के ऐक्सेस की जांच करें

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

81f3210b29faebd3.png

Cloud Shell में जाकर, यह तरीका अपनाएं:

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 Shell में जाकर, यह तरीका अपनाएं:

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"

आइए, consumer-instance-2 में लॉग इन करें और Producer Published Service के ऐक्सेस की जांच करें

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

81f3210b29faebd3.png

Cloud Shell में जाकर, यह तरीका अपनाएं:

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 Shell में जाकर, यह तरीका अपनाएं:

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 में, Operations Logging → Log Explorer पर जाएं
  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 → Connection) को बड़ा करें और यहां दिया गया आउटपुट देखें. dest_ip: 10.0.60.100, प्रोड्यूसर सेवा को ऐक्सेस करने के लिए इस्तेमाल किया गया स्टैटिक टीसीपी आईपी है. साथ ही, src_ip: 10.0.70.10 या 10.0.70.20, वीएम इंस्टेंस के आईपी पते हैं. डिस्पोज़िशन की अनुमति है.

2669743fd1f1cb0d.png

15. पुष्टि - प्रोड्यूसर

afe738fc869f0d6e.png

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

89ded87a63888f60.png

सेवा पर क्लिक करने से, कनेक्ट किया गया उपभोक्ता प्रोजेक्ट और उसकी स्थिति दिखती है. इसे यहां दिखाया गया है

15966d47423ebc5f.png

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

1f3c90f1e139e906.png

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

डिफ़ॉल्ट रूप से, GCP सभी इंग्रेस ट्रैफ़िक को अस्वीकार करता है, लेकिन सभी इग्रेस ट्रैफ़िक को अनुमति देता है. यहां दिए गए चरणों में, हम फ़ायरवॉल का एक नियम बनाएंगे. यह नियम, पहले से तय किए गए नेटवर्किंग टैग ‘google2' पर आधारित होगा. इस टैग का इस्तेमाल consumer-instance-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

अब हम यह जांच करेंगे कि consumer-instance-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 Shell में जाकर, यह तरीका अपनाएं:

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-egress", वीएम इंस्टेंस और स्टैटिक आईपी के बीच के फ़्लो को कैप्चर कर रहा है

  1. Cloud Console में, Operations Logging → Log Explorer पर जाएं
  2. क्वेरी फ़ील्ड में, नीचे दी गई एंट्री को अपने consumerproject से अपडेट करें. इसके बाद, "क्वेरी चलाएं" को चुनें

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

  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

Producer प्रोजेक्ट के टर्मिनल में मौजूद किसी एक Cloud Shell से, लैब के कॉम्पोनेंट मिटाएं

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

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

उपभोक्ता प्रोजेक्ट के टर्मिनल में मौजूद किसी एक क्लाउड शेल से, लैब के कॉम्पोनेंट मिटाएं

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

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

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

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