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

github.com से कम्यूनिकेशन, सार्वजनिक आईपी पते पर किया जाता है. इसलिए, इसे Looker के ऐसे इंस्टेंस से ऐक्सेस नहीं किया जा सकता जिन्हें Private या Public+Private के तौर पर डिप्लॉय किया गया है.
इस कोडलैब में, Looker PSA से शुरू किए गए इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर और इंटरनेट नेटवर्क एंडपॉइंट ग्रुप (एनईजी) का इस्तेमाल करके, GitHub से साउथबाउंड एचटीटीपीएस कनेक्शन बनाया जाएगा.
आपको क्या सीखने को मिलेगा
- नेटवर्क की ज़रूरी शर्तें
- 'कनेक्शन की जांच करें' सुविधा का इस्तेमाल करके, Looker से GitHub को कनेक्ट करें
आपको इन चीज़ों की ज़रूरत होगी
- मालिक की अनुमतियों वाला Google Cloud प्रोजेक्ट
- GitHub खाता और रिपॉज़िटरी
- GitHub का निजी ऐक्सेस टोकन (क्लासिक)
- मौजूदा Looker PSA इंस्टेंस, जिसमें सिर्फ़ निजी या सार्वजनिक और निजी, दोनों आईपी पते चालू हों

2. आपको क्या बनाना है
आपको एक इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर और इंटरनेट एनईजी डिप्लॉय करना होगा. इसे github.com के हल किए गए आईपी पते के साथ कॉन्फ़िगर किया जाएगा. यह github.com संगठनों के लिए इंटरनेट से बाहर निकलने के लिए Cloud NAT का इस्तेमाल करेगा. इसे Looker ने हल किया है.
3. नेटवर्क की ज़रूरी शर्तें
नेटवर्क से जुड़ी ज़रूरी शर्तों के बारे में यहां बताया गया है:
घटक | ब्यौरा |
VPC ($vpc_network) | कस्टम मोड वीपीसी |
फ़ॉरवर्डिंग के नियम वाला सबनेट | इस कुकी का इस्तेमाल, रीजनल इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर के लिए आईपी पता असाइन करने के लिए किया जाता है |
सिर्फ़ प्रॉक्सी सबनेट | लोड बैलेंसर के हर प्रॉक्सी को एक इंटरनल आईपी पता असाइन किया जाता है. प्रॉक्सी से बैकएंड वीएम या एंडपॉइंट पर भेजे गए पैकेट में, प्रॉक्सी-ओनली सबनेट का सोर्स आईपी पता होता है. |
इंटरनेट NEG | इस संसाधन का इस्तेमाल, लोड बैलेंसर के लिए बाहरी बैकएंड तय करने के लिए किया जाता है. सिर्फ़ Cloud वीपीएन या Cloud Interconnect के ज़रिए एंडपॉइंट तक नहीं पहुंचा जा सकता. |
बैकएंड सर्विस | बैकएंड सेवा, लोड बैलेंसर और बैकएंड संसाधनों के बीच एक पुल की तरह काम करती है. ट्यूटोरियल में, बैकएंड सेवा को इंटरनेट एनईजी से जोड़ा गया है. |
क्लाउड राऊटर | Cloud NAT, कंट्रोल प्लेन की सुविधाओं के लिए Cloud Router पर निर्भर करता है. हालांकि, यह बीजीपी सेशन मैनेजमेंट के लिए नहीं है. |
Cloud NAT | रीजनल इंटरनेट एनईजी, इंटरनेट इग्रेस के लिए Cloud NAT का इस्तेमाल करता है. |
4. कोडलैब टोपोलॉजी

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



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

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

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
6. शुरू करने से पहले
एपीआई चालू करें
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network
सभी ज़रूरी सेवाएं चालू करें:
gcloud services enable compute.googleapis.com
7. VPC नेटवर्क के कॉम्पोनेंट
VPC नेटवर्क
इस ट्यूटोरियल के लिए, पहले से मौजूद पीएसए Looker इंस्टेंस का होना ज़रूरी है. इसलिए, इससे जुड़ा वीपीसी पहले ही बना लिया गया है.
Cloud Shell में, फ़ॉरवर्डिंग नियम वाली सबनेट बनाएं:
gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
Cloud Shell में, सिर्फ़ रीजनल प्रॉक्सी सबनेट बनाएं:
gcloud compute networks subnets create $region-proxyonly-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=$vpc_network \
--range=10.10.10.0/24
पब्लिक NAT गेटवे बनाना
NAT गेटवे का इस्तेमाल, रीजनल इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर करता है. इसका इस्तेमाल इंटरनेट से बाहर निकलने के लिए किया जाता है. इसके लिए, कॉन्फ़िगरेशन विकल्प –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB का इस्तेमाल किया जाता है. इसलिए, एक ही NATGW, GCE/GKE के इंटरनेट से बाहर निकलने की सुविधा के साथ काम नहीं करेगा. GCE/GKE इंटरनेट इग्रेस के लिए, –endpoint-types=ENDPOINT_TYPE_VM के साथ एक और NAT GW डिप्लॉय करें.
Cloud Shell में, Cloud Router बनाएं:
gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region
Cloud Shell में, Cloud NAT गेटवे बनाएं. इससे टीसीपी प्रॉक्सी लोड बैलेंसर के लिए इंटरनेट इग्रेस चालू हो जाएगा:
gcloud compute routers nats create $vpc_network-natgw \
--router=$vpc_network-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
--auto-allocate-nat-external-ips \
--region=$region
लोड बैलेंसर का आईपी पता रिज़र्व करना
Cloud Shell में, लोड बैलेंसर के लिए एक इंटरनल आईपी पता रिज़र्व करें. इसका इस्तेमाल बाद में github.com के लिए डीएनएस ए रिकॉर्ड के तौर पर किया जाएगा:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=psa-fr-subnet
Cloud Shell में, रिज़र्व किया गया आईपी पता देखें:
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
आउटपुट का उदाहरण:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
8. इंटरनेट NEG
इंटरनेट एनईजी के ज़रिए रेफ़र किए गए बाहरी एंडपॉइंट को कॉन्फ़िगर करने के दो तरीके हैं: INTERNET_FQDN_PORT या INTERNET_IP_PORT. अगर INTERNET_IP_PORT (पहला विकल्प) फ़ॉर्मैट चुना जाता है, तो सिर्फ़ सार्वजनिक इंटरनेट से रूट किया जा सकने वाला आईपी पता इस्तेमाल किया जा सकता है. अगर INTERNET_FQDN_PORT (दूसरा विकल्प) फ़ॉर्मैट चुना जाता है, तो FQDN को सार्वजनिक इंटरनेट से रूट किए जा सकने वाले आईपी पते या निजी आईपी पते में बदला जा सकता है. यह एंडपॉइंट के स्कोप (क्षेत्रीय या वैश्विक) पर निर्भर करता है.
पहला विकल्प: आईपी पते का इस्तेमाल करके, इंटरनेट एनईजी सेट अप करना
इंटरनेट एनईजी को Github.com के हल किए गए आईपी पते की ज़रूरत होती है. इसलिए, बेहतर परफ़ॉर्मेंस के लिए लोकल टर्मिनल खोलें और dig कमांड का इस्तेमाल करके github.com का आईपी पता हासिल करें.
लोकल टर्मिनल से मिले उदाहरण में, हल किया गया आईपी पता 140.82.113.4 जनरेट होता है
bash-3.2$ dig github.com ; <<>> DiG 9.10.6 <<>> github.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;github.com. IN A ;; ANSWER SECTION: github.com. 60 IN A 140.82.113.4 ;; Query time: 409 msec ;; SERVER: ::1#53(::1) ;; WHEN: Thu Sep 26 15:50:45 CDT 2024 ;; MSG SIZE rcvd: 65
इंटरनेट एनईजी बनाएं और –network-endpoint-type को internet_ip_port पर सेट करें.
Cloud Shell में, github.com के लिए इस्तेमाल किया जाने वाला इंटरनेट एनईजी बनाएं:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_IP_PORT \
--network=$vpc_network \
--region=$region
Cloud Shell में, github.com के हल किए गए आईपी पते और पोर्ट 443 के साथ github-internet-neg इंटरनेट एनईजी को अपडेट करें:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="ip=[your-resolved-ip],port=443" \
--region=$region
उदाहरण:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="ip=140.82.113.4,port=443" \
--region=$region
दूसरा विकल्प: FQDN का इस्तेमाल करके, इंटरनेट एनईजी सेट अप करना
अगर चाहें, तो इंटरनेट एनईजी बनाया जा सकता है. साथ ही, –network-endpoint-type को internet_FQDN_port पर सेट किया जा सकता है.
Cloud Shell में, github.com के लिए इस्तेमाल किया जाने वाला इंटरनेट एनईजी बनाएं:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=$vpc_network \
--region=$region
Cloud Shell में, github.com के FQDN के साथ github-internet-neg इंटरनेट एनईजी को अपडेट करें:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="fqdn=github.com,port=443" \
--region=$region
9. Github सेवा बनाना
लोड बैलेंसर कॉम्पोनेंट बनाना
Cloud Shell में, यह तरीका अपनाएं:
gcloud compute backend-services create psa-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-internet-neg --network-endpoint-group-region=$region --region=$region
Cloud Shell में, अपने बैकएंड सेवा पर अनुरोधों को रूट करने के लिए, टारगेट टीसीपी प्रॉक्सी बनाएं:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=psa-backend-svc \
--region=$region
नीचे दिए गए सिंटैक्स में, फ़ॉरवर्डिंग का नियम (इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर) बनाएं.
Cloud Shell में, यह तरीका अपनाएं:
gcloud compute forwarding-rules create psa-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=$vpc_network \
--subnet=psa-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
10. GitHub डीएनएस ज़ोन
यहां दिए गए सेक्शन में, आपको GitHub.com के लिए डीएनएस रिस्पॉन्स पॉलिसी बनानी होगी. इसमें एक ऐसा ए रिकॉर्ड होगा जिसमें इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर का आईपी पता शामिल होगा.
इसके बाद, डीएनएस पियरिंग, github.com ज़ोन को Looker PSA के साथ शेयर करेगी. इससे, इंटरनेट एनईजी और Cloud NAT के साथ-साथ इंटरनल लोड बैलेंसर के ज़रिए GitHub से कनेक्ट किया जा सकेगा.
Cloud Shell में, जवाब देने से जुड़ी नीति वाला ज़ोन बनाएं:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
Cloud Shell में, टीसीपी प्रॉक्सी लोड बैलेंसर के आईपी पते [insert-your-ip-address] वाला डीएनएस ए रिकॉर्ड बनाएं:
gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"
उदाहरण:
gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

डीएनएस पियरिंग अपडेट करना
इस सेक्शन में, "gcloud services peered-dns-domains create" सिंटैक्स का इस्तेमाल किया जाएगा. यह सिंटैक्स, निजी सेवा कनेक्शन के लिए पियर किया गया डीएनएस डोमेन बनाता है. यह सेवा देने वाली कंपनी के वीपीसी नेटवर्क में मौजूद किसी नेमस्पेस में रिकॉर्ड के अनुरोधों को, सेवा लेने वाली कंपनी के वीपीसी नेटवर्क में भेजता है, ताकि उन्हें हल किया जा सके.
Cloud Shell में, peered-dns-domain बनाएं. Looker, github.com के लिए क्वेरी करेगा:
gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.
11. GitHub से कनेक्टिविटी की जांच करना
यहां दिए गए चरणों में, github.com से HTTPS कनेक्टिविटी की पुष्टि करने के लिए, Looker Console का इस्तेमाल करके एक प्रोजेक्ट बनाया जाएगा.
12. नया प्रोजेक्ट बनाएं
डेवलपमेंट मोड चालू करना
Looker Console में, यहां जाएं:
डेवलपमेंट मोड चालू करें (पेज पर सबसे नीचे बाईं ओर). इसे चुनने के बाद, ‘आप डेवलपमेंट मोड में हैं' बैनर दिखता है.

नया प्रोजेक्ट बनाना
Cloud Console में, यहां जाएं:
डेवलप करें → प्रोजेक्ट

नया LookML प्रोजेक्ट चुनें

प्रोजेक्ट का नाम डालें. इसके बाद, 'खाली प्रोजेक्ट' चुनें और फिर 'प्रोजेक्ट बनाएं' पर क्लिक करें.

'Git कॉन्फ़िगर करें' को चुनें

Git को कॉन्फ़िगर करना
एचटीटीपीएस github की जानकारी का इस्तेमाल करके, रिपॉज़िटरी का यूआरएल अपडेट करें. पक्का करें कि आपने यूआरएल में .git जोड़ा हो. इसके बाद, जारी रखें को चुनें.

उदाहरण:

अपने GitHub उपयोगकर्ता नाम और निजी ऐक्सेस टोकन (क्लासिक) से चुने गए विकल्प को अपडेट करें. इसके बाद, 'टेस्ट करें और सेटअप पूरा करें' को चुनें.

Git Actions चुनें

'Git कनेक्शन की जांच करें' चुनें

Git कनेक्शन की जांच की पुष्टि करना

13. व्यवस्थित करें
किसी एक Cloud Shell टर्मिनल से लैब कॉम्पोनेंट मिटाएं:
gcloud compute forwarding-rules delete psa-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete psa-backend-svc --region=$region -q
gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q
gcloud compute routers delete $vpc_network-cloud-router --region=$region -q
gcloud compute network-endpoint-groups delete github-internet-neg --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q
gcloud services peered-dns-domains delete github-com --network=$vpc_network -q
gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q
gcloud dns response-policies update github-com --networks= -q
gcloud dns response-policies delete github-com
14. बधाई हो
बधाई हो, आपने Looker Console का इस्तेमाल करके, GitHub से कनेक्टिविटी को कॉन्फ़िगर और पुष्टि कर ली है.
Cosmopup को कोडलैब बहुत पसंद हैं!!
