Looker PSA Southbound HTTPS Internet NEG

درباره این codelab
schedule۳۸ دقیقه
subjectآخرین به‌روزرسانی: ۱۳ فروردین ۱۴۰۴
account_circleنویسنده: Deepak Michael, Emanuele Mazza

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

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

شکل 1

9f587c14791dd92e.png

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

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

چیزی که یاد خواهید گرفت

  • الزامات شبکه
  • اتصال به GitHub را از Looker با استفاده از یک Test Connection برقرار کنید

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

5348de53f0a78a50.png

2. آنچه می سازید

شما یک متعادل کننده بار پراکسی tcp داخلی و NEG اینترنت پیکربندی شده با آدرس IP حل‌شده github.com که از Cloud NAT برای خروج اینترنت به سازمان‌های github.com که توسط Looker حل شده است، استفاده می‌کنید.

3. الزامات شبکه

در زیر تجزیه و تحلیل نیازمندی های شبکه آورده شده است:

اجزاء

توضیحات

VPC ($vpc_network)

حالت سفارشی VPC

زیرشبکه قانون حمل و نقل

برای تخصیص یک آدرس IP برای متعادل کننده بار پراکسی TCP داخلی منطقه ای استفاده می شود

زیر شبکه فقط پروکسی

به هر یک از پراکسی های load balancer یک آدرس IP داخلی اختصاص داده شده است. بسته های ارسال شده از یک پروکسی به یک ماشین مجازی پشتیبان یا نقطه پایانی دارای یک آدرس IP منبع از زیر شبکه فقط پراکسی هستند.

اینترنت NEG

منبعی که برای تعریف باطن خارجی برای متعادل کننده بار استفاده می شود. نقطه پایانی فقط از طریق Cloud VPN یا Cloud Interconnect قابل دسترسی نیست.

خدمات Backend

یک سرویس پشتیبان به عنوان پلی بین متعادل کننده بار و منابع باطن شما عمل می کند. در آموزش، سرویس Backend با اینترنت NEG مرتبط است.

روتر ابری

Cloud NAT برای قابلیت های صفحه کنترل به Cloud Routers متکی است، اما برای مدیریت جلسه BGP نه.

Cloud NAT

اینترنت منطقه ای NEG از Cloud NAT برای خروج اینترنت استفاده می کند.

4. توپولوژی Codelab

c5871e5418d37f13.png

5. راه اندازی و الزامات

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

6. قبل از شروع

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

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 توسط متعادل کننده بار پراکسی داخلی tcp داخلی برای خروج اینترنت با گزینه پیکربندی، –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB استفاده می شود، بنابراین همان NATGW از خروج اینترنت GCE/GKE پشتیبانی نمی کند. یک NAT GW اضافی با –endpoint-types=ENDPOINT_TYPE_VM برای خروج از اینترنت GCE/GKE مستقر کنید.

در داخل Cloud Shell، Cloud Router را ایجاد کنید:

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

8. اینترنت NEG

دو راه برای پیکربندی نقطه پایانی خارجی ارجاع شده توسط اینترنت NEG وجود دارد: INTERNET_FQDN_PORT یا INTERNET_IP_PORT. اگر قالب INTERNET_IP_PORT (گزینه 1) انتخاب شده باشد، فقط می توان از آدرس IP عمومی قابل مسیریابی اینترنت استفاده کرد. اگر فرمت INTERNET_FQDN_PORT (گزینه 2) انتخاب شود، FQDN را می توان به یک آدرس IP قابل مسیریابی اینترنتی عمومی یا به یک آدرس IP خصوصی بسته به محدوده نقطه پایانی: منطقه ای یا جهانی، حل کرد.

گزینه 1: اینترنت NEG را با استفاده از آدرس IP راه اندازی کنید

اینترنت NEG به آدرس IP حل شده Github.com نیاز دارد، بنابراین برای بهترین عملکرد یک ترمینال محلی باز کنید و حفاری انجام دهید و آدرس IP github.com را بدست آورید.

نمونه ای از یک ترمینال محلی آدرس IP حل شده 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

یک Internet NEG ایجاد کنید و –network-endpoint-type را روی internet_ip_port قرار دهید.

در داخل Cloud Shell، یک اینترنت 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، اینترنت NEG github-internet-neg را با آدرس IP حل‌شده 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

گزینه 2: راه اندازی اینترنت NEG با استفاده از FQDN

به صورت اختیاری، می‌توانید یک اینترنت NEG ایجاد کنید و –network-endpoint-type را روی internet_FQDN_port تنظیم کنید.

در داخل Cloud Shell، یک اینترنت 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، اینترنت 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

9. سرویس Github را ایجاد کنید

اجزای Load Balancer را ایجاد کنید

در داخل 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 هدف ایجاد کنید تا درخواست‌ها را به سرویس باطن خود هدایت کند:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=psa-backend-svc  \
      --region=$region

در دستور زیر، یک قانون فوروارد (internal tcp proxy load balancer) ایجاد کنید.

در 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 DNS Zone

در بخش زیر، یک خط مشی پاسخ DNS برای GitHub.com با یک رکورد A متشکل از آدرس IP داخلی متعادل کننده بار پروکسی tcp ایجاد خواهید کرد.

پس از آن، همتاسازی DNS منطقه github.com را با Looker PSA به اشتراک می گذارد و امکان اتصال به github را از طریق متعادل کننده بار داخلی در ترکیب با اینترنت NEG و Cloud NAT فراهم می کند.

در Cloud Shell، ناحیه سیاست پاسخ را ایجاد کنید:

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

در Cloud Shell، یک رکورد DNS متشکل از آدرس 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.

11. تست اتصال به GitHub

در مراحل زیر، از Looker Console برای ایجاد پروژه ای برای اعتبارسنجی اتصال HTTPS به github.com استفاده خواهید کرد.

12. یک پروژه جدید ایجاد کنید

حالت توسعه را فعال کنید

در Looker Console به مسیر زیر بروید:

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

70c9ded749decfbe.png

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

در Cloud Console به مسیر زیر بروید:

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

e8ae11e0392a776d.png

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

65a3c2573e97e1e9.png

نام پروژه را وارد کنید، پروژه خالی و سپس ایجاد پروژه را انتخاب کنید.

9185808e001fa540.png

Configure Git را انتخاب کنید

42f5e51ce70642ad.png

Git را پیکربندی کنید

URL مخزن را با جزئیات github HTTPS خود به روز کنید، اطمینان حاصل کنید که URL را با git. اضافه کرده و سپس Continue را انتخاب کنید.

f5c448f6659b8fc1.png

مثال:

4065ab1d196589f.png

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

1dc44d63c555a9ae.png

Git Actions را انتخاب کنید

b5903668a50a99ca.png

Test Git Connection را انتخاب کنید

51b722e84f2df38c.png

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

8fb7386b739f60be.png

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. تبریک می گویم

تبریک می‌گوییم، شما با موفقیت اتصال به GitHub را با استفاده از Looker Console پیکربندی و تأیید کردید.

Cosmopup فکر می کند که نرم افزارهای کدنویسی عالی هستند!!

c911c127bffdee57.jpeg

بعدش چی؟

ادامه مطلب و ویدیوها

اسناد مرجع