1. परिचय
Looker (Google Cloud Core) के सिर्फ़ वे इंस्टेंस, प्राइवेट आईपी और पब्लिक आईपी कॉन्फ़िगरेशन के साथ काम करते हैं जो अपने निजी कनेक्शन के लिए निजी सेवाओं के ऐक्सेस का इस्तेमाल करते हैं.
Looker (Google Cloud Core) के ऐसे इंस्टेंस का एक सार्वजनिक यूआरएल होता है जिसमें निजी आईपी (निजी सेवाओं का ऐक्सेस) कनेक्शन और सार्वजनिक आईपी कनेक्शन, दोनों होते हैं. इसमें आने वाला सारा ट्रैफ़िक, सार्वजनिक आईपी कनेक्शन से जाएगा. आउटगोइंग ट्रैफ़िक को आपके वीपीसी से रूट किया जाता है. इसे सिर्फ़ निजी आईपी ट्रैफ़िक को अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है, जैसा कि पहले चित्र में दिखाया गया है.
Figure1
github.com से संपर्क करने पर, एक सार्वजनिक आईपी पता मिलता है. इसलिए, निजी या सार्वजनिक+निजी के तौर पर डिप्लॉय किए गए Looker इंस्टेंस से, इस पते को ऐक्सेस नहीं किया जा सकता.
इस कोडलैब में, आपको Looker PSA से ट्रिगर किए गए इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर और इंटरनेट नेटवर्क एंडपॉइंट ग्रुप (एनईजी) का इस्तेमाल करके, GitHub से साउथबाउंड एचटीटीपीएस कनेक्शन करना होगा.
आपको क्या सीखने को मिलेगा
- नेटवर्क की ज़रूरी शर्तें
- टेस्ट कनेक्शन का इस्तेमाल करके, Looker से GitHub से कनेक्ट करना
आपको इन चीज़ों की ज़रूरत होगी
- मालिक की अनुमतियां वाला Google Cloud प्रोजेक्ट
- GitHub खाता और रिपॉज़िटरी
- GitHub का निजी ऐक्सेस टोकन (क्लासिक)
- मौजूदा Looker PSA इंस्टेंस, जिसमें सार्वजनिक + निजी या सिर्फ़ निजी सेटिंग चालू हो
2. आपको क्या बनाना है
आपको एक इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर और इंटरनेट एनईजी को डिप्लॉय करना होगा. इसे github.com के रिज़ॉल्व किए गए आईपी पते के साथ कॉन्फ़िगर किया जाएगा. यह Looker की मदद से, github.com के उन संगठनों के लिए इंटरनेट एक्सग्रेस के लिए Cloud NAT का इस्तेमाल करता है जिन्हें रिज़ॉल्व किया गया है.
3. नेटवर्क की ज़रूरी शर्तें
नेटवर्क से जुड़ी ज़रूरी शर्तों के बारे में यहां बताया गया है:
घटक | ब्यौरा |
वीपीसी ($vpc_network) | कस्टम मोड वीपीसी |
फ़ॉरवर्ड करने के नियम का सबनेट | इसका इस्तेमाल, रीजनल इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर के लिए आईपी पता असाइन करने के लिए किया जाता है |
सिर्फ़ प्रॉक्सी के लिए सबनेट | लोड बैलेंसर की हर प्रॉक्सी को एक इंटरनल आईपी पता असाइन किया जाता है. किसी प्रॉक्सी से बैकएंड वीएम या एंडपॉइंट पर भेजे गए पैकेट में, सिर्फ़ प्रॉक्सी सबनेट का सोर्स आईपी पता होता है. |
इंटरनेट NEG | यह एक ऐसा रिसॉर्स है जिसका इस्तेमाल, लोड बैलेंसर के लिए बाहरी बैकएंड तय करने के लिए किया जाता है. एंडपॉइंट को सिर्फ़ Cloud वीपीएन या Cloud इंटरकनेक्ट से ऐक्सेस नहीं किया जा सकता. |
बैकएंड सेवा | बैकएंड सेवा, आपके लोड बैलेंसर और बैकएंड संसाधनों के बीच ब्रिज के तौर पर काम करती है. ट्यूटोरियल में, बैकएंड सेवा को इंटरनेट एनईजी से जोड़ा गया है. |
क्लाउड राऊटर | Cloud NAT, कंट्रोल प्लेन की सुविधाओं के लिए Cloud Routers पर निर्भर करता है, लेकिन BGP सेशन मैनेजमेंट के लिए नहीं. |
Cloud NAT | रीजनल इंटरनेट एनईजी, इंटरनेट एक्सग्रेस के लिए Cloud NAT का इस्तेमाल करता है. |
4. कोडलैब की टोपोलॉजी
5. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, अपने-आप एक यूनीक स्ट्रिंग जनरेट करता है. आम तौर पर, आपको यह जानने की ज़रूरत नहीं होती कि यह स्ट्रिंग क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_ID
के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं आता है, तो कोई दूसरा आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास खुद का कोई दूसरा नाम चुनने का विकल्प भी है. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट के दौरान बना रहता है. - आपकी जानकारी के लिए बता दें कि तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने के लिए, आपसे कोई शुल्क नहीं लिया जाएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है या प्रोजेक्ट को मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.
Cloud Shell शुरू करना
Google Cloud को आपके लैपटॉप से रिमोट तौर पर इस्तेमाल किया जा सकता है. हालांकि, इस कोडलैब में आपको Google Cloud Shell का इस्तेमाल करना होगा. यह Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.
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 नेटवर्क
ट्यूटोरियल की ज़रूरी शर्त है कि आपके पास मौजूदा PSA Looker इंस्टेंस हो. इसलिए, उससे जुड़ा VPC पहले से बना हुआ होना चाहिए.
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 में, क्लाउड राउटर बनाएं:
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 के लिए डीएनएस A रिकॉर्ड के तौर पर किया जाएगा:
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-internet-neg को github.com और पोर्ट 443 के रिज़ॉल्व किए गए आईपी पते से अपडेट करें:
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
दूसरा विकल्प: एफ़क्यूडीएन का इस्तेमाल करके इंटरनेट एनईजी सेट अप करना
इसके अलावा, इंटरनेट एनईजी बनाया जा सकता है और –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-internet-neg को FQDN github.com से अपडेट करें:
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 के लिए डीएनएस रिस्पॉन्स पॉलिसी बनानी होगी. इसमें इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर आईपी पते वाले A रिकॉर्ड का इस्तेमाल किया जाएगा.
इसके बाद, डीएनएस पीयरिंग, github.com ज़ोन को Looker PSA के साथ शेयर करेगी. इससे, इंटरनेट एनईजी और क्लाउड एनएटी के साथ इंटरनल लोड बैलेंसर की मदद से, GitHub से कनेक्ट किया जा सकेगा.
Cloud Shell में, रिस्पॉन्स पॉलिसी ज़ोन बनाएं:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
Cloud Shell में, टीसीपी प्रॉक्सी लोड बैलेंसर आईपी पते [insert-your-ip-address] वाला डीएनएस A रिकॉर्ड बनाएं:
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" का इस्तेमाल करना होगा. यह सिंटैक्स, निजी सेवा कनेक्शन के लिए पीयर किया गया डीएनएस डोमेन बनाता है. यह डोमेन, किसी नेमस्पेस में रिकॉर्ड के लिए अनुरोध भेजता है. ये अनुरोध, सेवा देने वाले VPC नेटवर्क से शुरू होकर, सेवा लेने वाले VPC नेटवर्क पर भेजे जाते हैं, ताकि उन्हें हल किया जा सके.
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 ऐक्शन चुनना
'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 को लगता है कि कोडलैब शानदार हैं!!