Looker PSA Southbound HTTPS Internet NEG

۱. مقدمه

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

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

شکل ۱

9f587c14791dd92e.png

ارتباط با github.com به یک آدرس IP عمومی منتقل می‌شود، بنابراین از یک نمونه Looker که به صورت خصوصی یا عمومی+خصوصی مستقر شده است، قابل دسترسی نیست.

در این آزمایشگاه کد، شما یک اتصال HTTPS به سمت جنوب به GitHub را با استفاده از یک متعادل‌کننده بار پروکسی TCP داخلی و گروه نقطه پایانی شبکه اینترنت (NEG) که از Looker PSA فراخوانی می‌شود، برقرار خواهید کرد.

آنچه یاد خواهید گرفت

  • الزامات شبکه
  • با استفاده از یک اتصال آزمایشی، اتصال به گیت‌هاب را از Looker برقرار کنید

آنچه نیاز دارید

5348de53f0a78a50.png

۲. آنچه خواهید ساخت

شما یک متعادل‌کننده بار پروکسی 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

c5871e5418d37f13.png

۵. تنظیمات و الزامات

تنظیم محیط خودتنظیم

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه کد را می‌توان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.

۶. قبل از شروع

فعال کردن 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"

7b41b2f44609e5ed.png

به‌روزرسانی جفت‌سازی 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، به مسیر زیر بروید:

حالت توسعه را فعال کنید (پایین صفحه سمت چپ)، پس از انتخاب، بنر «شما در حالت توسعه هستید» نمایش داده می‌شود.

70c9ded749decfbe.png

ایجاد یک پروژه جدید

در کنسول ابری، به مسیر زیر بروید:

توسعه → پروژه‌ها

e8ae11e0392a776d.png

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

65a3c2573e97e1e9.png

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

۹۱۸۵۸۰۸e۰۰۱fa۵۴۰.png

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

42f5e51ce70642ad.png

پیکربندی گیت

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

f5c448f6659b8f1.png

مثال:

4065ab1d196589f.png

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

1dc44d63c555a9ae.png

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

b5903668a50a99ca.png

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

51b722e84f2df38c.png

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

8fb7386b739f60be.png

۱۳. تمیز کردن

از یک ترمینال 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 پیکربندی و تأیید کردید.

کازموپاپ فکر می‌کند که کدلب‌ها فوق‌العاده هستند!!

c911c127bffdee57.jpeg

بعدش چی؟

مطالعه بیشتر و ویدیوها

اسناد مرجع