اتصال سرویس خصوصی - استفاده از پشتیبان‌های PSC برای دسترسی به سرویس تولیدکننده، اتصال سرویس خصوصی - استفاده از پشتیبان‌های PSC برای دسترسی به سرویس تولیدکننده، اتصال سرویس خصوصی - استفاده از پشتیبان‌های PSC برای دسترسی به سرویس تولیدکننده، اتصال سرویس خصوصی - استفاده از بک‌ندهای PSC برای دسترسی به یک تولیدکننده خدمات

1. مقدمه

Private Service Connect تولیدکنندگان خدمات را قادر می سازد تا خدمات را به صورت خصوصی از یک شبکه VPC به شبکه دیگر در معرض دید قرار دهند. مصرف کنندگان می توانند از طریق نقاط پایانی PSC یا PSC Backends به خدمات تولید کننده دسترسی داشته باشند.

تمرکز این کد لبه پشتیبان PSC است. پشتیبان‌های PSC همراه با متعادل‌کننده‌های بار پروکسی Google Cloud (اعم از برنامه یا شبکه) استفاده می‌شوند. استفاده از PSC Backends کنترل های جانبی مصرف کننده ریزتری را فراهم می کند مانند:

  • قابلیت مشاهده و ثبت عمیق تر
  • یکپارچه سازی زره ​​ابری
  • URL های سفارشی
  • مدیریت ترافیک پیشرفته
  • گواهی های سفارشی TLS

در این کد لبه، شما یاد خواهید گرفت که چگونه یک Backend Connect Service Private با Global External Application Load Balancer ایجاد کنید تا به طور خصوصی به یک سرویس تولید کننده در شبکه دیگری دسترسی داشته باشید.

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

  • یک PSC Backend مرتبط با Global External Application Load Balancer ایجاد و پیکربندی کنید
  • یک سرویس وب مدیریت شده آپاچی را پیکربندی کنید و آن را به عنوان یک سرویس PSC از طریق یک پیوست سرویس نمایش دهید
  • برای خاتمه دادن به SSL در تعادل بار برنامه داخلی و خارجی، گواهینامه های SSL ایجاد کنید
  • یک منطقه عمومی Cloud DNS برای دسترسی به سرویس PSC پیکربندی کنید

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

  • یک پروژه Google Cloud با مجوزهای مالک

2. محیط تست

محیطی که ایجاد خواهید کرد شامل یک Consumer VPC و Producer VPC خواهد بود. در Producer VPC، یک گروه نمونه مدیریت شده را از یک الگوی نمونه مستقر خواهید کرد که یک وب سرویس منبع باز آپاچی ایجاد می کند. شما همچنین یک test-vm را برای اطمینان از عملکرد محلی مناسب سرویس مستقر خواهید کرد. شما سرویس آپاچی را به عنوان یک سرویس PSC Producer از طریق یک ضمیمه سرویس در معرض نمایش قرار خواهید داد.

در Consumer VPC شما یک Global External Application Load Balancer را با یک سرویس PSC Backend که به سرویس Apache اشاره می کند، مستقر خواهید کرد. سپس یک منطقه DNS عمومی برای دسترسی به سرویس PSC در اینترنت عمومی راه اندازی می کنید.

31e7497bf3d9035c.png

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

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

  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 اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

4. قبل از شروع

API ها را فعال کنید

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=YOUR-PROJECT-NAME
export region=us-central1
echo $project
echo $region

تمام خدمات لازم را فعال کنید

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

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

شبکه VPC ایجاد کنید

از Cloud Shell

gcloud compute networks create producer-vpc --subnet-mode custom

ایجاد زیرشبکه

دو زیرشبکه با هدف عمومی در producer-vpc مستقر خواهند شد. سرویس زیرشبکه برای استقرار ماشین های مجازی وب سرویس آپاچی و همچنین قانون حمل و نقل بار متعادل کننده استفاده خواهد شد. تست مشتری-زیر شبکه در منطقه دیگری خواهد بود و برای استقرار یک VM برای آزمایش سرویس آپاچی با دسترسی جهانی استفاده می شود.

از Cloud Shell

gcloud compute networks subnets create service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

از Cloud Shell

gcloud compute networks subnets create test-client-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=us-east4

ما همچنین باید یک زیرشبکه فقط پراکسی را برای استفاده با متعادل کننده بار برنامه داخلی منطقه ای مستقر کنیم.

از Cloud Shell

gcloud compute networks subnets create central-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.101.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

هنگامی که یک سرویس PSC مستقر می شود، هر سرویس منحصر به فرد نیاز به یک زیر شبکه PSC NAT مربوطه دارد تا با پیوست سرویس مرتبط شود. این زیرشبکه باید بسته به تعداد نقاط پایانی متصل مورد انتظار، اندازه مناسبی داشته باشد.

از Cloud Shell

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.100.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

Cloud NAT را ایجاد کنید

یک Cloud NAT برای نصب بسته های مناسب برای خدمات تولید کننده ما مورد نیاز است.

از Cloud Shell

gcloud compute routers create central-cr \
    --network=producer-vpc \
    --region=$region

از Cloud Shell

gcloud compute routers nats create central-nat \
    --router=central-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

خط مشی و قوانین فایروال شبکه را ایجاد کنید

از Cloud Shell

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
  • به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.

از Cloud Shell

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

دو قانون فایروال اضافی برای اجازه دادن به ترافیک ورودی به باطن های متعادل کننده بار که فقط از زیرشبکه پروکسی متعادل کننده بار (2000) منبع می شوند، و همچنین قانونی برای اجازه دادن به بررسی سلامت متعادل کننده بار در نمونه های انتهایی (2001) مورد نیاز است.

از Cloud Shell

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow traffic from load balancer proxy subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.101.0/24 \
    --layer4-configs tcp:443 \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow load balancer health checks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:443 \
    --global-firewall-policy

6. وب سرویس آپاچی را ایجاد کنید

ما یک وب سرویس ساده آپاچی ایجاد می کنیم که "PSC Service" را نمایش می دهد.

الگوی نمونه ایجاد کنید

از Cloud Shell

gcloud compute instance-templates create apache-service-template \
    --network producer-vpc \
    --subnet service-subnet \
    --region $region \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "PSC Service" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

ایجاد بررسی سلامت برای MIG

از Cloud Shell

gcloud compute health-checks create https service-mig-healthcheck \
    --port=443 \
    --global

ایجاد گروه نمونه مدیریت شده

از Cloud Shell

gcloud compute instance-groups managed create psc-service-mig \
    --region $region \
    --size=2 \
    --template=apache-service-template \
    --health-check=service-mig-healthcheck

gcloud compute instance-groups managed set-named-ports psc-service-mig \
    --named-ports=https:443 \
    --region=$region

7. یک گواهی خود امضا شده ایجاد کنید

مرحله 1 از دستورالعمل‌های اینجا را برای ایجاد گواهی امضا شده خود تکمیل کنید. شما می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان بازگردید. نام مشترک شما باید با EXAMPLE.COM پیکربندی شود.

یک منبع گواهی برای مرتبط کردن با بار متعادل کننده خود ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام فایل خاص خود جایگزین کنید.

از Cloud Shell

gcloud compute ssl-certificates create producer-service-cert \
    --certificate=<your-producer-certfile.cert> \
    --private-key=<your-producer-keyfile.pem> \
    --region=$region

8. Internal Regional Application Load Balancer را ایجاد کنید

سپس اجزای بار متعادل کننده را برای سرویس ایجاد می کنیم. ما از Internal Regional Application Load Balancer استفاده می کنیم، اما شما می توانید از هر بار متعادل کننده داخلی Google Cloud استفاده کنید. مستندات متعادل کننده بار مناسب را برای جابجایی TLS دنبال کنید.

آدرس IP داخلی را ایجاد کنید که برای قانون حمل و نقل بار متعادل کننده شما استفاده می شود و IP را یادداشت کنید تا بعداً هنگام برقراری تماس آزمایشی با سرویس مورد استفاده قرار گیرد.

از Cloud Shell

gcloud compute addresses create apache-service-ip \
 --region=$region \
 --subnet=service-subnet

gcloud compute addresses describe apache-service-ip \
   --format="get(address)" \
   --region=$region

بررسی سلامت بار متعادل کننده را ایجاد کنید.

از Cloud Shell

gcloud compute health-checks create https lb-apache-service-hc \
    --region=$region \
    --port-name=https

سرویس Backend را ایجاد کنید.

از Cloud Shell

gcloud compute backend-services create apache-bes\
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTPS \
  --port-name=https \
  --health-checks=lb-apache-service-hc \
  --health-checks-region=$region \
  --region=$region


gcloud compute backend-services add-backend apache-bes \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-service-mig \
  --region=$region

نقشه URL را ایجاد کنید.

از Cloud Shell

gcloud compute url-maps create producer-url-map \
  --default-service=apache-bes \
  --region=$region

پراکسی های HTTPS هدف را ایجاد کنید.

از Cloud Shell

gcloud compute target-https-proxies create https-proxy \
  --url-map=producer-url-map \
  --region=$region \
  --ssl-certificates=producer-service-cert

قانون Forwarding را ایجاد کنید.

از Cloud Shell

gcloud compute forwarding-rules create apache-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=service-subnet \
  --address=apache-service-ip \
  --ports=443 \
  --region=$region \
  --target-https-proxy=https-proxy \
  --target-https-proxy-region=$region \
  --allow-global-access

9. یک تست VM ایجاد کنید و سرویس را به صورت محلی تست کنید

قبل از ایجاد پیوست سرویس، یک vm کلاینت آزمایشی در منطقه دیگری ایجاد می‌کنیم تا بررسی کنیم که متعادل‌کننده بار به درستی با Global Access و TLS پیکربندی شده است.

از Cloud Shell

gcloud compute instances create vm-client \
    --zone=us-east4-a \
    --subnet=test-client-subnet \
    --no-address

حدود یک دقیقه صبر کنید تا تدارک کامل شود و سپس SSH وارد نمونه شود.

از Cloud Shell

gcloud compute ssh \
    --zone "us-east4-a" "vm-client" \
    --tunnel-through-iap \
    --project $project

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

curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443

نتیجه مورد انتظار

PSC Service

از VM خارج شوید.

از vm-client

exit

10. پیوست سرویس را ایجاد کنید

برای این مثال، ما پیوست سرویس خود را طوری پیکربندی می‌کنیم که فقط به اتصالات PSC از این پروژه اجازه دهد. این می تواند برای پذیرش یک یا چند پروژه یا شبکه خاص پیکربندی شود، اما نه هر دو. ما حداکثر محدودیت اتصال خود را بر روی 5 اتصال تنظیم کرده ایم. هر پروژه یا شبکه باید دارای یک محدودیت باشد.

از Cloud Shell

gcloud compute service-attachments create apache-service-attachment \
    --region=$region \
    --producer-forwarding-rule=apache-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$project=5 \
    --nat-subnets=psc-nat-subnet

شما باید URI پیوست سرویس ( selfLink ) را یادداشت کنید زیرا در مرحله بعدی برای پیکربندی PSC Backend به آن نیاز خواهید داشت. با اجرای موارد زیر در Cloud Shell می توانید آن را به دست آورید.

از Cloud Shell

gcloud compute service-attachments describe apache-service-attachment \
    --region $region

URI را با شروع از پروژه ها کپی کنید

مثال: projects/$project/regions/$region/serviceAttachments/apache-service-attachment

11. راه اندازی VPC مصرف کننده

شبکه VPC ایجاد کنید

از Cloud Shell

gcloud compute networks create consumer-vpc --subnet-mode custom

ایجاد زیر شبکه

یک زیر شبکه در سمت مصرف کننده مورد نیاز است که در آن گروه نقطه پایانی شبکه اتصال سرویس خصوصی (NEG) مستقر خواهد شد.

از Cloud Shell

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --region=$region \
    --range=10.0.0.0/28

12. رزرو IP خارجی و ایجاد گواهینامه خود امضا شده در سمت مصرف کننده

IP خارجی

آدرس IP ثابت خارجی را ایجاد کنید که بعداً برای قانون حمل و نقل متعادل کننده بار ما استفاده می شود و آدرس IP را در متغیر Cloud Shell ضبط کنید.

از Cloud Shell

gcloud compute addresses create external-psc-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

export externalip=$(gcloud compute addresses describe external-psc-ip \
    --format="get(address)" \
    --global)

echo $externalip

گواهی امضا شده توسط مصرف کننده

برای بار دوم، مرحله 1 از دستورالعمل‌ها را در اینجا تکمیل کنید تا یک گواهی خود امضا شده ایجاد کنید. شما می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان بازگردید. ما به جای مالکیت منطقه DNS عمومی خود، از یک سرویس DNS عمومی متن باز به نام nip.io استفاده خواهیم کرد. URL عمومی سرویس PSC شما از آدرس IP خارجی که به تازگی پیکربندی کرده اید استفاده می کند. نام مشترک شما باید با <YOUR-EXTERNAL-IP.nip.io> پیکربندی شود

یک منبع گواهی برای ارتباط با متعادل کننده بار خارجی خود ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام فایل خاص خود جایگزین کنید.

از Cloud Shell

gcloud compute ssl-certificates create consumer-service-cert \
    --certificate=<your-consumer-certfile.cert> \
    --private-key=<your-consumer-keyfile.pem> \
    --global

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

ما یک متعادل کننده بار برنامه خارجی جهانی با یک PSC NEG ایجاد خواهیم کرد که به پیوست سرویس جدید ایجاد شده ما به عنوان یک سرویس Backend اشاره می کند.

URI پیوست سرویس را که در مرحله آخر ذکر کردیم را در اختیار داشته باشید. psc-target-service زیر را با URI خود جایگزین کنید.

از Cloud Shell

gcloud compute network-endpoint-groups create apache-psc-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \
--region=$region \
--network=consumer-vpc \
--subnet=consumer-subnet

سرویس Backend را ایجاد کنید.

از Cloud Shell

gcloud compute backend-services create apache-pscneg-bes \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global

gcloud compute backend-services add-backend apache-pscneg-bes \
    --network-endpoint-group=apache-psc-neg \
    --network-endpoint-group-region=$region \
    --global

نقشه URL را ایجاد کنید

از Cloud Shell

gcloud compute url-maps create consumer-url-map \
    --default-service=apache-pscneg-bes \
    --global

پراکسی های HTTPS هدف را ایجاد کنید.

از Cloud Shell

gcloud compute target-https-proxies create psc-https-proxy \
    --url-map=consumer-url-map \
    --ssl-certificates=consumer-service-cert

قانون Forwarding را ایجاد کنید

از Cloud Shell

gcloud compute forwarding-rules create external-fr \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=external-psc-ip \
  --global \
  --target-https-proxy=psc-https-proxy \
  --ports=443

14. Public DNS Zone را ایجاد کنید

از Cloud Shell

gcloud dns managed-zones create "psc-service" \
    --dns-name=$externalip.nip.io. \
    --description="public dns for psc service" \
    --visibility=public

از Cloud Shell

gcloud dns record-sets transaction start \
   --zone="psc-service"

gcloud dns record-sets transaction add $externalip \
   --name=$externalip.nip.io \
   --ttl=300 \
   --type=A \
   --zone="psc-service"

gcloud dns record-sets transaction execute \
   --zone="psc-service"

15. اتصال Consumer PSC را تست کنید

7 تا 10 دقیقه قبل از آزمایش صبر کنید تا DNS عمومی منتشر شود.

از Cloud Shell

curl https://$externalip.nip.io -k

همچنین می توانید با وارد کردن https://<YOUR-EXTERNAL-IP>.nip.io در مرورگر یا ترمینال دسکتاپ خود، از مرورگر خود تست کنید.

نتیجه مورد انتظار

PSC Service

16. مراحل پاکسازی

از یک ترمینال Cloud Shell، اجزای آزمایشگاه را حذف کنید

gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q

gcloud dns managed-zones delete "psc-service" -q

gcloud compute forwarding-rules delete external-fr --global -q 

gcloud compute target-https-proxies delete psc-https-proxy -q

gcloud compute url-maps delete consumer-url-map --global -q

gcloud compute backend-services delete apache-pscneg-bes --global -q

gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q

gcloud compute ssl-certificates delete consumer-service-cert --global -q

gcloud compute addresses delete external-psc-ip --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute instances delete vm-client --zone=us-east4-a -q

gcloud compute service-attachments delete apache-service-attachment --region $region -q

gcloud compute forwarding-rules delete apache-fr --region $region -q

gcloud compute target-https-proxies delete https-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete apache-bes --region $region -q

gcloud compute health-checks delete lb-apache-service-hc --region $region -q

gcloud compute addresses delete apache-service-ip --region $region -q

gcloud compute ssl-certificates delete producer-service-cert --region $region -q

gcloud compute instance-groups managed delete psc-service-mig --region $region -q

gcloud compute health-checks delete service-mig-healthcheck --global -q

gcloud compute instance-templates delete apache-service-template -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete central-nat --router=central-cr --region $region -q

gcloud compute routers delete central-cr --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete service-subnet --region $region -q

gcloud compute networks subnets delete test-client-subnet --region us-east4 -q 

gcloud compute networks subnets delete central-proxy-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

17. تبریک می گویم!

برای تکمیل کد لبه تبریک می گویم.

آنچه را پوشش داده ایم

  • یک پیکربندی یک PSC Backend مرتبط با Global External Application Load Balancer ایجاد کنید
  • یک سرویس وب مدیریت شده آپاچی را پیکربندی کنید و آن را به عنوان یک سرویس PSC از طریق یک پیوست سرویس نمایش دهید
  • برای خاتمه دادن به SSL در تعادل بار برنامه داخلی و خارجی، گواهینامه های SSL ایجاد کنید
  • یک منطقه عمومی Cloud DNS را برای دسترسی به سرویس PSC پیکربندی کنید
،

1. مقدمه

Private Service Connect تولیدکنندگان خدمات را قادر می سازد تا خدمات را به صورت خصوصی از یک شبکه VPC به شبکه دیگر در معرض دید قرار دهند. مصرف کنندگان می توانند از طریق نقاط پایانی PSC یا PSC Backends به خدمات تولید کننده دسترسی داشته باشند.

تمرکز این کد لبه پشتیبان PSC است. پشتیبان‌های PSC همراه با متعادل‌کننده‌های بار پروکسی Google Cloud (اعم از برنامه یا شبکه) استفاده می‌شوند. استفاده از PSC Backends کنترل های جانبی مصرف کننده ریزتری را فراهم می کند مانند:

  • قابلیت مشاهده و ثبت عمیق تر
  • یکپارچه سازی زره ​​ابری
  • URL های سفارشی
  • مدیریت ترافیک پیشرفته
  • گواهی های سفارشی TLS

در این کد لبه، شما یاد خواهید گرفت که چگونه یک Backend Connect Service Private با Global External Application Load Balancer ایجاد کنید تا به طور خصوصی به یک سرویس تولید کننده در شبکه دیگری دسترسی داشته باشید.

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

  • یک PSC Backend مرتبط با Global External Application Load Balancer ایجاد و پیکربندی کنید
  • یک سرویس وب مدیریت شده آپاچی را پیکربندی کنید و آن را به عنوان یک سرویس PSC از طریق یک پیوست سرویس نمایش دهید
  • برای خاتمه دادن به SSL در تعادل بار برنامه داخلی و خارجی، گواهینامه های SSL ایجاد کنید
  • یک منطقه عمومی Cloud DNS برای دسترسی به سرویس PSC پیکربندی کنید

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

  • یک پروژه Google Cloud با مجوزهای مالک

2. محیط تست

محیطی که ایجاد خواهید کرد شامل یک Consumer VPC و Producer VPC خواهد بود. در Producer VPC، یک گروه نمونه مدیریت شده را از یک الگوی نمونه مستقر خواهید کرد که یک وب سرویس منبع باز آپاچی ایجاد می کند. شما همچنین یک test-vm را برای اطمینان از عملکرد محلی مناسب سرویس مستقر خواهید کرد. شما سرویس آپاچی را به عنوان یک سرویس PSC Producer از طریق یک ضمیمه سرویس در معرض نمایش قرار خواهید داد.

در Consumer VPC شما یک Global External Application Load Balancer را با یک سرویس PSC Backend که به سرویس Apache اشاره می کند، مستقر خواهید کرد. سپس یک منطقه DNS عمومی برای دسترسی به سرویس PSC در اینترنت عمومی راه اندازی می کنید.

31e7497bf3d9035c.png

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

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

  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 اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

4. قبل از شروع

API ها را فعال کنید

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=YOUR-PROJECT-NAME
export region=us-central1
echo $project
echo $region

تمام خدمات لازم را فعال کنید

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

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

شبکه VPC ایجاد کنید

از Cloud Shell

gcloud compute networks create producer-vpc --subnet-mode custom

ایجاد زیرشبکه

دو زیرشبکه با هدف عمومی در producer-vpc مستقر خواهند شد. سرویس زیرشبکه برای استقرار ماشین های مجازی وب سرویس آپاچی و همچنین قانون حمل و نقل بار متعادل کننده استفاده خواهد شد. تست مشتری-زیر شبکه در منطقه دیگری خواهد بود و برای استقرار یک VM برای آزمایش سرویس آپاچی با دسترسی جهانی استفاده می شود.

از Cloud Shell

gcloud compute networks subnets create service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

از Cloud Shell

gcloud compute networks subnets create test-client-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=us-east4

ما همچنین باید یک زیرشبکه فقط پراکسی را برای استفاده با متعادل کننده بار برنامه داخلی منطقه ای مستقر کنیم.

از Cloud Shell

gcloud compute networks subnets create central-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.101.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

هنگامی که یک سرویس PSC مستقر می شود، هر سرویس منحصر به فرد نیاز به یک زیر شبکه PSC NAT مربوطه دارد تا با پیوست سرویس مرتبط شود. این زیرشبکه باید بسته به تعداد نقاط پایانی متصل مورد انتظار، اندازه مناسبی داشته باشد.

از Cloud Shell

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.100.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

Cloud NAT را ایجاد کنید

یک Cloud NAT برای نصب بسته های مناسب برای خدمات تولید کننده ما مورد نیاز است.

از Cloud Shell

gcloud compute routers create central-cr \
    --network=producer-vpc \
    --region=$region

از Cloud Shell

gcloud compute routers nats create central-nat \
    --router=central-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

خط مشی و قوانین فایروال شبکه را ایجاد کنید

از Cloud Shell

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
  • به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.

از Cloud Shell

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

دو قانون فایروال اضافی برای اجازه دادن به ترافیک ورودی به باطن های متعادل کننده بار که فقط از زیرشبکه پروکسی متعادل کننده بار (2000) منبع می شوند، و همچنین قانونی برای اجازه دادن به بررسی سلامت متعادل کننده بار در نمونه های انتهایی (2001) مورد نیاز است.

از Cloud Shell

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow traffic from load balancer proxy subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.101.0/24 \
    --layer4-configs tcp:443 \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow load balancer health checks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:443 \
    --global-firewall-policy

6. وب سرویس آپاچی را ایجاد کنید

ما یک وب سرویس ساده آپاچی ایجاد می کنیم که "PSC Service" را نمایش می دهد.

الگوی نمونه ایجاد کنید

از Cloud Shell

gcloud compute instance-templates create apache-service-template \
    --network producer-vpc \
    --subnet service-subnet \
    --region $region \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "PSC Service" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

ایجاد بررسی سلامت برای MIG

از Cloud Shell

gcloud compute health-checks create https service-mig-healthcheck \
    --port=443 \
    --global

ایجاد گروه نمونه مدیریت شده

از Cloud Shell

gcloud compute instance-groups managed create psc-service-mig \
    --region $region \
    --size=2 \
    --template=apache-service-template \
    --health-check=service-mig-healthcheck

gcloud compute instance-groups managed set-named-ports psc-service-mig \
    --named-ports=https:443 \
    --region=$region

7. یک گواهی خود امضا شده ایجاد کنید

مرحله 1 از دستورالعمل‌های اینجا را برای ایجاد گواهی امضا شده خود تکمیل کنید. شما می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان بازگردید. نام مشترک شما باید با EXAMPLE.COM پیکربندی شود.

یک منبع گواهی برای مرتبط کردن با بار متعادل کننده خود ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام فایل خاص خود جایگزین کنید.

از Cloud Shell

gcloud compute ssl-certificates create producer-service-cert \
    --certificate=<your-producer-certfile.cert> \
    --private-key=<your-producer-keyfile.pem> \
    --region=$region

8. Internal Regional Application Load Balancer را ایجاد کنید

سپس اجزای بار متعادل کننده را برای سرویس ایجاد می کنیم. ما از Internal Regional Application Load Balancer استفاده می کنیم، اما شما می توانید از هر بار متعادل کننده داخلی Google Cloud استفاده کنید. مستندات متعادل کننده بار مناسب را برای جابجایی TLS دنبال کنید.

آدرس IP داخلی را ایجاد کنید که برای قانون حمل و نقل بار متعادل کننده شما استفاده می شود و IP را یادداشت کنید تا بعداً هنگام برقراری تماس آزمایشی با سرویس مورد استفاده قرار گیرد.

از Cloud Shell

gcloud compute addresses create apache-service-ip \
 --region=$region \
 --subnet=service-subnet

gcloud compute addresses describe apache-service-ip \
   --format="get(address)" \
   --region=$region

بررسی سلامت بار متعادل کننده را ایجاد کنید.

از Cloud Shell

gcloud compute health-checks create https lb-apache-service-hc \
    --region=$region \
    --port-name=https

سرویس Backend را ایجاد کنید.

از Cloud Shell

gcloud compute backend-services create apache-bes\
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTPS \
  --port-name=https \
  --health-checks=lb-apache-service-hc \
  --health-checks-region=$region \
  --region=$region


gcloud compute backend-services add-backend apache-bes \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-service-mig \
  --region=$region

نقشه URL را ایجاد کنید.

از Cloud Shell

gcloud compute url-maps create producer-url-map \
  --default-service=apache-bes \
  --region=$region

پراکسی های HTTPS هدف را ایجاد کنید.

از Cloud Shell

gcloud compute target-https-proxies create https-proxy \
  --url-map=producer-url-map \
  --region=$region \
  --ssl-certificates=producer-service-cert

قانون Forwarding را ایجاد کنید.

از Cloud Shell

gcloud compute forwarding-rules create apache-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=service-subnet \
  --address=apache-service-ip \
  --ports=443 \
  --region=$region \
  --target-https-proxy=https-proxy \
  --target-https-proxy-region=$region \
  --allow-global-access

9. یک تست VM ایجاد کنید و سرویس را به صورت محلی تست کنید

قبل از ایجاد پیوست سرویس، یک vm کلاینت آزمایشی در منطقه دیگری ایجاد می‌کنیم تا بررسی کنیم که متعادل‌کننده بار به درستی با Global Access و TLS پیکربندی شده است.

از Cloud Shell

gcloud compute instances create vm-client \
    --zone=us-east4-a \
    --subnet=test-client-subnet \
    --no-address

حدود یک دقیقه صبر کنید تا تدارک کامل شود و سپس SSH وارد نمونه شود.

از Cloud Shell

gcloud compute ssh \
    --zone "us-east4-a" "vm-client" \
    --tunnel-through-iap \
    --project $project

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

curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443

نتیجه مورد انتظار

PSC Service

از VM خارج شوید.

از vm-client

exit

10. پیوست سرویس را ایجاد کنید

برای این مثال، ما پیوست سرویس خود را طوری پیکربندی می‌کنیم که فقط به اتصالات PSC از این پروژه اجازه دهد. این می تواند برای پذیرش یک یا چند پروژه یا شبکه خاص پیکربندی شود، اما نه هر دو. ما حداکثر محدودیت اتصال خود را بر روی 5 اتصال تنظیم کرده ایم. هر پروژه یا شبکه باید دارای یک محدودیت باشد.

از Cloud Shell

gcloud compute service-attachments create apache-service-attachment \
    --region=$region \
    --producer-forwarding-rule=apache-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$project=5 \
    --nat-subnets=psc-nat-subnet

شما باید URI پیوست سرویس ( selfLink ) را یادداشت کنید زیرا در مرحله بعدی برای پیکربندی PSC Backend به آن نیاز خواهید داشت. با اجرای موارد زیر در Cloud Shell می توانید آن را به دست آورید.

از Cloud Shell

gcloud compute service-attachments describe apache-service-attachment \
    --region $region

URI را با شروع از پروژه ها کپی کنید

مثال: projects/$project/regions/$region/serviceAttachments/apache-service-attachment

11. راه اندازی VPC مصرف کننده

شبکه VPC ایجاد کنید

از Cloud Shell

gcloud compute networks create consumer-vpc --subnet-mode custom

زیر شبکه ایجاد کنید

یک زیر شبکه در سمت مصرف کننده مورد نیاز است که در آن گروه نقطه پایانی شبکه اتصال سرویس خصوصی (NEG) مستقر خواهد شد.

از Cloud Shell

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --region=$region \
    --range=10.0.0.0/28

12. رزرو IP خارجی و ایجاد گواهینامه خود امضا شده در سمت مصرف کننده

IP خارجی

آدرس IP ثابت خارجی را ایجاد کنید که بعداً برای قانون حمل و نقل متعادل کننده بار ما استفاده می شود و آدرس IP را در متغیر Cloud Shell ضبط کنید.

از Cloud Shell

gcloud compute addresses create external-psc-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

export externalip=$(gcloud compute addresses describe external-psc-ip \
    --format="get(address)" \
    --global)

echo $externalip

گواهی امضا شده توسط مصرف کننده

برای بار دوم، مرحله 1 از دستورالعمل‌ها را در اینجا تکمیل کنید تا یک گواهی خود امضا شده ایجاد کنید. شما می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان بازگردید. ما به جای مالکیت منطقه DNS عمومی خود، از یک سرویس DNS عمومی متن باز به نام nip.io استفاده خواهیم کرد. URL عمومی سرویس PSC شما از آدرس IP خارجی که به تازگی پیکربندی کرده اید استفاده می کند. نام مشترک شما باید با <YOUR-EXTERNAL-IP.nip.io> پیکربندی شود

یک منبع گواهی برای ارتباط با متعادل کننده بار خارجی خود ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام فایل خاص خود جایگزین کنید.

از Cloud Shell

gcloud compute ssl-certificates create consumer-service-cert \
    --certificate=<your-consumer-certfile.cert> \
    --private-key=<your-consumer-keyfile.pem> \
    --global

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

ما یک متعادل کننده بار برنامه خارجی جهانی با یک PSC NEG ایجاد خواهیم کرد که به پیوست سرویس جدید ایجاد شده ما به عنوان یک سرویس Backend اشاره می کند.

URI پیوست سرویس را که در مرحله آخر ذکر کردیم را در اختیار داشته باشید. psc-target-service زیر را با URI خود جایگزین کنید.

از Cloud Shell

gcloud compute network-endpoint-groups create apache-psc-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \
--region=$region \
--network=consumer-vpc \
--subnet=consumer-subnet

سرویس Backend را ایجاد کنید.

از Cloud Shell

gcloud compute backend-services create apache-pscneg-bes \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global

gcloud compute backend-services add-backend apache-pscneg-bes \
    --network-endpoint-group=apache-psc-neg \
    --network-endpoint-group-region=$region \
    --global

نقشه URL را ایجاد کنید

از Cloud Shell

gcloud compute url-maps create consumer-url-map \
    --default-service=apache-pscneg-bes \
    --global

پراکسی های HTTPS هدف را ایجاد کنید.

از Cloud Shell

gcloud compute target-https-proxies create psc-https-proxy \
    --url-map=consumer-url-map \
    --ssl-certificates=consumer-service-cert

قانون Forwarding را ایجاد کنید

از Cloud Shell

gcloud compute forwarding-rules create external-fr \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=external-psc-ip \
  --global \
  --target-https-proxy=psc-https-proxy \
  --ports=443

14. Public DNS Zone را ایجاد کنید

از Cloud Shell

gcloud dns managed-zones create "psc-service" \
    --dns-name=$externalip.nip.io. \
    --description="public dns for psc service" \
    --visibility=public

از Cloud Shell

gcloud dns record-sets transaction start \
   --zone="psc-service"

gcloud dns record-sets transaction add $externalip \
   --name=$externalip.nip.io \
   --ttl=300 \
   --type=A \
   --zone="psc-service"

gcloud dns record-sets transaction execute \
   --zone="psc-service"

15. اتصال Consumer PSC را تست کنید

7 تا 10 دقیقه قبل از آزمایش صبر کنید تا DNS عمومی منتشر شود.

از Cloud Shell

curl https://$externalip.nip.io -k

همچنین می توانید با وارد کردن https://<YOUR-EXTERNAL-IP>.nip.io در مرورگر یا ترمینال دسکتاپ خود، از مرورگر خود تست کنید.

نتیجه مورد انتظار

PSC Service

16. مراحل پاکسازی

از یک ترمینال Cloud Shell، اجزای آزمایشگاه را حذف کنید

gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q

gcloud dns managed-zones delete "psc-service" -q

gcloud compute forwarding-rules delete external-fr --global -q 

gcloud compute target-https-proxies delete psc-https-proxy -q

gcloud compute url-maps delete consumer-url-map --global -q

gcloud compute backend-services delete apache-pscneg-bes --global -q

gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q

gcloud compute ssl-certificates delete consumer-service-cert --global -q

gcloud compute addresses delete external-psc-ip --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute instances delete vm-client --zone=us-east4-a -q

gcloud compute service-attachments delete apache-service-attachment --region $region -q

gcloud compute forwarding-rules delete apache-fr --region $region -q

gcloud compute target-https-proxies delete https-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete apache-bes --region $region -q

gcloud compute health-checks delete lb-apache-service-hc --region $region -q

gcloud compute addresses delete apache-service-ip --region $region -q

gcloud compute ssl-certificates delete producer-service-cert --region $region -q

gcloud compute instance-groups managed delete psc-service-mig --region $region -q

gcloud compute health-checks delete service-mig-healthcheck --global -q

gcloud compute instance-templates delete apache-service-template -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete central-nat --router=central-cr --region $region -q

gcloud compute routers delete central-cr --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete service-subnet --region $region -q

gcloud compute networks subnets delete test-client-subnet --region us-east4 -q 

gcloud compute networks subnets delete central-proxy-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

17. تبریک می گویم!

برای تکمیل کد لبه تبریک می گویم.

آنچه را پوشش داده ایم

  • یک پیکربندی یک PSC Backend مرتبط با Global External Application Load Balancer ایجاد کنید
  • یک سرویس وب مدیریت شده آپاچی را پیکربندی کنید و آن را به عنوان یک سرویس PSC از طریق یک پیوست سرویس نمایش دهید
  • برای خاتمه دادن به SSL در تعادل بار برنامه داخلی و خارجی، گواهینامه های SSL ایجاد کنید
  • یک منطقه عمومی Cloud DNS را برای دسترسی به سرویس PSC پیکربندی کنید
،

1. مقدمه

Private Service Connect تولیدکنندگان خدمات را قادر می سازد تا خدمات را به صورت خصوصی از یک شبکه VPC به شبکه دیگر در معرض دید قرار دهند. مصرف کنندگان می توانند از طریق نقاط پایانی PSC یا PSC Backends به خدمات تولید کننده دسترسی داشته باشند.

تمرکز این کد لبه پشتیبان PSC است. پشتیبان‌های PSC همراه با متعادل‌کننده‌های بار پروکسی Google Cloud (اعم از برنامه یا شبکه) استفاده می‌شوند. استفاده از PSC Backends کنترل های جانبی مصرف کننده ریزتری را فراهم می کند مانند:

  • قابلیت مشاهده و ثبت عمیق تر
  • یکپارچه سازی زره ​​ابری
  • URL های سفارشی
  • مدیریت ترافیک پیشرفته
  • گواهی های سفارشی TLS

در این کد لبه، شما یاد خواهید گرفت که چگونه یک Backend Connect Service Private با Global External Application Load Balancer ایجاد کنید تا به طور خصوصی به یک سرویس تولید کننده در شبکه دیگری دسترسی داشته باشید.

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

  • یک PSC Backend مرتبط با Global External Application Load Balancer ایجاد و پیکربندی کنید
  • یک سرویس وب مدیریت شده آپاچی را پیکربندی کنید و آن را به عنوان یک سرویس PSC از طریق یک پیوست سرویس نمایش دهید
  • برای خاتمه دادن به SSL در تعادل بار برنامه داخلی و خارجی، گواهینامه های SSL ایجاد کنید
  • یک منطقه عمومی Cloud DNS برای دسترسی به سرویس PSC پیکربندی کنید

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

  • یک پروژه Google Cloud با مجوزهای مالک

2. محیط تست

محیطی که ایجاد خواهید کرد شامل یک Consumer VPC و Producer VPC خواهد بود. در Producer VPC، یک گروه نمونه مدیریت شده را از یک الگوی نمونه مستقر خواهید کرد که یک وب سرویس منبع باز آپاچی ایجاد می کند. شما همچنین یک test-vm را برای اطمینان از عملکرد محلی مناسب سرویس مستقر خواهید کرد. شما سرویس آپاچی را به عنوان یک سرویس PSC Producer از طریق یک ضمیمه سرویس در معرض نمایش قرار خواهید داد.

در Consumer VPC شما یک Global External Application Load Balancer را با یک سرویس PSC Backend که به سرویس Apache اشاره می کند، مستقر خواهید کرد. سپس یک منطقه DNS عمومی برای دسترسی به سرویس PSC در اینترنت عمومی راه اندازی می کنید.

31e7497bf3d9035c.png

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

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

  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 اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

4. قبل از شروع

API ها را فعال کنید

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=YOUR-PROJECT-NAME
export region=us-central1
echo $project
echo $region

تمام خدمات لازم را فعال کنید

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

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

شبکه VPC ایجاد کنید

از Cloud Shell

gcloud compute networks create producer-vpc --subnet-mode custom

ایجاد زیرشبکه

دو زیرشبکه با هدف عمومی در producer-vpc مستقر خواهند شد. سرویس زیرشبکه برای استقرار ماشین های مجازی وب سرویس آپاچی و همچنین قانون حمل و نقل بار متعادل کننده استفاده خواهد شد. تست مشتری-زیر شبکه در منطقه دیگری خواهد بود و برای استقرار یک VM برای آزمایش سرویس آپاچی با دسترسی جهانی استفاده می شود.

از Cloud Shell

gcloud compute networks subnets create service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

از Cloud Shell

gcloud compute networks subnets create test-client-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=us-east4

ما همچنین باید یک زیرشبکه فقط پراکسی را برای استفاده با متعادل کننده بار برنامه داخلی منطقه ای مستقر کنیم.

از Cloud Shell

gcloud compute networks subnets create central-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.101.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

هنگامی که یک سرویس PSC مستقر می شود، هر سرویس منحصر به فرد نیاز به یک زیر شبکه PSC NAT مربوطه دارد تا با پیوست سرویس مرتبط شود. این زیرشبکه باید بسته به تعداد نقاط پایانی متصل مورد انتظار، اندازه مناسبی داشته باشد.

از Cloud Shell

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.100.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

Cloud NAT را ایجاد کنید

یک Cloud NAT برای نصب بسته های مناسب برای خدمات تولید کننده ما مورد نیاز است.

از Cloud Shell

gcloud compute routers create central-cr \
    --network=producer-vpc \
    --region=$region

از Cloud Shell

gcloud compute routers nats create central-nat \
    --router=central-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

خط مشی و قوانین فایروال شبکه را ایجاد کنید

از Cloud Shell

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
  • به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.

از Cloud Shell

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

دو قانون فایروال اضافی لازم خواهد بود تا امکان ترافیک Ingress به BALANCER BACKEND های BALONCER که از Proxy Balancer Load Only Subnet (2000) تهیه شده است ، و همچنین یک قانون برای اجازه دادن به HealthChecks Balancer Balancer در موارد انتهای عقب (2001).

از پوسته ابر

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow traffic from load balancer proxy subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.101.0/24 \
    --layer4-configs tcp:443 \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow load balancer health checks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:443 \
    --global-firewall-policy

6. ایجاد سرویس وب آپاچی

ما یک سرویس وب ساده آپاچی ایجاد خواهیم کرد که "سرویس PSC" را نشان می دهد.

الگوی نمونه ایجاد کنید

از پوسته ابر

gcloud compute instance-templates create apache-service-template \
    --network producer-vpc \
    --subnet service-subnet \
    --region $region \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "PSC Service" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

بررسی سلامتی برای MIG ایجاد کنید

از پوسته ابر

gcloud compute health-checks create https service-mig-healthcheck \
    --port=443 \
    --global

گروه نمونه مدیریت شده را ایجاد کنید

از پوسته ابر

gcloud compute instance-groups managed create psc-service-mig \
    --region $region \
    --size=2 \
    --template=apache-service-template \
    --health-check=service-mig-healthcheck

gcloud compute instance-groups managed set-named-ports psc-service-mig \
    --named-ports=https:443 \
    --region=$region

7. یک گواهینامه خود امضا شده ایجاد کنید

مرحله 1 از دستورالعمل ها را در اینجا برای ایجاد یک گواهینامه خود امضا شده کامل کنید. می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان برگردید. نام مشترک شما باید با مثال. com پیکربندی شود.

برای ارتباط با متعادل کننده بار خود ، یک منبع گواهی ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام پرونده های خاص خود جایگزین کنید.

از پوسته ابر

gcloud compute ssl-certificates create producer-service-cert \
    --certificate=<your-producer-certfile.cert> \
    --private-key=<your-producer-keyfile.pem> \
    --region=$region

8. بومر بار برنامه داخلی برنامه منطقه ای را ایجاد کنید

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

آدرس IP داخلی را ایجاد کنید که برای قاعده حمل و نقل از بالانسر بار شما استفاده می شود و از IP یادداشت کنید که بعداً هنگام برقراری تماس آزمایشی با سرویس استفاده شود.

از پوسته ابر

gcloud compute addresses create apache-service-ip \
 --region=$region \
 --subnet=service-subnet

gcloud compute addresses describe apache-service-ip \
   --format="get(address)" \
   --region=$region

بررسی سلامت Load Balancer را ایجاد کنید.

از پوسته ابر

gcloud compute health-checks create https lb-apache-service-hc \
    --region=$region \
    --port-name=https

سرویس باطن را ایجاد کنید.

از پوسته ابر

gcloud compute backend-services create apache-bes\
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTPS \
  --port-name=https \
  --health-checks=lb-apache-service-hc \
  --health-checks-region=$region \
  --region=$region


gcloud compute backend-services add-backend apache-bes \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-service-mig \
  --region=$region

نقشه URL را ایجاد کنید.

از پوسته ابر

gcloud compute url-maps create producer-url-map \
  --default-service=apache-bes \
  --region=$region

پروکسی های هدف HTTPS را ایجاد کنید.

از پوسته ابر

gcloud compute target-https-proxies create https-proxy \
  --url-map=producer-url-map \
  --region=$region \
  --ssl-certificates=producer-service-cert

قانون حمل و نقل را ایجاد کنید.

از پوسته ابر

gcloud compute forwarding-rules create apache-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=service-subnet \
  --address=apache-service-ip \
  --ports=443 \
  --region=$region \
  --target-https-proxy=https-proxy \
  --target-https-proxy-region=$region \
  --allow-global-access

9. یک تست VM ایجاد کنید و سرویس را به صورت محلی آزمایش کنید

قبل از ایجاد دلبستگی سرویس ، ما یک Client Test VM را در یک منطقه متفاوت ایجاد می کنیم تا آزمایش کنیم که بقاء بار به درستی با دسترسی جهانی و TLS پیکربندی شده است.

از پوسته ابر

gcloud compute instances create vm-client \
    --zone=us-east4-a \
    --subnet=test-client-subnet \
    --no-address

در حدود یک دقیقه صبر کنید تا تهیه و سپس SSH به عنوان مثال تکمیل شود.

از پوسته ابر

gcloud compute ssh \
    --zone "us-east4-a" "vm-client" \
    --tunnel-through-iap \
    --project $project

سرویس Apache را با اتصال بیش از 443 از طریق متعادل کننده بار آزمایش کنید. آدرس IP داخلی همان چیزی است که شما قبلاً رزرو کرده اید و به آن اشاره شده است.

curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443

نتیجه مورد انتظار

PSC Service

از VM خارج شوید.

از VM-Client

exit

10. پیوست سرویس را ایجاد کنید

برای این مثال ، ما پیوست سرویس خود را پیکربندی می کنیم تا فقط به اتصالات PSC از این پروژه اجازه دهیم. این می تواند برای پذیرش یک یا چند پروژه خاص یا شبکه پیکربندی شود ، اما نه هر دو. ما حداکثر اتصال خود را روی 5 اتصال تنظیم کرده ایم. هر پروژه یا شبکه باید دارای یک مجموعه محدود باشد.

از پوسته ابر

gcloud compute service-attachments create apache-service-attachment \
    --region=$region \
    --producer-forwarding-rule=apache-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$project=5 \
    --nat-subnets=psc-nat-subnet

شما باید توجه داشته باشید که Attachment Uri ( Selflink ) به آن توجه کنید زیرا در مرحله بعدی برای پیکربندی Backend PSC به آن نیاز خواهید داشت. می توانید با اجرای موارد زیر در Cloud Shell آن را بدست آورید.

از پوسته ابر

gcloud compute service-attachments describe apache-service-attachment \
    --region $region

URI را از پروژه ها کپی کنید

مثال: پروژه ها/$ پروژه/مناطق/$ منطقه/سرویس های خدمات/خدمات آپاچی

11. تنظیم VPC مصرف کننده

شبکه VPC را ایجاد کنید

از پوسته ابر

gcloud compute networks create consumer-vpc --subnet-mode custom

زیر شبکه ایجاد کنید

یک زیر شبکه در طرف مصرف کننده مورد نیاز است که در آن سرویس خصوصی Connect Network Endpoint Group (NEG) مستقر خواهد شد.

از پوسته ابر

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --region=$region \
    --range=10.0.0.0/28

12. IP خارجی را رزرو کنید و گواهینامه خود را به سمت مصرف کننده ایجاد کنید

IP خارجی

آدرس IP استاتیک خارجی را ایجاد کنید که بعداً برای قانون حمل و نقل بقاء بار ما استفاده می شود و آدرس IP را در یک متغیر پوسته ابری ضبط می کند.

از پوسته ابر

gcloud compute addresses create external-psc-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

export externalip=$(gcloud compute addresses describe external-psc-ip \
    --format="get(address)" \
    --global)

echo $externalip

گواهینامه خود امضا کننده مصرف کننده

برای بار دوم ، مرحله 1 از دستورالعمل ها را در اینجا برای ایجاد یک گواهینامه خود امضا شده کامل کنید. می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان برگردید. ما به جای مالکیت منطقه DNS عمومی خود ، از یک سرویس Wildcard DNS منبع باز عمومی به نام nip.io استفاده خواهیم کرد. URL عمومی سرویس PSC شما از آدرس IP خارجی که اخیراً پیکربندی کرده اید استفاده می کند. نام مشترک شما باید با <your-external-ip.nip.io> پیکربندی شود

برای ارتباط با متعادل کننده بار خارجی خود ، یک منبع گواهی ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام پرونده های خاص خود جایگزین کنید.

از پوسته ابر

gcloud compute ssl-certificates create consumer-service-cert \
    --certificate=<your-consumer-certfile.cert> \
    --private-key=<your-consumer-keyfile.pem> \
    --global

13. اجزای متعادل کننده بار را ایجاد کنید

ما یک متعادل کننده بارگذاری برنامه خارجی جهانی با PSC NEG ایجاد خواهیم کرد که به دلبستگی سرویس تازه ایجاد شده ما به عنوان یک سرویس باطن اشاره می کند.

از URI دلبستگی خدمات که در آخرین مرحله به آن اشاره کردیم ، مفید هستند. خدمات PSC-هدف را در زیر با URI خود جایگزین کنید.

از پوسته ابر

gcloud compute network-endpoint-groups create apache-psc-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \
--region=$region \
--network=consumer-vpc \
--subnet=consumer-subnet

سرویس باطن را ایجاد کنید.

از پوسته ابر

gcloud compute backend-services create apache-pscneg-bes \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global

gcloud compute backend-services add-backend apache-pscneg-bes \
    --network-endpoint-group=apache-psc-neg \
    --network-endpoint-group-region=$region \
    --global

نقشه URL را ایجاد کنید

از پوسته ابر

gcloud compute url-maps create consumer-url-map \
    --default-service=apache-pscneg-bes \
    --global

پروکسی های هدف HTTPS را ایجاد کنید.

از پوسته ابر

gcloud compute target-https-proxies create psc-https-proxy \
    --url-map=consumer-url-map \
    --ssl-certificates=consumer-service-cert

قانون حمل و نقل را ایجاد کنید

از پوسته ابر

gcloud compute forwarding-rules create external-fr \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=external-psc-ip \
  --global \
  --target-https-proxy=psc-https-proxy \
  --ports=443

14. منطقه DNS عمومی ایجاد کنید

از پوسته ابر

gcloud dns managed-zones create "psc-service" \
    --dns-name=$externalip.nip.io. \
    --description="public dns for psc service" \
    --visibility=public

از پوسته ابر

gcloud dns record-sets transaction start \
   --zone="psc-service"

gcloud dns record-sets transaction add $externalip \
   --name=$externalip.nip.io \
   --ttl=300 \
   --type=A \
   --zone="psc-service"

gcloud dns record-sets transaction execute \
   --zone="psc-service"

15. اتصال PSC مصرف کننده را آزمایش کنید

7 تا 10 دقیقه قبل از آزمایش صبر کنید تا DNS به مردم پخش شود.

از پوسته ابر

curl https://$externalip.nip.io -k

همچنین می توانید با وارد کردن https: // <your-external-ip> .nip.io در ترمینال مرورگر یا دسک تاپ خود از مرورگر خود آزمایش کنید.

نتیجه مورد انتظار

PSC Service

16. مراحل پاکسازی

از یک ترمینال پوسته ابری اجزای آزمایشگاه حذف

gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q

gcloud dns managed-zones delete "psc-service" -q

gcloud compute forwarding-rules delete external-fr --global -q 

gcloud compute target-https-proxies delete psc-https-proxy -q

gcloud compute url-maps delete consumer-url-map --global -q

gcloud compute backend-services delete apache-pscneg-bes --global -q

gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q

gcloud compute ssl-certificates delete consumer-service-cert --global -q

gcloud compute addresses delete external-psc-ip --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute instances delete vm-client --zone=us-east4-a -q

gcloud compute service-attachments delete apache-service-attachment --region $region -q

gcloud compute forwarding-rules delete apache-fr --region $region -q

gcloud compute target-https-proxies delete https-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete apache-bes --region $region -q

gcloud compute health-checks delete lb-apache-service-hc --region $region -q

gcloud compute addresses delete apache-service-ip --region $region -q

gcloud compute ssl-certificates delete producer-service-cert --region $region -q

gcloud compute instance-groups managed delete psc-service-mig --region $region -q

gcloud compute health-checks delete service-mig-healthcheck --global -q

gcloud compute instance-templates delete apache-service-template -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete central-nat --router=central-cr --region $region -q

gcloud compute routers delete central-cr --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete service-subnet --region $region -q

gcloud compute networks subnets delete test-client-subnet --region us-east4 -q 

gcloud compute networks subnets delete central-proxy-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

17. تبریک می گویم!

تبریک می گویم برای تکمیل CodeLab.

آنچه را پوشش داده ایم

  • پیکربندی یک پس زمینه PSC مرتبط با متعادل کننده بارگذاری برنامه خارجی جهانی ایجاد کنید
  • یک سرویس وب مدیریت شده Apache را پیکربندی کرده و آن را به عنوان یک سرویس PSC از طریق یک ضمیمه سرویس در معرض نمایش بگذارید
  • گواهینامه های SSL را برای خاتمه SSL در متعادل بار برنامه های داخلی و خارجی ایجاد کنید
  • یک منطقه عمومی Cloud DNS را برای دسترسی به سرویس PSC پیکربندی کنید
،

1. مقدمه

سرویس خصوصی اتصال به تولید کنندگان خدمات امکان می دهد خدمات را به صورت خصوصی از یک شبکه VPC به دیگری در معرض نمایش بگذارند. مصرف کنندگان می توانند از طریق نقاط پایانی PSC یا Backends PSC به خدمات تولید کننده دسترسی پیدا کنند.

تمرکز این CodeLab Backends PSC است. از Backends PSC در رابطه با تعادل بار Google Cloud Proxy (یا برنامه یا شبکه) استفاده می شود. استفاده از Backends PSC کنترل های جانبی مصرف کننده دانه ای بیشتری مانند:

  • مشاهده عمیق تر و ورود به سیستم
  • ادغام زره ابر
  • URL های سفارشی
  • مدیریت پیشرفته ترافیک
  • گواهی های سفارشی TLS

در این CodeLab ، شما یاد می گیرید که چگونه یک سرویس خصوصی را ایجاد کنید تا با یک برنامه جهانی بارگذاری برنامه خارجی ، به یک سرویس تولید کننده در یک شبکه دیگر دسترسی پیدا کنید.

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

  • یک پس زمینه PSC مرتبط با متعادل کننده بار برنامه خارجی را ایجاد و پیکربندی کنید
  • یک سرویس وب مدیریت شده Apache را پیکربندی کرده و آن را به عنوان یک سرویس PSC از طریق یک ضمیمه سرویس در معرض نمایش بگذارید
  • گواهینامه های SSL را برای خاتمه SSL در متعادل بار برنامه های داخلی و خارجی ایجاد کنید
  • برای دسترسی به سرویس PSC یک منطقه عمومی Cloud DNS را پیکربندی کنید

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

  • یک پروژه Google Cloud با مجوزهای مالک

2. محیط آزمایش

محیطی که ایجاد خواهید کرد شامل یک VPC مصرف کننده و تولید کننده VPC خواهد بود. در تولید کننده VPC ، شما یک گروه نمونه مدیریت شده را از یک الگوی نمونه که یک سرویس وب آپاچی منبع باز ایجاد می کند ، مستقر خواهید کرد. همچنین برای اطمینان از عملکرد مناسب محلی خدمات ، یک VM Test-VM را مستقر خواهید کرد. شما خدمات Apache را به عنوان یک سرویس تولید کننده PSC از طریق یک ضمیمه سرویس در معرض دید قرار می دهید.

در VPC Consumer ، شما می توانید یک متعادل کننده بارگذاری برنامه خارجی جهانی را با یک سرویس پس زمینه PSC با اشاره به سرویس Apache مستقر کنید. سپس یک منطقه DNS عمومی را برای دسترسی به سرویس PSC در اینترنت عمومی تنظیم خواهید کرد.

31E7497BF3D9035C.PNG

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

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

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

fbef9caa1602edd0.png

A99B7ACE416376C4.PNG

5e3ff691252acf41.png

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

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

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

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

55EFC1AA7A4D3AD.PNG

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

7FFE5CBB04455448.PNG

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

4 قبل از شروع کار

API ها را فعال کنید

در داخل پوسته ابر ، اطمینان حاصل کنید که شناسه پروژه شما تنظیم شده است

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=YOUR-PROJECT-NAME
export region=us-central1
echo $project
echo $region

تمام خدمات لازم را فعال کنید

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

5. تولید VPC تولید کننده

شبکه VPC را ایجاد کنید

از پوسته ابر

gcloud compute networks create producer-vpc --subnet-mode custom

ایجاد زیرشبکه

دو زیر شبکه هدف کلی در تولید کننده-VPC مستقر می شوند. از این سرویس از خدمات برای استقرار سرویس های وب Apache Web VMS و همچنین قانون حمل و نقل Balancer Balancer استفاده می شود. -Subnet Test-Client-Subnet در منطقه دیگری قرار خواهد گرفت و برای استقرار یک VM برای آزمایش سرویس Apache با دسترسی جهانی فعال استفاده می شود.

از پوسته ابر

gcloud compute networks subnets create service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

از پوسته ابر

gcloud compute networks subnets create test-client-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=us-east4

ما همچنین باید یک زیر شبکه را که برای استفاده از متعادل بار برنامه داخلی منطقه ای استفاده می شود ، مستقر کنیم.

از پوسته ابر

gcloud compute networks subnets create central-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.101.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

هنگامی که یک سرویس PSC مستقر می شود ، هر سرویس منحصر به فرد به یک زیر شبکه PSC مربوطه نیاز دارد تا با ضمیمه سرویس در ارتباط باشد. این زیر شبکه بسته به تعداد نقاط پایانی متصل مورد انتظار باید مناسب باشد.

از پوسته ابر

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.100.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

Cloud Nat را ایجاد کنید

برای نصب بسته های مناسب برای خدمات تولید کننده ما ، یک ابر نات مورد نیاز است.

از پوسته ابر

gcloud compute routers create central-cr \
    --network=producer-vpc \
    --region=$region

از پوسته ابر

gcloud compute routers nats create central-nat \
    --router=central-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

خط مشی و قوانین فایروال را ایجاد کنید

از پوسته ابر

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

برای اینکه IAP به موارد VM خود متصل شود ، یک قانون فایروال ایجاد کنید که:

  • برای تمام موارد VM که می خواهید با استفاده از IAP قابل دسترسی باشید ، اعمال می شود.
  • ترافیک Ingress را از محدوده IP 35.235.240.0/20 می گذارد. این محدوده شامل تمام آدرس های IP است که IAP برای حمل و نقل TCP استفاده می کند.

از پوسته ابر

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

دو قانون فایروال اضافی لازم خواهد بود تا امکان ترافیک Ingress به BALANCER BACKEND های BALONCER که از Proxy Balancer Load Only Subnet (2000) تهیه شده است ، و همچنین یک قانون برای اجازه دادن به HealthChecks Balancer Balancer در موارد انتهای عقب (2001).

از پوسته ابر

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow traffic from load balancer proxy subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.101.0/24 \
    --layer4-configs tcp:443 \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow load balancer health checks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:443 \
    --global-firewall-policy

6. ایجاد سرویس وب آپاچی

ما یک سرویس وب ساده آپاچی ایجاد خواهیم کرد که "سرویس PSC" را نشان می دهد.

الگوی نمونه ایجاد کنید

از پوسته ابر

gcloud compute instance-templates create apache-service-template \
    --network producer-vpc \
    --subnet service-subnet \
    --region $region \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "PSC Service" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

بررسی سلامتی برای MIG ایجاد کنید

از پوسته ابر

gcloud compute health-checks create https service-mig-healthcheck \
    --port=443 \
    --global

گروه نمونه مدیریت شده را ایجاد کنید

از پوسته ابر

gcloud compute instance-groups managed create psc-service-mig \
    --region $region \
    --size=2 \
    --template=apache-service-template \
    --health-check=service-mig-healthcheck

gcloud compute instance-groups managed set-named-ports psc-service-mig \
    --named-ports=https:443 \
    --region=$region

7. یک گواهینامه خود امضا شده ایجاد کنید

مرحله 1 از دستورالعمل ها را در اینجا برای ایجاد یک گواهینامه خود امضا شده کامل کنید. می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان برگردید. نام مشترک شما باید با مثال. com پیکربندی شود.

برای ارتباط با متعادل کننده بار خود ، یک منبع گواهی ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام پرونده های خاص خود جایگزین کنید.

از پوسته ابر

gcloud compute ssl-certificates create producer-service-cert \
    --certificate=<your-producer-certfile.cert> \
    --private-key=<your-producer-keyfile.pem> \
    --region=$region

8. بومر بار برنامه داخلی برنامه منطقه ای را ایجاد کنید

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

آدرس IP داخلی را ایجاد کنید که برای قاعده حمل و نقل از بالانسر بار شما استفاده می شود و از IP یادداشت کنید که بعداً هنگام برقراری تماس آزمایشی با سرویس استفاده شود.

از پوسته ابر

gcloud compute addresses create apache-service-ip \
 --region=$region \
 --subnet=service-subnet

gcloud compute addresses describe apache-service-ip \
   --format="get(address)" \
   --region=$region

بررسی سلامت Load Balancer را ایجاد کنید.

از پوسته ابر

gcloud compute health-checks create https lb-apache-service-hc \
    --region=$region \
    --port-name=https

سرویس باطن را ایجاد کنید.

از پوسته ابر

gcloud compute backend-services create apache-bes\
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTPS \
  --port-name=https \
  --health-checks=lb-apache-service-hc \
  --health-checks-region=$region \
  --region=$region


gcloud compute backend-services add-backend apache-bes \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-service-mig \
  --region=$region

نقشه URL را ایجاد کنید.

از پوسته ابر

gcloud compute url-maps create producer-url-map \
  --default-service=apache-bes \
  --region=$region

پروکسی های هدف HTTPS را ایجاد کنید.

از پوسته ابر

gcloud compute target-https-proxies create https-proxy \
  --url-map=producer-url-map \
  --region=$region \
  --ssl-certificates=producer-service-cert

قانون حمل و نقل را ایجاد کنید.

از پوسته ابر

gcloud compute forwarding-rules create apache-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=service-subnet \
  --address=apache-service-ip \
  --ports=443 \
  --region=$region \
  --target-https-proxy=https-proxy \
  --target-https-proxy-region=$region \
  --allow-global-access

9. یک تست VM ایجاد کنید و سرویس را به صورت محلی آزمایش کنید

قبل از ایجاد دلبستگی سرویس ، ما یک Client Test VM را در یک منطقه متفاوت ایجاد می کنیم تا آزمایش کنیم که بقاء بار به درستی با دسترسی جهانی و TLS پیکربندی شده است.

از پوسته ابر

gcloud compute instances create vm-client \
    --zone=us-east4-a \
    --subnet=test-client-subnet \
    --no-address

در حدود یک دقیقه صبر کنید تا تهیه و سپس SSH به عنوان مثال تکمیل شود.

از پوسته ابر

gcloud compute ssh \
    --zone "us-east4-a" "vm-client" \
    --tunnel-through-iap \
    --project $project

سرویس Apache را با اتصال بیش از 443 از طریق متعادل کننده بار آزمایش کنید. آدرس IP داخلی همان چیزی است که شما قبلاً رزرو کرده اید و به آن اشاره شده است.

curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443

نتیجه مورد انتظار

PSC Service

از VM خارج شوید.

از VM-Client

exit

10. پیوست سرویس را ایجاد کنید

برای این مثال ، ما پیوست سرویس خود را پیکربندی می کنیم تا فقط به اتصالات PSC از این پروژه اجازه دهیم. این می تواند برای پذیرش یک یا چند پروژه خاص یا شبکه پیکربندی شود ، اما نه هر دو. ما حداکثر اتصال خود را روی 5 اتصال تنظیم کرده ایم. هر پروژه یا شبکه باید دارای یک مجموعه محدود باشد.

از پوسته ابر

gcloud compute service-attachments create apache-service-attachment \
    --region=$region \
    --producer-forwarding-rule=apache-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$project=5 \
    --nat-subnets=psc-nat-subnet

شما باید توجه داشته باشید که Attachment Uri ( Selflink ) به آن توجه کنید زیرا در مرحله بعدی برای پیکربندی Backend PSC به آن نیاز خواهید داشت. می توانید با اجرای موارد زیر در Cloud Shell آن را بدست آورید.

از پوسته ابر

gcloud compute service-attachments describe apache-service-attachment \
    --region $region

URI را از پروژه ها کپی کنید

مثال: پروژه ها/$ پروژه/مناطق/$ منطقه/سرویس های خدمات/خدمات آپاچی

11. تنظیم VPC مصرف کننده

شبکه VPC را ایجاد کنید

از پوسته ابر

gcloud compute networks create consumer-vpc --subnet-mode custom

زیر شبکه ایجاد کنید

یک زیر شبکه در طرف مصرف کننده مورد نیاز است که در آن سرویس خصوصی Connect Network Endpoint Group (NEG) مستقر خواهد شد.

از پوسته ابر

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --region=$region \
    --range=10.0.0.0/28

12. IP خارجی را رزرو کنید و گواهینامه خود را به سمت مصرف کننده ایجاد کنید

IP خارجی

آدرس IP استاتیک خارجی را ایجاد کنید که بعداً برای قانون حمل و نقل بقاء بار ما استفاده می شود و آدرس IP را در یک متغیر پوسته ابری ضبط می کند.

از پوسته ابر

gcloud compute addresses create external-psc-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

export externalip=$(gcloud compute addresses describe external-psc-ip \
    --format="get(address)" \
    --global)

echo $externalip

گواهینامه خود امضا کننده مصرف کننده

برای بار دوم ، مرحله 1 از دستورالعمل ها را در اینجا برای ایجاد یک گواهینامه خود امضا شده کامل کنید. می توانید تمام دستورات را در Cloud Shell اجرا کنید. پس از اتمام مرحله 1 به این مکان برگردید. ما به جای مالکیت منطقه DNS عمومی خود ، از یک سرویس Wildcard DNS منبع باز عمومی به نام nip.io استفاده خواهیم کرد. URL عمومی سرویس PSC شما از آدرس IP خارجی که اخیراً پیکربندی کرده اید استفاده می کند. نام مشترک شما باید با <your-external-ip.nip.io> پیکربندی شود

برای ارتباط با متعادل کننده بار خارجی خود ، یک منبع گواهی ایجاد کنید. پارامترهای گواهی و کلید خصوصی را با نام پرونده های خاص خود جایگزین کنید.

از پوسته ابر

gcloud compute ssl-certificates create consumer-service-cert \
    --certificate=<your-consumer-certfile.cert> \
    --private-key=<your-consumer-keyfile.pem> \
    --global

13. اجزای متعادل کننده بار را ایجاد کنید

ما یک متعادل کننده بارگذاری برنامه خارجی جهانی با PSC NEG ایجاد خواهیم کرد که به دلبستگی سرویس تازه ایجاد شده ما به عنوان یک سرویس باطن اشاره می کند.

از URI دلبستگی خدمات که در آخرین مرحله به آن اشاره کردیم ، مفید هستند. خدمات PSC-هدف را در زیر با URI خود جایگزین کنید.

از پوسته ابر

gcloud compute network-endpoint-groups create apache-psc-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \
--region=$region \
--network=consumer-vpc \
--subnet=consumer-subnet

سرویس باطن را ایجاد کنید.

از پوسته ابر

gcloud compute backend-services create apache-pscneg-bes \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global

gcloud compute backend-services add-backend apache-pscneg-bes \
    --network-endpoint-group=apache-psc-neg \
    --network-endpoint-group-region=$region \
    --global

نقشه URL را ایجاد کنید

از پوسته ابر

gcloud compute url-maps create consumer-url-map \
    --default-service=apache-pscneg-bes \
    --global

پروکسی های هدف HTTPS را ایجاد کنید.

از پوسته ابر

gcloud compute target-https-proxies create psc-https-proxy \
    --url-map=consumer-url-map \
    --ssl-certificates=consumer-service-cert

قانون حمل و نقل را ایجاد کنید

از پوسته ابر

gcloud compute forwarding-rules create external-fr \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=external-psc-ip \
  --global \
  --target-https-proxy=psc-https-proxy \
  --ports=443

14. منطقه DNS عمومی ایجاد کنید

از پوسته ابر

gcloud dns managed-zones create "psc-service" \
    --dns-name=$externalip.nip.io. \
    --description="public dns for psc service" \
    --visibility=public

از پوسته ابر

gcloud dns record-sets transaction start \
   --zone="psc-service"

gcloud dns record-sets transaction add $externalip \
   --name=$externalip.nip.io \
   --ttl=300 \
   --type=A \
   --zone="psc-service"

gcloud dns record-sets transaction execute \
   --zone="psc-service"

15. اتصال PSC مصرف کننده را آزمایش کنید

7 تا 10 دقیقه قبل از آزمایش صبر کنید تا DNS به مردم پخش شود.

از پوسته ابر

curl https://$externalip.nip.io -k

همچنین می توانید با وارد کردن https: // <your-external-ip> .nip.io در ترمینال مرورگر یا دسک تاپ خود از مرورگر خود آزمایش کنید.

نتیجه مورد انتظار

PSC Service

16. مراحل پاکسازی

از یک ترمینال پوسته ابری اجزای آزمایشگاه حذف

gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q

gcloud dns managed-zones delete "psc-service" -q

gcloud compute forwarding-rules delete external-fr --global -q 

gcloud compute target-https-proxies delete psc-https-proxy -q

gcloud compute url-maps delete consumer-url-map --global -q

gcloud compute backend-services delete apache-pscneg-bes --global -q

gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q

gcloud compute ssl-certificates delete consumer-service-cert --global -q

gcloud compute addresses delete external-psc-ip --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute instances delete vm-client --zone=us-east4-a -q

gcloud compute service-attachments delete apache-service-attachment --region $region -q

gcloud compute forwarding-rules delete apache-fr --region $region -q

gcloud compute target-https-proxies delete https-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete apache-bes --region $region -q

gcloud compute health-checks delete lb-apache-service-hc --region $region -q

gcloud compute addresses delete apache-service-ip --region $region -q

gcloud compute ssl-certificates delete producer-service-cert --region $region -q

gcloud compute instance-groups managed delete psc-service-mig --region $region -q

gcloud compute health-checks delete service-mig-healthcheck --global -q

gcloud compute instance-templates delete apache-service-template -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete central-nat --router=central-cr --region $region -q

gcloud compute routers delete central-cr --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete service-subnet --region $region -q

gcloud compute networks subnets delete test-client-subnet --region us-east4 -q 

gcloud compute networks subnets delete central-proxy-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

17. تبریک می گویم!

تبریک می گویم برای تکمیل CodeLab.

آنچه را پوشش داده ایم

  • پیکربندی یک پس زمینه PSC مرتبط با متعادل کننده بارگذاری برنامه خارجی جهانی ایجاد کنید
  • یک سرویس وب مدیریت شده Apache را پیکربندی کرده و آن را به عنوان یک سرویس PSC از طریق یک ضمیمه سرویس در معرض نمایش بگذارید
  • گواهینامه های SSL را برای خاتمه SSL در متعادل بار برنامه های داخلی و خارجی ایجاد کنید
  • یک منطقه عمومی Cloud DNS را برای دسترسی به سرویس PSC پیکربندی کنید