Vertex AI به طور خصوصی با استفاده از PSC به نقاط پایانی پیش بینی آنلاین دسترسی دارد

۱. مقدمه

میزبان‌های محلی می‌توانند به صورت محلی از طریق اینترنت عمومی (گزینه ۱) یا با استفاده از Cloud VPN یا Cloud Interconnect با Private Service Connect (PSC) (گزینه ۲) از شبکه محلی شما، که هر دو رمزگذاری SSL/TLS را ارائه می‌دهند، به یک پیش‌بینی آنلاین دسترسی پیدا کنند. اتصال ترکیبی به پیش‌بینی آنلاین از طریق اتصال داخلی، عملکرد بهتری نسبت به اینترنت دارد، بنابراین برای برنامه‌های حیاتی، همانطور که در شکل ۱ نشان داده شده است، توصیه می‌شود.

در این آموزش، نحوه استفاده از VPN با قابلیت دسترسی بالا (HA VPN) را برای دسترسی خصوصی به پیش‌بینی آنلاین بین دو شبکه VPC نشان خواهیم داد که می‌تواند به عنوان پایه‌ای برای اتصال خصوصی چند ابری و داخلی عمل کند.

توجه داشته باشید، پیش‌بینی آنلاین ورتکس یک نقطه پایانی عمومی است، بنابراین شما می‌خواهید دسترسی را با استفاده از کنترل‌های سرویس VPC (VPC-SC) محدود کنید تا محیط‌های امنی ایجاد کنید تا دسترسی به ورتکس و سایر Googleapisها را مجاز یا غیرمجاز کنید. این آموزش VPC-SC را پوشش نمی‌دهد، برای جزئیات بیشتر به کنترل‌های سرویس VPC با Vertex AI مراجعه کنید.

24a07ba49a7bcb16.png

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

شما یک شبکه VPC به نام on-prem-vpc راه‌اندازی خواهید کرد تا یک محیط داخلی را نشان دهد. برای استقرار شما، on-prem-vpc وجود نخواهد داشت، در عوض از شبکه ترکیبی به مرکز داده داخلی یا ارائه دهنده ابری شما استفاده می‌شود.

شما قرار است یک معماری جامع Private Service Connect بسازید که دسترسی عمومی به پیش‌بینی آنلاین از طریق Cloud NAT و دسترسی خصوصی با استفاده از PSC از طریق HA VPN را طبق جزئیات زیر نشان می‌دهد.

b545c808b366341a.png

پس از استقرار پیش‌بینی آنلاین در پروژه گوگل کلود، موارد استفاده زیر بررسی خواهد شد:

دسترسی عمومی به پیش‌بینی آنلاین شامل موارد زیر است:

  • یک نمونه GCE (nat-client) ایجاد کنید که از NAT برای دسترسی به اینترنت خروجی استفاده کند.
  • استفاده از CURL برای استنتاج بر اساس مدل
  • از TCPDUMP برای تأیید دسترسی به پیش‌بینی آنلاین از طریق یک VIP عمومی استفاده کنید

دسترسی خصوصی به پیش‌بینی آنلاین، شامل موارد زیر است:

  • یک مدل را در نقطه پایانی پیش‌بینی آنلاین aVertex در پروژه مستقر کنید
  • یک نقطه پایانی اتصال سرویس خصوصی (Googleapis) در aiml-vpc ایجاد کنید
  • آدرس IP PSC را از طریق روتر ابری به عنوان یک تبلیغ سفارشی به VPC داخلی ارسال کنید.
  • یک نمونه GCE (private-client) ایجاد کنید و فایل etc/hosts را با IP نقطه پایانی PSC به‌روزرسانی کنید.
  • استفاده از CURL برای استنتاج بر اساس مدل
  • استفاده از TCPDUMP برای تأیید اینکه پیش‌بینی آنلاین از طریق آدرس IP نقطه پایانی PSC قابل دسترسی است

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

  • نحوه ایجاد یک نقطه پایانی اتصال سرویس خصوصی
  • نحوه‌ی تبلیغ IP نقطه پایانی PSC از طریق روتر ابری
  • نحوه استفاده از TCPDUMP برای اعتبارسنجی دسترسی پیش‌بینی آنلاین، چه عمومی و چه خصوصی

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

  • پروژه ابری گوگل

مجوزهای IAM

مدیر شبکه محاسباتی

ویرایشگر فهرست خدمات

مدیر DNS

مدیر شبکه

مدیر سهمیه

مدیر نوت‌بوک‌ها

کاربر حساب کاربری سرویس

مدیر ذخیره‌سازی

کاربر هوش مصنوعی ورتکس

مدیر حساب کاربری سرویس

۲. قبل از شروع

پروژه را برای پشتیبانی از آموزش به‌روزرسانی کنید

این آموزش از متغیرها (variables) برای کمک به پیاده‌سازی پیکربندی gcloud در Cloud Shell استفاده می‌کند.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

۳. فعال کردن سرویس‌ها

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable iam.googleapis.com 
gcloud services enable compute.googleapis.com 
gcloud services enable notebooks.googleapis.com

۴. تنظیمات aiml-vpc

ایجاد aiml-vpc

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

زیرشبکه نوت‌بوک مدیریت‌شده توسط کاربر را ایجاد کنید

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

پیکربندی روتر ابری و NAT

در آموزش دانلود بسته‌های نرم‌افزاری نوت‌بوک از Cloud NAT استفاده شده است، زیرا نمونه نوت‌بوک مدیریت‌شده توسط کاربر، آدرس IP خارجی ندارد. Cloud NAT همچنین قابلیت‌های egress NAT را ارائه می‌دهد، به این معنی که میزبان‌های اینترنتی مجاز به برقراری ارتباط با نوت‌بوک مدیریت‌شده توسط کاربر نیستند و این امر آن را ایمن‌تر می‌کند.

درون Cloud Shell، روتر ابری منطقه‌ای را ایجاد کنید.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

درون Cloud Shell، دروازه‌ی منطقه‌ای cloud nat را ایجاد کنید.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

۵. راه‌اندازی vpc روی سرور مجازی

ایجاد سرور مجازی آماده (on-prem-vpc)

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

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

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1

زیرشبکه خصوصی-ip-را ایجاد کنید

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1

پیکربندی روتر ابری و NAT

در این آموزش از Cloud NAT برای دانلود بسته‌های نرم‌افزاری استفاده شده است. Cloud NAT همچنین قابلیت‌های egress NAT را ارائه می‌دهد، به این معنی که میزبان‌های اینترنتی مجاز به برقراری ارتباط با کامپیوتر نیستند و این امر امنیت آن را افزایش می‌دهد.

درون Cloud Shell، روتر ابری منطقه‌ای را ایجاد کنید.

gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1

درون Cloud Shell، دروازه‌ی منطقه‌ای cloud nat را ایجاد کنید.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

۶. نقطه پایانی اتصال سرویس خصوصی را ایجاد کنید

در بخش بعدی، یک نقطه پایانی Private Service Connect (PSC) ایجاد خواهید کرد که برای دسترسی به Vertex API از on-prem-vpc استفاده خواهد شد. آدرس IP PSC با شناسه ۱۰۰.۱۰۰.۱۰.۱۰ در مرحله بعدی از aiml-vpc-cloud-router-vpn به عنوان یک روتر سفارشی به شبکه داخلی ارسال خواهد شد.

از پوسته ابری

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

ایجاد نقطه پایانی PSC

از پوسته ابری

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

نقاط پایانی پیکربندی‌شده‌ی Private Service Connect را فهرست کنید

از پوسته ابری

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

نقاط پایانی پیکربندی شده Private Service Connect را شرح دهید

از پوسته ابری

gcloud compute forwarding-rules describe \
    pscvertex --global

۷. اتصال ترکیبی

در بخش بعدی، شما یک روتر ابری ایجاد خواهید کرد که به شما امکان می‌دهد با استفاده از پروتکل دروازه مرزی (BGP) به صورت پویا مسیرها را بین ابر خصوصی مجازی (VPC) و شبکه همتا تبادل کنید.

روتر ابری می‌تواند یک جلسه BGP را از طریق یک تونل VPN ابری برای اتصال شبکه‌های شما راه‌اندازی کند. این روتر به طور خودکار محدوده آدرس‌های IP زیرشبکه جدید را یاد می‌گیرد و آنها را به شبکه همکار شما اعلام می‌کند.

در این آموزش، شما HA VPN را بین aiml-vpc و on-prem-vpc مستقر خواهید کرد.

ایجاد دروازه HA VPN برای aiml-vpc

وقتی هر دروازه ایجاد می‌شود، دو آدرس IPv4 خارجی به طور خودکار اختصاص داده می‌شود، یکی برای هر رابط دروازه.

درون Cloud Shell، دروازه HA VPN را ایجاد کنید

gcloud compute vpn-gateways create aiml-vpn-gw \
   --network=aiml-vpc\
   --region=us-central1

ایجاد دروازه HA VPN برای vpc موجود

وقتی هر دروازه ایجاد می‌شود، دو آدرس IPv4 خارجی به طور خودکار اختصاص داده می‌شود، یکی برای هر رابط دروازه. این آدرس‌های IP را یادداشت کنید تا بعداً در مراحل پیکربندی از آنها استفاده کنید.

درون Cloud Shell، دروازه HA VPN را ایجاد کنید.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

اعتبارسنجی ایجاد دروازه HA VPN

با استفاده از کنسول، به مسیر HYBRID CONNECIVITY → VPN → CLOUD VPN GATEWAYS بروید و تأیید کنید که IPهای دروازه ایجاد شده‌اند.

۶۶۳۱۲b1b53c233d7.png

ایجاد روتر ابری برای aiml-vpc

درون Cloud Shell، روتر ابری واقع در us-central1 را ایجاد کنید.

gcloud compute routers create aiml-cr-us-central1 \
   --region=us-central1 \
   --network=aiml-vpc\
   --asn=65001

ایجاد روتر ابری برای vpc آماده

درون Cloud Shell، روتر ابری واقع در us-central1 را ایجاد کنید.

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

ایجاد تونل‌های VPN برای aiml-vpc

شما دو تونل VPN روی هر دروازه HA VPN ایجاد خواهید کرد.

ایجاد تونل VPN0

درون Cloud Shell، tunnel0 را ایجاد کنید:

gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 0

ایجاد تونل VPN1

درون Cloud Shell، تونل ۱ را ایجاد کنید:

gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 1

ایجاد تونل‌های VPN برای on-prem-vpc

شما دو تونل VPN روی هر دروازه HA VPN ایجاد خواهید کرد.

ایجاد تونل VPN0

درون Cloud Shell، tunnel0 را ایجاد کنید:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

ایجاد تونل VPN1

درون Cloud Shell، تونل ۱ را ایجاد کنید:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

اعتبارسنجی ایجاد تونل VPN

با استفاده از کنسول، به مسیر HYBRID CONNECIVITY → VPN → CLOUD VPN TUNNELS بروید.

e8e13ebaed09f1.png

۸. ایجاد همسایه‌های BGP

ایجاد جلسات BGP

در این بخش، رابط‌های Cloud Router و همتایان BGP را پیکربندی می‌کنید.

ایجاد یک رابط BGP و peering برای aiml-vpc

درون Cloud Shell، رابط BGP را ایجاد کنید:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel0 \
    --region us-central1

درون Cloud Shell، همتای BGP را ایجاد کنید:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

درون Cloud Shell، رابط BGP را ایجاد کنید:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel1 \
    --region us-central1

درون Cloud Shell، همتای BGP را ایجاد کنید:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

ایجاد یک رابط BGP و peering برای on-prem-vpc

درون Cloud Shell، رابط BGP را ایجاد کنید:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-aiml-vpc\
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

درون Cloud Shell، همتای BGP را ایجاد کنید:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel0 \
    --interface if-tunnel1-to-aiml-vpc\
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

درون Cloud Shell، رابط BGP را ایجاد کنید:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-aiml-vpc\
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

درون Cloud Shell، همتای BGP را ایجاد کنید:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel1\
    --interface if-tunnel2-to-aiml-vpc\
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

برای مشاهده جزئیات تونل VPN به Hybrid CONNECIVITY → VPN بروید.

cb91b4476a88acd3.png

اعتبارسنجی مسیرهای آموخته‌شده توسط aiml-vpc از طریق HA VPN

با استفاده از کنسول، به مسیر زیر بروید: شبکه VPC → شبکه‌های VPC → aiml-vpc → مسیرها → منطقه → US-CENTRAL1 → مشاهده

مشاهده کنید که aiml-vpc مسیرهایی را از nat-subnet و private-ip-subnet مربوط به on-prem-vpc یاد گرفته است.

f407ed6e1a6233db.png

تأیید کنید که on-prem-vpc زیرشبکه میز کار را از طریق HA-VPN یاد گرفته است

با استفاده از کنسول، به مسیر VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW بروید.

7957e5d898a9e7e0.png

۹. ایجاد تبلیغات مسیر سفارشی aiml-vpc

IP نقطه پایانی سرویس خصوصی Connect به طور خودکار توسط روتر ابری aiml-cr-us-central1 اعلام نمی‌شود زیرا زیرشبکه در VPC پیکربندی نشده است.

در عوض، شما باید یک اعلان مسیر سفارشی از روتر ابری aiml-cr-us-central برای آدرس IP نقطه پایانی 100.100.10.10 ایجاد کنید که از طریق BGP به محیط داخلی و به سرور مجازی داخلی ارسال خواهد شد.

از کنسول به مسیر HYBRID CONNECIVITY → CLOUD ROUTERS → aiml-cr-us-central1 بروید، سپس گزینه EDIT را انتخاب کنید.

c8fb02ed59a5b068.png

در بخش مسیرهای تبلیغ‌شده، گزینه ایجاد مسیرهای سفارشی را انتخاب کنید، فیلدها را بر اساس مثال زیر به‌روزرسانی کنید، انجام شد را انتخاب کنید و سپس روی ذخیره کلیک کنید.

5996464e3aae0665.png

f799082ab2cd7e31.png

اعتبارسنجی

تأیید کنید که on-prem-vpc آدرس IP نقطه پایانی PSC را از طریق HA-VPN یاد گرفته است

با استفاده از کنسول، به مسیر VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW بروید.

۱b42673e6f940bf2.png

۱۰. تبلیغات مسیر سفارشی را در-prem-vpc ایجاد کنید

روتر ابری on-prem-vpc به طور پیش‌فرض همه زیرشبکه‌ها را تبلیغ می‌کند، اما فقط زیرشبکه private-ip مورد نیاز است.

در بخش بعدی، اعلان‌های مسیر را از روتر ابری on-prem-cr-us-central1 به‌روزرسانی کنید.

از کنسول به مسیر HYBRID CONNECIVITY → CLOUD ROUTERS → on-prem-cr-us-central1 بروید، سپس گزینه EDIT را انتخاب کنید.

bd96bde9550d516a.png

در بخش مسیرهای تبلیغ‌شده، گزینه ایجاد مسیرهای سفارشی را انتخاب کنید، فیلدها را بر اساس مثال زیر به‌روزرسانی کنید، انجام شد را انتخاب کنید و سپس روی ذخیره کلیک کنید.

f8b61f669a9cfeef.png

اعتبارسنجی

تأیید کنید که aiml-vpc مسیر private-ip-subnet را از on-prem-vpc یاد گرفته است.

با استفاده از کنسول، به مسیر VPC network → VPC networks → aiml-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW بروید.

2b1a7a5f918e9f50.png

۱۱. یک حساب کاربری مدیریت‌شده توسط کاربر (GCE Instances) ایجاد کنید

برای ارائه سطح مناسبی از کنترل بر API ورتکس، یک حساب کاربری مدیریت‌شده توسط کاربر مورد نیاز است که به نمونه‌های کلاینت nat و private اعمال خواهد شد. پس از ایجاد، مجوزهای حساب کاربری سرویس را می‌توان بر اساس الزامات تجاری تغییر داد. در این آموزش، حساب کاربری مدیریت‌شده توسط کاربر، vertex-sa، نقش‌های زیر را اعمال خواهد کرد:

قبل از ادامه، باید API حساب سرویس (Service Account API) را .

در داخل Cloud Shell، حساب کاربری سرویس را ایجاد کنید.

gcloud iam service-accounts create gce-vertex-sa \
    --description="service account for vertex" \
    --display-name="gce-vertex-sa"

درون Cloud Shell، حساب کاربری سرویس را با نقش مدیر نمونه محاسبه به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

درون Cloud Shell، حساب کاربری سرویس را با نقش Vertex AI User به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

۱۲. یک حساب کاربری مدیریت‌شده توسط کاربر (Notebook) ایجاد کنید

در بخش بعدی، یک حساب کاربری مدیریت‌شده توسط کاربر ایجاد خواهید کرد که با Vertex Workbench (نوت‌بوک) مورد استفاده در آموزش مرتبط خواهد بود.

در این آموزش، حساب کاربری سرویس نقش‌های زیر را خواهد داشت:

در داخل Cloud Shell، حساب کاربری سرویس را ایجاد کنید.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

در داخل Cloud Shell، حساب کاربری سرویس را با نقش Storage Admin به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

در داخل Cloud Shell، حساب کاربری سرویس را با نقش Vertex AI User به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

در داخل Cloud Shell، حساب کاربری سرویس را با نقش Artifact Registry Admin به‌روزرسانی کنید.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

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

gcloud iam service-accounts list

۱۳. نمونه‌های آزمایشی را ایجاد کرد

در بخش زیر، نمونه‌های آزمایشی ایجاد خواهید کرد تا روش‌های مختلف برای دستیابی به APIهای Vertex را اعتبارسنجی کنید، به طور خاص:

  • این نمونه، nat-client, از Cloud NAT برای حل Vertex AI استفاده خواهد کرد و از این رو به نقطه پایانی پیش‌بینی آنلاین از طریق اینترنت دسترسی پیدا خواهد کرد.
  • این نمونه، private-client ، از IP اتصال سرویس خصوصی ۱۰۰.۱۰۰.۱۰.۱۰ برای دسترسی به نقطه پایانی پیش‌بینی آنلاین از طریق HA-VPN استفاده خواهد کرد.

درون Cloud Shell، نمونه‌ی nat-client را ایجاد کنید.

gcloud compute instances create nat-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=nat-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

درون Cloud Shell، نمونه‌ی private-client را ایجاد کنید.

gcloud compute instances create private-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=private-ip-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

برای اینکه به Identity-Aware Proxy (IAP) اجازه اتصال به ماشین‌های مجازی خود را بدهید ، یک قانون فایروال ایجاد کنید که:

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

در داخل Cloud Shell، قانون فایروال IAP را ایجاد کنید.

gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
    --network on-prem-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

۱۴. یک دفترچه یادداشت مدیریت‌شده توسط کاربر ایجاد کنید

API نوت‌بوک

در بخش بعدی، یک دفترچه یادداشت مدیریت‌شده توسط کاربر ایجاد کنید که حساب سرویس قبلاً ایجاد شده، یعنی user-managed-notebook-sa، را در خود جای دهد.

درون Cloud Shell، نمونه‌ی کلاینت خصوصی را ایجاد کنید.

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

۱۵. مدل و پیش‌بینی آنلاین را مستقر کنید

در بخش بعدی، از codelab ارائه شده، Vertex AI:Use custom prediction routine with Sklearn، برای پیش‌پردازش و پس‌پردازش داده‌ها برای پیش‌بینی‌ها استفاده کنید، زیرا شما در مرحله قبل یک دفترچه یادداشت ایجاد کرده‌اید. پس از استقرار مدل، برای شروع بخش بعدی به آموزش برگردید.

ee68b7ba0cfd2746.png

۱۶. اعتبارسنجی دسترسی به API ورتکس از طریق اینترنت

در بخش بعدی، شما به instance و nat-client وارد می‌شوید و اتصال به Vertex AI را از طریق dig و tcpdump در دامنه us-central1-aiplatform.googleapis.com که برای حل APIهای Vertex استفاده می‌شود، اعتبارسنجی خواهید کرد.

با استفاده از IAP در Cloud Shell وارد nat-client شوید تا اتصال به Vertex API را با انجام یک بررسی در دامنه vertex به آدرس us-central1-aiplatform.googleapis.com تأیید کنید.

gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

حفاری را اجرا کنید.

dig us-central1-aiplatform.googleapis.com

به عنوان مثال، به IP های عمومی در پاسخ DNS توجه کنید.

user@nat-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE  rcvd: 322

از سیستم عامل nat-client، دستور tcpdump را برای اعتبارسنجی DNS هنگام اجرای curl در برابر پیش‌بینی آنلاین اجرا کنید.

 sudo tcpdump -i any port 53 -n

مثال:

user@nat-client:~$ sudo tcpdump -i any port 53 -n 
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes

با انتخاب "+" یک ترمینال Cloud Shell جدید باز کنید. پس از باز شدن تب جدید، متغیر نام پروژه را به‌روزرسانی کنید.

درون Cloud Shell، متغیر نام پروژه را به‌روزرسانی کنید.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

درون Cloud Shell دو، یک نمونه ssh به nat-client اجرا کنید.

gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"

در بخش بعدی، با استفاده از ویرایشگر sudo VI یا nano یک فایل instances.json ایجاد خواهید کرد و رشته داده مورد استفاده برای به دست آوردن پیش‌بینی از مدل پیاده‌سازی شده را در آن وارد خواهید کرد.

از سیستم عامل nat-client، یک فایل instances.json با رشته داده زیر ایجاد کنید:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

مثال:

user@nat-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@nat-client:$

شناسه نقطه پایانی پیش‌بینی آنلاین خود را از Cloud Console دریافت کنید که در مراحل بعدی استفاده خواهد شد.

به VERTEX AI → پیش‌بینی آنلاین بروید

237d413ccde1e95b.png

از سیستم عامل nat-client، متغیرهای زیر را ایجاد کنید:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

مثال:

ENDPOINT_ID="3328226095324463104"

از سیستم عامل nat-client، یک curl انجام دهید تا پاسخی از مدل دریافت کنید.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

به عنوان مثال، به پیش‌بینی موفقیت‌آمیز توجه کنید.

user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}

۱۷. اعتبارسنجی - دسترسی اینترنتی به API ورتکس

حالا که پیش‌بینی را اجرا کردید، بیایید نگاهی به نتایج TCPDUMP (ترمینال ۱) بیندازیم که نشان می‌دهد نمونه nat-client (192.168.10.2) در حال انجام یک پرس‌وجوی DNS به سرور DNS محلی ۱۶۹.۲۵۴.۱۶۹.۲۵۴ برای دامنه Vertex AI به نام us-central1-aiplatform.googleapis.com است. نتیجه پرس‌وجوی DNS، آدرس‌های IP مجازی عمومی (VIPS) برای APIهای Vertex هستند که در زیر ذکر شده است:

user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)

۱۸. فعال کردن دسترسی خصوصی به APIهای Vertex

در بخش بعدی، شما با استفاده از Private Service Connect از طریق شبکه ترکیبی (HA VPN) به APIهای Vertex دسترسی خواهید داشت تا به صورت خصوصی به پیش‌بینی آنلاین برسید. در مثالی که در آموزش استفاده شده است، فایل /etc/hosts را در نمونه private-client به‌روزرسانی خواهید کرد.

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

به عنوان مثال، نقطه پایانی psc که در این آموزش ایجاد شده است، pscvertex نام دارد که به pscvertex.p.googleapis.com ترجمه می‌شود. هنگام استفاده از نقطه پایانی برای vertex، FQDN را به سرویس مثلاً us-central1-aiplatform-pscvertex.p.googleapis.com اضافه کنید.

به‌روزرسانی DNS داخلی با نقطه پایانی PSC همچنین نیاز به بازسازی برنامه‌های محلی برای فراخوانی FDQN دارد، مثلاً us-central1-aiplatform-pscvertex.p.googleapis.com به جای نقطه پایانی عمومی بومی us-central1-aiplatform.googleapis.com .

کلاینت‌هایی که می‌توانند برای استفاده از یک نقطه پایانی سفارشی پیکربندی شوند، می‌توانند از نام‌های DNS p.googleapis.com برای ارسال درخواست به یک نقطه پایانی استفاده کنند.

برای اطلاعات مربوط به پیکربندی آن برای استفاده از نقاط پایانی سفارشی، به مستندات مربوط به کلاینت یا کتابخانه کلاینت خود مراجعه کنید. برای مثال:

  • پایتون: می‌توانید api_endpoint را در کلاس Client options در پکیج google-api-core پیکربندی کنید.
  • برو: شما می‌توانید WithEndpoint را در بسته گزینه‌های Client در بسته api پیکربندی کنید.
  • gcloud: می‌توانید api_endpoint_overrides را پیکربندی کنید

با انتخاب "+" یک ترمینال Cloud Shell جدید باز کنید. پس از باز شدن تب جدید، متغیر نام پروژه را به‌روزرسانی کنید.

از کلود شل.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

با استفاده از IAP در یک Cloud Shell جدید، وارد حساب کاربری خصوصی خود شوید تا اتصال به Vertex API را با انجام یک بررسی در دامنه‌ی vertex به آدرس us-central1-aiplatform.googleapis.com تأیید کنید.

از Cloud Shell، وارد نمونه سیستم عامل کلاینت خصوصی شوید.

gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

حفاری را اجرا کنید.

dig us-central1-aiplatform.googleapis.com

به عنوان مثال، به IP های عمومی بر اساس پاسخ DNS توجه کنید.

user@private-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5

با استفاده از ویرایشگر sudo VI یا nano، نمونه private-client /etc/hosts را به‌روزرسانی کنید تا یک رکورد از Vertext AI FQDN به آدرس us-central1-aiplatform.googleapis.com ایجاد شود که به نقطه پایانی PSC با آدرس ۱۰۰.۱۰۰.۱۰.۱۰ اشاره می‌کند، نیازی به تغییرات بیشتر نیست.

مثال:

user@private-client:~$ more /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

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

ping us-central1-aiplatform.googleapis.com

برای مثال، PING آدرس IP نقطه پایانی PSC را برمی‌گرداند، اما هیچ پاسخی انتظار نمی‌رود.

user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.

از سیستم عامل کلاینت خصوصی، tcpdump را اجرا کنید تا هنگام انجام curl در برابر پیش‌بینی آنلاین، اعتبارسنجی DNS resolution و مسیر داده IP به نقطه پایانی PSC را انجام دهید.

 sudo tcpdump -i any port 53 -n or host 100.100.10.10

با انتخاب "+" چهارمین ترمینال Cloud Shell را باز کنید. پس از باز شدن تب جدید، متغیر نام پروژه را به‌روزرسانی کنید.

درون Cloud Shell، متغیر نام پروژه را به‌روزرسانی کنید.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

درون Cloud Shell 4، یک ssh به نمونه کلاینت خصوصی انجام دهید.

gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"

در بخش بعدی، با استفاده از ویرایشگر sudo VI یا nano یک فایل instances.json ایجاد خواهید کرد و رشته داده مورد استفاده برای به دست آوردن پیش‌بینی از مدل پیاده‌سازی شده را در آن وارد خواهید کرد.

از سیستم عامل private-client، یک فایل instances.json با رشته داده زیر ایجاد کنید:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

مثال:

user@private-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@private-client:$

از سیستم عامل private-client، متغیرهای زیر را ایجاد کنید:

gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

مثال:

ENDPOINT_ID="3328226095324463104"

از سیستم عامل کلاینت خصوصی در Cloud Shell شماره چهار، یک curl انجام دهید تا پاسخی از مدل دریافت کنید.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

۱۹. اعتبارسنجی - دسترسی خصوصی به API ورتکس

از سیستم عامل کلاینت خصوصی در Cloud Shell شماره چهار، توجه داشته باشید که از IP نقطه پایانی PSC (100.100.10.10) برای دسترسی به Vertex API استفاده شده است.

user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: May 29 08:21:36 2023 GMT
*  expire date: Aug 21 08:21:35 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

از ترمینال TCPDUMP در Cloud Shell 3، می‌توانیم تأیید کنیم که جستجوی DNS برای us-central1-aiplatform.googleapis.com مشاهده نشده است زیرا فایل /etc/host اولویت داشته است، اما آدرس IP PSC 100.100.10.10 در مسیر داده استفاده شده است.

user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341

شما با موفقیت اتصال به پیش‌بینی آنلاین را از طریق یک نقطه پایانی عمومی از طریق اینترنت و به صورت خصوصی با استفاده از شبکه ترکیبی و اتصال سرویس خصوصی (googleapis) تأیید کردید. از سیستم عامل خارج شوید و به اعلان Cloud Shell برگردید.

۲۰. تمیز کردن

از Cloud Shell، اجزای آموزشی را حذف کنید.

gcloud compute forwarding-rules delete pscvertex --global --quiet

gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet 

gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet 

gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet

gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet

gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet

gcloud compute networks subnets delete nat-subnet  private-ip-subnet --region=us-central1 --quiet

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute networks delete aiml-vpc --quiet

حذف اجزای رأس

برای حذف تصویر کانتینر، به Artifact Registry بروید، مخزنی را که ایجاد کرده‌اید انتخاب کنید و Delete را انتخاب کنید.

616a3108bc2e48c8.png

برای حذف Storage Bucket، با استفاده از منوی ناوبری در Cloud Console خود، به Storage بروید، Bucket خود را انتخاب کنید و روی Delete کلیک کنید:

eddd1f9fdfaede8.png

مدل را از نقطه پایانی غیرفعال کنید. به Vertex AI بروید → پیش‌بینی آنلاین → Diamonds-cpr_endpoint را انتخاب کنید → مدل را از نقطه پایانی غیرفعال کنید → غیرفعال کنید

bc95f092d21d4698.png

مدل را حذف کنید. به Vertex AI → Model Registry → Delete Model بروید.

ec4afff091e11606.png

نقطه پایانی پیش‌بینی آنلاین را حذف کنید. به VertexAI بروید → پیش‌بینی آنلاین → diamonds-cpr_endpoint را انتخاب کنید → نقطه پایانی را حذف کنید

7453760299bdfb9a.png

۲۱. تبریک

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

شما یک کلاینت nat-client و یک کلاینت private-client ایجاد کردید و از TCPDUMP برای اعتبارسنجی آدرس‌های IP مورد استفاده برای دسترسی به APIهای Vertex استفاده کردید. علاوه بر این، در مورد Private Service Connect (googleapis) و نحوه استفاده از آن برای جداسازی برنامه‌های داخلی و چند ابری با استفاده از یک نقطه پایانی PSC مشتری، مطالبی آموختید.

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

e6d3675ca7c6911f.jpeg

بعدش چی؟

به برخی از این آموزش‌ها نگاهی بیندازید...

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

اسناد مرجع