۱. مقدمه
در این آزمایشگاه کد، شما یک اتصال HTTPS به سمت جنوب به GitHub را با استفاده از یک متعادلکننده بار پروکسی TCP داخلی و گروه نقطه پایانی شبکه اینترنت (NEG) که از Looker PSC به عنوان یک مصرفکننده سرویس فراخوانی میشود، برقرار خواهید کرد.
سرویس خصوصی اتصال (Private Service Connect) قابلیتی از شبکه گوگل کلود (Google Cloud) است که به مصرفکنندگان اجازه میدهد تا به صورت خصوصی از داخل شبکه VPC خود به سرویسهای مدیریتشده دسترسی داشته باشند. به طور مشابه، به تولیدکنندگان سرویس مدیریتشده نیز اجازه میدهد تا این سرویسها را در شبکههای VPC جداگانه خود میزبانی کنند و یک اتصال خصوصی به مصرفکنندگان خود ارائه دهند. به عنوان مثال، وقتی از سرویس خصوصی اتصال برای دسترسی به Looker استفاده میکنید، شما مصرفکننده سرویس هستید و گوگل، همانطور که در شکل 1 برجسته شده است، تولیدکننده سرویس است.
شکل ۱.

دسترسی به سمت جنوب، که با نام PSC معکوس نیز شناخته میشود، به مصرفکننده این امکان را میدهد که به عنوان تولیدکننده، یک سرویس منتشر شده ایجاد کند تا به Looker اجازه دسترسی به نقاط انتهایی در محل، در یک VPC، به سرویسهای مدیریت شده و اینترنت را بدهد. اتصالات به سمت جنوب میتوانند در هر منطقهای، صرف نظر از محل استقرار Looker PSC، مستقر شوند، همانطور که در شکل 2 برجسته شده است.
شکل ۲.

آنچه یاد خواهید گرفت
- الزامات شبکه
- ایجاد یک سرویس تولیدکننده Private Service Connect
- ایجاد یک نقطه پایانی اتصال سرویس خصوصی در Looker
- با استفاده از یک اتصال آزمایشی، اتصال به گیتهاب را از Looker برقرار کنید
آنچه نیاز دارید
- پروژه گوگل کلود با مجوزهای مالک
- حساب کاربری و مخزن گیتهاب
- توکن دسترسی شخصی گیتهاب (کلاسیک)
- نمونه PSC Looker موجود

۲. آنچه خواهید ساخت
شما یک شبکه تولیدکننده، looker-psc-demo، برای استقرار متعادلکننده بار پروکسی TCP داخلی و NEG اینترنتی منتشر شده به عنوان یک سرویس از طریق Private Service Connect (PSC) ایجاد خواهید کرد. پس از انتشار، اقدامات زیر را برای اعتبارسنجی دسترسی به سرویس تولیدکننده انجام خواهید داد:
- یک نقطه پایانی PSC در Looker مرتبط با پیوست سرویس تولیدکننده ایجاد کنید
- از کنسول Looker برای ایجاد یک پروژه جدید و آزمایش اتصال HTTPS به GitHub.com استفاده کنید.
۳. الزامات شبکه
در زیر جزئیات الزامات شبکه برای شبکه تولیدکننده آمده است، مصرفکننده در این آزمایشگاه کد، نمونه Looker PSC است.
قطعات | توضیحات |
VPC (مشاهدهگر-psc-دمو) | حالت سفارشی VPC |
زیرشبکه PSC NAT | بستههای شبکه VPC مصرفکننده با استفاده از NAT مبدا (SNAT) ترجمه میشوند، به طوری که آدرسهای IP مبدا اصلی آنها به آدرسهای IP مبدا از زیرشبکه NAT در شبکه VPC تولیدکننده تبدیل میشوند. |
زیرشبکه قانون ارسال PSC | برای اختصاص آدرس IP به متعادلکننده بار پروکسی TCP داخلی منطقهای استفاده میشود. |
زیرشبکه PSC NEG | برای اختصاص آدرس IP به گروه نقاط پایانی شبکه استفاده میشود. |
زیرشبکه فقط پروکسی | به هر یک از پروکسیهای متعادلکننده بار، یک آدرس 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]
echo $project
echo $region
فعال کردن تمام سرویسهای لازم:
gcloud services enable compute.googleapis.com
۷. ایجاد شبکه VPC تولیدکننده
شبکه VPC
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create looker-psc-demo --subnet-mode custom
ایجاد زیرشبکهها
زیرشبکه PSC به منظور ترجمه آدرس شبکه با پیوست سرویس PSC مرتبط خواهد شد.
درون Cloud Shell، زیرشبکه PSC NAT را ایجاد کنید:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
درون Cloud Shell، زیرشبکهی قانون ارسال تولیدکننده را ایجاد کنید:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
درون Cloud Shell، زیرشبکه فقط پروکسی منطقهای تولیدکننده را ایجاد کنید:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--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 looker-psc-demo-cloud-router --network looker-psc-demo --region $region
درون Cloud Shell، دروازه Cloud NAT را ایجاد کنید که امکان خروج اینترنت را برای متعادلکننده بار پروکسی tcp فراهم میکند:
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
آدرس IP متعادلکننده بار را رزرو کنید
در داخل Cloud Shell، یک آدرس IP داخلی برای متعادلکننده بار رزرو کنید:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-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
اینترنت NEG را تنظیم کنید
یک NEG اینترنتی ایجاد کنید و –network-endpoint-type را روی internet-fqdn-port (نام میزبان و پورتی که از طریق آن میتوان به backend خارجی خود دسترسی پیدا کرد) تنظیم کنید.
درون Cloud Shell، یک Internet NEG ایجاد کنید که برای github.com استفاده میشود.
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--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 network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
قانون فایروال زیر اجازه میدهد ترافیک از محدوده PSC NAT Subnet به تمام نمونههای شبکه ارسال شود.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
۸. ایجاد سرویس تولیدکننده
ایجاد اجزای متعادلکننده بار
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-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=producer-backend-svc \
--region=$region
در سینتکس زیر، یک قانون ارسال (متعادلکننده بار پروکسی داخلی tcp) ایجاد کنید.
در Cloud Shell، موارد زیر را انجام دهید:
gcloud compute forwarding-rules create producer-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
ایجاد پیوست سرویس
درون Cloud Shell، ضمیمه سرویس، github-svc-attachment-https را ایجاد کنید:
gcloud compute service-attachments create github-svc-attachment-https --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
در مرحله بعد، پیوست سرویس ذکر شده در selfLink URI را که با پروژههای پیکربندی نقطه پایانی PSC در Looker شروع میشود، دریافت و یادداشت کنید.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-https
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute service-attachments describe github-svc-attachment-https --region=$region
مثال:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-30T09:44:03.883-07:00'
description: ''
enableProxyProtocol: false
fingerprint: RfKh3blWZE0=
id: '2897904404386302012'
kind: compute#serviceAttachment
name: github-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2897904404386302012'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr
در کنسول ابری، به مسیر زیر بروید:
سرویسهای شبکه → اتصال سرویس خصوصی → سرویسهای منتشر شده


۹. ایجاد یک اتصال نقطه پایانی PSC در Looker
در بخش بعدی، شما از طریق استفاده از پرچمهای –psc-service-attachment در Cloud Shell برای یک دامنه واحد، پیوست سرویس تولیدکنندگان را با Looker Core PSC مرتبط خواهید کرد.
درون Cloud Shell، با بهروزرسانی پارامترهای زیر برای مطابقت با محیط خود، ارتباط psc را ایجاد کنید:
- INSTANCE_NAME: نام نمونه Looker (هسته Google Cloud) شما.
- دامنه_۱: github.com
- SERVICE_ATTACHMENT_1: آدرس اینترنتی (URI) هنگام توصیف پیوست سرویس، github-svc-attachment-https، ثبت شده است.
- منطقه: منطقهای که نمونه Looker (هسته گوگل کلود) شما در آن میزبانی میشود.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
مثال:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=github.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https \
--region=$region
درون Cloud Shell، اعتبارسنجی کنید که وضعیت اتصال پیوستهای سرویس «پذیرفتهشده» باشد و با استفاده از INSTANCE_NAME PSC Looker خود بهروزرسانی کنید.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
مثال:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
مثال:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.12.28",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "github.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-30T17:47:33.440271635Z"
}
اعتبارسنجی نقطه پایانی PSC در Cloud Console
از طریق کنسول ابری میتوانید اتصال PSC را تأیید کنید
در کنسول ابری، به مسیر زیر بروید:
مشاهدهگر → نمونه مشاهدهگر → جزئیات


۱۰. اتصال به گیتهاب را آزمایش کنید
در مراحل بعدی، از کنسول 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 service-attachments delete github-svc-attachment-https --region=$region -q
gcloud compute forwarding-rules delete producer-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-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 producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
۱۲. تبریک
تبریک میگوییم، شما با موفقیت اتصال به GitHub را با استفاده از Looker Console که توسط Private Service Connect پشتیبانی میشود، پیکربندی و تأیید کردید.
شما زیرساخت تولیدکننده را ایجاد کردید، یاد گرفتید که چگونه یک Internet NEG، سرویس تولیدکننده و نقطه پایانی Looker PSC ایجاد کنید که امکان اتصال به سرویس تولیدکننده را فراهم میکند.
کازموپاپ فکر میکند که کدلبها فوقالعاده هستند!!

بعدش چی؟
به برخی از این آزمایشگاههای کد نگاهی بیندازید...
- استفاده از Private Service Connect برای انتشار و مصرف سرویسها
- با استفاده از Private Service Connect و یک متعادلکننده بار داخلی TCP Proxy، از طریق شبکه ترکیبی به سرویسهای On-Premium متصل شوید.
- دسترسی به تمام آزمایشگاههای کد منتشر شدهی Private Service Connect