۱. مقدمه
فقط نمونههای Looker (هسته Google Cloud) که از دسترسی به سرویسهای خصوصی برای اتصال خصوصی خود استفاده میکنند، از پیکربندی IP خصوصی و IP عمومی پشتیبانی میکنند.
یک نمونه Looker (هسته گوگل کلود) که هم اتصال IP خصوصی (دسترسی به سرویسهای خصوصی) و هم اتصال IP عمومی دارد، دارای یک URL عمومی است و تمام ترافیک ورودی از طریق اتصال IP عمومی عبور میکند. ترافیک خروجی از طریق VPC شما مسیریابی میشود که میتواند پیکربندی شود تا فقط ترافیک IP خصوصی را مجاز کند، همانطور که در شکل 1 نشان داده شده است.
شکل ۱

ارتباط با github.com به یک آدرس IP عمومی منتقل میشود، بنابراین از یک نمونه Looker که به صورت خصوصی یا عمومی+خصوصی مستقر شده است، قابل دسترسی نیست.
در این آزمایشگاه کد، شما یک اتصال HTTPS به سمت جنوب به GitHub را با استفاده از یک متعادلکننده بار پروکسی TCP داخلی و گروه نقطه پایانی شبکه اینترنت (NEG) که از Looker PSA فراخوانی میشود، برقرار خواهید کرد.
آنچه یاد خواهید گرفت
- الزامات شبکه
- با استفاده از یک اتصال آزمایشی، اتصال به گیتهاب را از Looker برقرار کنید
آنچه نیاز دارید
- پروژه گوگل کلود با مجوزهای مالک
- حساب کاربری و مخزن گیتهاب
- توکن دسترسی شخصی گیتهاب (کلاسیک)
- نمونه PSA Looker موجود با حالت عمومی + خصوصی یا فقط خصوصی فعال

۲. آنچه خواهید ساخت
شما یک متعادلکننده بار پروکسی TCP داخلی و Internet NEG پیکربندی شده با آدرس IP تعیینشدهی github.com را مستقر خواهید کرد که از Cloud NAT برای خروج اینترنت به سازمانهای github.com تعیینشده توسط Looker استفاده میکند.
۳. الزامات شبکه
در زیر جزئیات الزامات شبکه آمده است:
قطعات | توضیحات |
ویپیسی (شبکه_vpc$) | حالت سفارشی VPC |
زیرشبکه قانون ارسال | برای اختصاص آدرس IP به متعادلکننده بار پروکسی TCP داخلی منطقهای استفاده میشود. |
زیرشبکه فقط پروکسی | به هر یک از پروکسیهای متعادلکننده بار، یک آدرس IP داخلی اختصاص داده میشود. بستههایی که از یک پروکسی به یک ماشین مجازی backend یا نقطه پایانی ارسال میشوند، دارای یک آدرس IP منبع از زیرشبکه فقط پروکسی هستند. |
اینترنت منفی | منبعی که برای تعریف یک backend خارجی برای load balancer استفاده میشود. نقطه پایانی نمیتواند فقط از طریق Cloud VPN یا Cloud Interconnect قابل دسترسی باشد. |
خدمات بکاند | یک سرویس backend به عنوان پلی بین متعادل کننده بار و منابع backend شما عمل میکند. در این آموزش، سرویس backend با NEG اینترنت مرتبط است. |
روتر ابری | Cloud NAT برای قابلیتهای صفحه کنترل به روترهای ابری متکی است، اما برای مدیریت نشست BGP به آن متکی نیست. |
NAT ابری | اینترنت منطقهای NEG از Cloud NAT برای خروجی اینترنت استفاده میکند. |
۴. توپولوژی Codelab

۵. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود. شما همیشه میتوانید آن را بهروزرسانی کنید.
- شناسه پروژه در تمام پروژههای گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاههای کد، باید شناسه پروژه خود را (که معمولاً با عنوان
PROJECT_IDشناخته میشود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، میتوانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، میتوانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی میماند. - برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده میکنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینهای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، میتوانید منابعی را که ایجاد کردهاید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی با تمام ابزارهای توسعهای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه کد را میتوان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.
۶. قبل از شروع
فعال کردن APIها
در داخل 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
۷. اجزای شبکه 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 توسط متعادلکننده بار پروکسی tcp داخلی منطقهای برای خروجی اینترنت با گزینه پیکربندی –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB استفاده میشود، بنابراین همان NATGW از خروجی اینترنت GCE/GKE پشتیبانی نمیکند. یک NAT GW اضافی با –endpoint-types=ENDPOINT_TYPE_VM برای خروجی اینترنت GCE/GKE مستقر کنید.
درون Cloud Shell، روتر ابری را ایجاد کنید:
gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region
درون Cloud Shell، دروازه Cloud NAT را ایجاد کنید که امکان خروج اینترنت را برای متعادلکننده بار پروکسی tcp فراهم میکند:
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
آدرس IP متعادلکننده بار را رزرو کنید
درون Cloud Shell، یک آدرس IP داخلی برای متعادلکننده بار رزرو کنید که بعداً به عنوان رکورد DNS A برای github.com استفاده خواهد شد:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=psa-fr-subnet
درون Cloud Shell، آدرس IP رزرو شده را مشاهده کنید:
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
۸. اینترنت منفی
دو راه برای پیکربندی نقطه پایانی خارجی که توسط Internet NEG ارجاع داده میشود وجود دارد: INTERNET_FQDN_PORT یا INTERNET_IP_PORT. اگر فرمت INTERNET_IP_PORT (گزینه ۱) انتخاب شود، فقط میتوان از یک آدرس IP عمومی قابل مسیریابی اینترنتی استفاده کرد؛ اگر فرمت INTERNET_FQDN_PORT (گزینه ۲) انتخاب شود، FQDN میتواند بسته به محدوده نقطه پایانی: منطقهای یا جهانی، به یک آدرس IP عمومی قابل مسیریابی اینترنتی یا به یک آدرس IP خصوصی تبدیل شود.
گزینه ۱: راهاندازی NEG اینترنت با استفاده از آدرس IP
NEG اینترنت به آدرس IP مشخص شدهی Github.com نیاز دارد، بنابراین برای بهترین عملکرد، یک ترمینال محلی باز کنید و یک جستجو انجام دهید و آدرس IP github.com را بدست آورید.
مثالی از یک ترمینال محلی، آدرس IP حلشدهی ۱۴۰.۸۲.۱۱۳.۴ را تولید میکند.
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
یک Internet NEG ایجاد کنید و –network-endpoint-type را روی internet_ip_port تنظیم کنید.
درون Cloud Shell، یک Internet NEG ایجاد کنید که برای github.com استفاده میشود:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_IP_PORT \
--network=$vpc_network \
--region=$region
درون Cloud Shell، فایل Internet NEG از github-internet-neg را با آدرس IP تعیینشدهی github.com و پورت ۴۴۳ بهروزرسانی کنید:
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
گزینه ۲: راهاندازی NEG اینترنت با استفاده از FQDN
به صورت اختیاری، میتوانید یک Internet NEG ایجاد کنید و –network-endpoint-type را روی internet_FQDN_port تنظیم کنید.
درون Cloud Shell، یک Internet NEG ایجاد کنید که برای github.com استفاده میشود:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=$vpc_network \
--region=$region
درون Cloud Shell، Internet NEG github-internet-neg را با FQDN github.com بهروزرسانی کنید:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="fqdn=github.com,port=443" \
--region=$region
۹. ایجاد سرویس گیتهاب
ایجاد کامپوننتهای متعادلکننده بار
درون 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، یک پروکسی TCP هدف ایجاد کنید تا درخواستها را به سرویس backend خود هدایت کنید:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=psa-backend-svc \
--region=$region
در سینتکس زیر، یک قانون ارسال (متعادلکننده بار پروکسی داخلی tcp) ایجاد کنید.
در 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
۱۰. منطقه DNS گیتهاب
در بخش بعدی، شما یک سیاست پاسخ DNS برای GitHub.com با یک رکورد A متشکل از آدرس IP داخلی متعادلکننده بار پروکسی tcp ایجاد خواهید کرد.
پس از آن، DNS peering منطقه github.com را با Looker PSA به اشتراک میگذارد و امکان اتصال به github را از طریق متعادلکننده بار داخلی در ترکیب با Internet NEG و Cloud NAT فراهم میکند.
در Cloud Shell، منطقه سیاست پاسخ را ایجاد کنید:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
در Cloud Shell، یک رکورد DNS A شامل آدرس IP متعادلکننده بار پروکسی tcp، [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"

بهروزرسانی جفتسازی DNS
در این بخش، از سینتکس «gcloud services peered-dns-domains create» استفاده خواهید کرد که یک دامنه DNS همتا برای یک اتصال سرویس خصوصی ایجاد میکند که درخواستهایی را برای رکوردها در یک فضای نام مشخص که از شبکه VPC تولیدکننده سرویس سرچشمه میگیرد، به شبکه VPC مصرفکننده ارسال میکند تا حل و فصل شوند.
در Cloud Shell، یک peered-dns-domain ایجاد کنید که جستجوگر برای github.com جستجو کند:
gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.
۱۱. اتصال به گیتهاب را آزمایش کنید
در مراحل بعدی، از کنسول Looker برای ایجاد پروژهای جهت اعتبارسنجی اتصال HTTPS به github.com استفاده خواهید کرد.
۱۲. ایجاد یک پروژه جدید
فعال کردن حالت توسعه
در کنسول Looker، به مسیر زیر بروید:
حالت توسعه را فعال کنید (پایین صفحه سمت چپ)، پس از انتخاب، بنر «شما در حالت توسعه هستید» نمایش داده میشود.

ایجاد یک پروژه جدید
در کنسول ابری، به مسیر زیر بروید:
توسعه → پروژهها

پروژه جدید LookML را انتخاب کنید

یک نام برای پروژه وارد کنید، گزینه Blank Project و سپس Create Project را انتخاب کنید.

پیکربندی گیت را انتخاب کنید

پیکربندی گیت
آدرس مخزن (Repository URL) را با جزئیات HTTPS github خود بهروزرسانی کنید، مطمئن شوید که آدرس را با .git اضافه میکنید و سپس ادامه (Continue) را انتخاب کنید.

مثال:

انتخاب را با نام کاربری GitHub و توکن دسترسی شخصی (کلاسیک) خود بهروزرسانی کنید، سپس گزینه Test and Finalize Setup را انتخاب کنید.

انتخاب اقدامات گیت

اتصال Git را امتحان کنید.

اعتبارسنجی تست اتصال Git

۱۳. تمیز کردن
از یک ترمینال 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
۱۴. تبریک
تبریک میگوییم، شما با موفقیت اتصال به GitHub را با استفاده از Looker Console پیکربندی و تأیید کردید.
کازموپاپ فکر میکند که کدلبها فوقالعاده هستند!!
