وصول Vertex AI إلى نقاط نهاية التوقّع على الإنترنت بشكل خاص باستخدام PSC

1. مقدمة

يمكن للمضيفين المحليين الوصول إلى خدمة "التوقّع على الإنترنت" بشكلٍ أصلي من خلال الإنترنت العام (الخيار 1) أو باستخدام الشبكة الافتراضية الخاصة (VPN) على Cloud أو Cloud Interconnect مع Private Service Connect (PSC) (الخيار 2) من شبكتك المحلية، وكلاهما يوفّر تشفير SSL/TLS. يكون الاتصال المختلط بالخدمة التوقعية على الإنترنت عبر الربط البيني أفضل أداءً من الإنترنت، لذا يُنصح به للتطبيقات المهمة كما هو موضّح في الشكل 1.

في هذا البرنامج التعليمي، سنوضّح كيفية استخدام شبكة High-Availability VPN‏ (HA VPN) للوصول إلى خدمة "التوقّع على الإنترنت" بشكل خاص بين شبكتَي VPC يمكن أن تشكّلا أساسًا للاتصال الخاص المتعدد السحابة الإلكترونية والمحلي.

يُرجى العِلم أنّ خدمة "التوقّع على الإنترنت" في Vertex هي نقطة نهاية عامة، لذا عليك تقييد إمكانية الوصول باستخدام "عناصر التحكّم في خدمة السحابة الافتراضية الخاصة" (VPC-SC) لإنشاء حدود آمنة تسمح بالوصول إلى Vertex وGoogleapis الأخرى أو تحظره. لا يغطّي هذا الدليل التعليمي عناصر التحكّم في خدمة سحابة VPC، وللمزيد من التفاصيل، يُرجى الرجوع إلى مقالة عناصر التحكّم في خدمة سحابة VPC مع Vertex AI.

24a07ba49a7bcb16.png

ما ستنشئه

ستُعدّ شبكة سحابة VPC باسم on-prem-vpc لتمثيل بيئة محلية. في عملية النشر، لن يكون هناك on-prem-vpc، بل سيتم استخدام الشبكات المختلطة للوصول إلى مركز البيانات داخل الشركة أو مقدّم خدمات السحابة الإلكترونية.

ستنشئ بنية شاملة لخدمة Private Service Connect توضّح كيفية الوصول إلى "التوقّع على الإنترنت" بشكل علني من خلال Cloud NAT وبشكل خاص باستخدام PSC عبر شبكة HA VPN وفقًا للتفاصيل الواردة أدناه.

b545c808b366341a.png

بعد نشر التوقّعات على الإنترنت في مشروع Google Cloud، سيتم استكشاف حالات الاستخدام التالية:

يتألف الوصول العام إلى التوقعات على الإنترنت مما يلي:

  • إنشاء مثيل GCE (nat-client) يستفيد من NAT للوصول إلى الإنترنت
  • استخدام CURL لإجراء استنتاج مقابل النموذج
  • استخدِم TCPDUMP للتأكّد من إمكانية الوصول إلى التوقّع على الإنترنت من خلال عنوان IP افتراضي عام

يتألف الوصول الخاص إلى التوقّع على الإنترنت مما يلي:

  • تفعيل نموذج في نقطة نهاية للتوقّع على الإنترنت في Vertex في المشروع
  • إنشاء نقطة نهاية Private Service Connect (Googleapis) في aiml-vpc
  • تصدير عنوان IP الخاص بخدمة PSC عبر Cloud Router كإعلان مخصّص إلى شبكة VPC المحلية
  • إنشاء آلة افتراضية على GCE (العميل الخاص) وتعديل ملف etc/hosts باستخدام عنوان IP لنقطة نهاية PSC
  • استخدام CURL لإجراء استنتاج مقابل النموذج
  • استخدِم TCPDUMP للتحقّق من إمكانية الوصول إلى التوقّع على الإنترنت من خلال عنوان IP لنقطة نهاية PSC

ما ستتعلمه

  • كيفية إنشاء نقطة نهاية Private Service Connect
  • كيفية الإعلان عن عنوان IP لنقطة نهاية PSC عبر Cloud Router
  • كيفية استخدام TCPDUMP للتحقّق من صحة إذن الوصول إلى "التوقّع على الإنترنت"، سواء كان عامًا أو خاصًا

المتطلبات

  • مشروع Google Cloud

أذونات "إدارة الهوية وإمكانية الوصول"

مشرف شبكة Cloud Compute

محرّر دليل الخدمات

مشرف نظام أسماء النطاقات

مشرف الشبكة

مشرف الحصص

مشرف دفاتر الملاحظات

مستخدم حساب الخدمة

مشرف مساحة التخزين

مستخدم Vertex AI

مشرف حساب الخدمة

2. قبل البدء

تعديل المشروع ليتوافق مع البرنامج التعليمي

يستخدِم هذا البرنامج التعليمي $variables للمساعدة في تنفيذ عملية إعداد gcloud في Cloud Shell.

داخل Cloud Shell، اتّبِع الخطوات التالية:

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

3- تمكين الخدمات

داخل 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

‫4. إعداد 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

إعداد Cloud Router وNAT

يتم استخدام Cloud NAT في البرنامج التعليمي لتنزيل حِزم برامج دفتر الملاحظات لأنّ مثيل دفتر الملاحظات المُدار من قِبل المستخدم لا يتضمّن عنوان IP خارجيًا. توفّر خدمة Cloud NAT أيضًا إمكانات NAT للخروج، ما يعني أنّه لا يُسمح لمضيفي الإنترنت ببدء التواصل مع دفتر ملاحظات يديره المستخدم، ما يجعلها أكثر أمانًا.

داخل Cloud Shell، أنشئ موجّه السحابة الإقليمي.

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

داخل Cloud Shell، أنشئ بوابة 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

‫5. إعداد شبكة VPC المحلية

إنشاء on-prem-vpc

داخل Cloud Shell، اتّبِع الخطوات التالية:

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

إنشاء nat-subnet

داخل 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

إعداد Cloud Router وNAT

يتم استخدام Cloud NAT في البرنامج التعليمي لتنزيل حِزم البرامج. توفّر خدمة Cloud NAT أيضًا إمكانات NAT للخروج، ما يعني أنّه لا يُسمح لمضيفي الإنترنت ببدء التواصل مع الحوسبة، ما يجعلها أكثر أمانًا.

داخل Cloud Shell، أنشئ موجّه السحابة الإقليمي.

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

داخل Cloud Shell، أنشئ بوابة 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

6. إنشاء نقطة نهاية Private Service Connect

في القسم التالي، ستنشئ نقطة نهاية Private Service Connect (PSC) التي سيتم استخدامها للوصول إلى Vertex API من on-prem-vpc. سيتم الإعلان عن عنوان IP الخاص بخدمة PSC، وهو 100.100.10.10، من aiml-vpc-cloud-router-vpn كإعلان مخصّص عن جهاز التوجيه إلى الشبكة المحلية في خطوة قادمة.

من Cloud Shell

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

إنشاء نقطة نهاية PSC

من Cloud Shell

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

عرض نقاط نهاية Private Service Connect التي تم إعدادها

من Cloud Shell

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

وصف نقاط نهاية Private Service Connect التي تم ضبطها

من Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

7. الاتصال المختلط

في القسم التالي، ستنشئ Cloud Router يتيح لك تبادل المسارات بشكل ديناميكي بين شبكتك الخاصة الافتراضية (VPC) وشبكة النظراء باستخدام بروتوكول Border Gateway Protocol (BGP).

يمكن لخدمة Cloud Router إعداد جلسة BGP عبر نفق Cloud 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 لشبكة on-prem-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 CONNECTIVITY) → شبكة VPN ‏(VPN) → بوابات Cloud VPN ‏(CLOUD VPN GATEWAYS) وتأكَّد من إنشاء عناوين IP للبوابة.

66312b1b53c233d7.png

إنشاء Cloud Router لشبكة aiml-vpc

داخل Cloud Shell، أنشئ جهاز توجيه Cloud Router يقع في us-central1

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

إنشاء Cloud Router لشبكة VPC المحلية

داخل Cloud Shell، أنشئ جهاز توجيه Cloud Router يقع في 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، أنشئ النفق 1:

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 لشبكة 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، أنشئ النفق 1:

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

باستخدام وحدة التحكّم، انتقِل إلى الاتصال المختلط → شبكة VPN → اتصالات نفقية لشبكة VPN على السحابة الإلكترونية.

e8e13ebaed09f1.png

8. إنشاء أجهزة BGP مجاورة

إنشاء جلسات BGP

في هذا القسم، يمكنك ضبط إعدادات واجهات Cloud Router ونظراء BGP.

إنشاء واجهة BGP وتبادل معلومات بين الشبكات لشبكة 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 وتبادل معلومات بين الشبكات لشبكة 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

انتقِل إلى الاتصال المختلط (Hybrid CONNECTIVITY) → شبكة VPN لعرض تفاصيل الاتصال النفقي بشبكة VPN.

cb91b4476a88acd3.png

التحقّق من صحة المسارات التي تم التعرّف عليها في aiml-vpc عبر HA VPN

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → aiml-vpc → مسارات → المنطقة → US-CENTRAL1 → عرض.

لاحظ أنّ aiml-vpc قد تعلّم مسارات من on-prem-vpc nat-subnet وprivate-ip-subnet

f407ed6e1a6233db.png

تحقَّق من أنّ on-prem-vpc قد تعلّم workbench-subnet عبر HA-VPN

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → on-prem-vpc → مسارات → المنطقة → US-CENTRAL1 → عرض

7957e5d898a9e7e0.png

9- إنشاء إعلانات مخصّصة للمسارات aiml-vpc

لا يتم الإعلان تلقائيًا عن عنوان IP لنقطة نهاية Private Service Connect من خلال موجّه السحابة aiml-cr-us-central1 لأنّه لم يتم إعداد الشبكة الفرعية في السحابة الافتراضية الخاصة (VPC).

بدلاً من ذلك، عليك إنشاء إعلان مسار مخصّص من موجّه السحابة aiml-cr-us-central لعنوان IP لنقطة النهاية 100.100.10.10 الذي سيتم الإعلان عنه للبيئة المحلية عبر بروتوكول BGP إلى on-prem-vpc.

من وحدة التحكّم، انتقِل إلى HYBRID CONNECTIVITY → CLOUD ROUTERS → aiml-cr-us-central1، ثمّ انقر على تعديل.

c8fb02ed59a5b068.png

في قسم "المسارات المُعلَن عنها"، اختَر الخيار إنشاء مسارات مخصّصة، وعدِّل الحقول استنادًا إلى المثال أدناه، ثم اختَر تم، وانقر على حفظ.

5996464e3aae0665.png

f799082ab2cd7e31.png

التحقّق من الصحة

تأكَّد من أنّ on-prem-vpc قد تعرّف على عنوان IP لنقطة نهاية PSC عبر HA-VPN

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → on-prem-vpc → مسارات → المنطقة → US-CENTRAL1 → عرض

1b42673e6f940bf2.png

10. إنشاء إعلانات مسار مخصّصة على on-prem-vpc

يعلن موجّه السحابة الإلكترونية on-prem-vpc عن جميع الشبكات الفرعية تلقائيًا، ولكن لا يلزم سوى الشبكة الفرعية لعنوان IP الخاص.

في القسم التالي، عدِّل إعلانات المسار من موجّه السحابة الإلكترونية on-prem-cr-us-central1.

من وحدة التحكّم، انتقِل إلى الاتصال المختلط (HYBRID CONNECTIVITY) → أجهزة توجيه السحابة الإلكترونية (CLOUD ROUTERS) → on-prem-cr-us-central1، ثمّ انقر على تعديل (EDIT).

bd96bde9550d516a.png

في قسم "المسارات المُعلَن عنها"، اختَر الخيار إنشاء مسارات مخصّصة، وعدِّل الحقول استنادًا إلى المثال أدناه، ثم اختَر تم، وانقر على حفظ.

f8b61f669a9cfeef.png

التحقّق من الصحة

تأكَّد من أنّ aiml-vpc قد تعلّمت مسار الشبكة الفرعية الخاصة لعناوين IP من on-prem-vpc.

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → aiml-vpc → مسارات → المنطقة → US-CENTRAL1 → عرض

2b1a7a5f918e9f50.png

11. إنشاء حساب خدمة يديره المستخدم (مثيلات GCE)

لتوفير مستوى دقيق من التحكّم في Vertex API، يجب توفير حساب خدمة يديره المستخدم وسيتم تطبيقه على مثيلات NAT والعملاء الخاصين. بعد إنشاء أذونات حساب الخدمة، يمكن تعديلها استنادًا إلى متطلبات النشاط التجاري. في البرنامج التعليمي، سيتم تطبيق الأدوار التالية على حساب الخدمة الذي يديره المستخدم، vertex-sa:

يجب واجهة برمجة التطبيقات لحساب الخدمة قبل المتابعة.

داخل Cloud Shell، أنشئ حساب الخدمة.

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

في Cloud Shell، عدِّل حساب الخدمة باستخدام دور مشرف مثيل Compute

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".

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

12. إنشاء حساب خدمة يديره المستخدم (دفتر ملاحظات)

في القسم التالي، ستنشئ حساب خدمة يديره المستخدم وسيتم ربطه بـ Vertex Workbench (Notebook) المستخدَم في البرنامج التعليمي.

في البرنامج التعليمي، سيتم تطبيق الأدوار التالية على حساب الخدمة:

داخل Cloud Shell، أنشئ حساب الخدمة.

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

داخل Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مشرف التخزين".

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".

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".

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

13. تم إنشاء مثيلات الاختبار

في القسم التالي، ستنشئ مثيلات اختبار للتحقّق من صحة الطرق المختلفة للوصول إلى واجهات برمجة تطبيقات Vertex، وتحديدًا:

  • ستستخدم الآلة الافتراضية nat-client, خدمة Cloud NAT لحلّ Vertex AI، وبالتالي الوصول إلى نقطة نهاية "التوقّع على الإنترنت" عبر الإنترنت.
  • سيستخدم الجهاز الظاهري، private-client، عنوان IP الخاص بخدمة Private Service Connect‏ 100.100.10.10 للوصول إلى نقطة نهاية Online Prediction عبر HA-VPN.

أنشئ مثيل nat-client داخل Cloud Shell.

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"

أنشئ مثيل private-client داخل Cloud Shell.

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

14. إنشاء دفتر ملاحظات يديره المستخدم

واجهة برمجة التطبيقات لدفتر الملاحظات

في القسم التالي، أنشئ دفتر ملاحظات مُدارًا من قِبل المستخدم يتضمّن حساب الخدمة الذي تم إنشاؤه سابقًا، 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

15. تفعيل النموذج والتوقّع على الإنترنت

في القسم التالي، استخدِم الدرس التطبيقي حول الترميزVertex AI:استخدام إجراءات توقّع مخصّصة مع Sklearn للمعالجة السابقة واللاحقة للبيانات بهدف إجراء التوقّعات، وابدأ بالقسم 7 لأنّك أنشأت دفتر ملاحظات في الخطوة السابقة. بعد نشر النموذج، ارجع إلى البرنامج التعليمي لبدء القسم التالي.

ee68b7ba0cfd2746.png

16. التحقّق من إمكانية الوصول إلى Vertex API عبر الإنترنت

في القسم التالي، ستسجّل الدخول إلى الجهاز الظاهري nat-client، وتتحقّق من إمكانية الاتصال بخدمة Vertex AI من خلال استخدام dig وtcpdump مع النطاق us-central1-aiplatform.googleapis.com المستخدَم لحلّ مشاكل واجهات Vertex API.

سجِّل الدخول إلى nat-client باستخدام IAP في Cloud Shell للتحقّق من إمكانية الاتصال بواجهة Vertex API من خلال تنفيذ عملية dig على نطاق Vertex us-central1-aiplatform.googleapis.com.

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

نفِّذ الأمر dig.

dig us-central1-aiplatform.googleapis.com

على سبيل المثال، لاحظ عناوين IP العامة في استجابة نظام أسماء النطاقات.

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 للتحقّق من التحويل باستخدام نظام أسماء النطاقات عند تنفيذ 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 2، نفِّذ عملية SSH إلى مثيل nat-client.

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

في القسم التالي، ستنشئ ملف instances.json باستخدام محرّر sudo VI أو nano وتُدرج سلسلة البيانات المستخدَمة للحصول على نتيجة توقّعية من النموذج الذي تم نشره.

من نظام التشغيل 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 → ONLINE PREDICTION

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"
}

17. التحقّق من صحة الوصول إلى الإنترنت من خلال Vertex API

بعد تنفيذ التوقّع، لنلقِ نظرة على نتائج TCPDUMP (في الوحدة الطرفية 1) التي تشير إلى أنّ مثيل nat-client (192.168.10.2) ينفّذ طلب بحث لنظام أسماء النطاقات إلى خادم نظام أسماء النطاقات المحلي 169.254.169.254 لنطاق Vertex AI us-central1-aiplatform.googleapis.com. نتائج طلب بحث لنظام أسماء النطاقات هي عناوين IP افتراضية عامة (VIPS) لواجهات Vertex API كما هو موضّح أدناه:

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)

18 تفعيل الوصول الخاص إلى واجهات برمجة التطبيقات في Vertex

في القسم التالي، ستتمكّن من الوصول إلى واجهات Vertex API باستخدام Private Service Connect عبر شبكة مختلطة (HA VPN) للوصول بشكل خاص إلى التوقّع على الإنترنت. في المثال المستخدَم في البرنامج التعليمي، ستعدّل الملف /etc/hosts في الجهاز الظاهري الخاص بالعميل.

في بيئة محلية، يكون تعديل ملف /etc/hosts على جهاز واحد أو عدد قليل من الأجهزة لأغراض الاختبار مناسبًا، ولكن في بيئات الإنتاج والبيئات الكبيرة، يكون إنشاء منطقة إعادة توجيه جديدة باستخدام الاسم المؤهّل بالكامل لنقطة نهاية PSC أكثر ملاءمةً.

على سبيل المثال، تُسمى نقطة نهاية الخدمة الخاصة التي تم إنشاؤها في البرنامج التعليمي pscvertex، ويتم تحويلها إلى pscvertex.p.googleapis.com عند استخدام نقطة النهاية لـ Vertex، أضِف اسم النطاق المؤهّل بالكامل مع الخدمة، مثلاً us-central1-aiplatform-pscvertex.p.googleapis.com.

يتطلّب تعديل نظام أسماء النطاقات (DNS) المحلي باستخدام نقطة نهاية Private Service Connect أيضًا إعادة تصميم التطبيقات المحلية لاستدعاء اسم النطاق المؤهّل بالكامل (FDQN)، مثل us-central1-aiplatform-pscvertex.p.googleapis.com بدلاً من نقطة النهاية العامة الأصلية us-central1-aiplatform.googleapis.com.

يمكن للعملاء الذين يمكن إعدادهم لاستخدام نقطة نهاية مخصّصة استخدام أسماء نظام أسماء النطاقات p.googleapis.com لإرسال الطلبات إلى نقطة نهاية.

راجِع المستندات الخاصة بالعميل أو مكتبة العميل للحصول على معلومات حول كيفية ضبطها لاستخدام نقاط نهاية مخصّصة. على سبيل المثال:

افتح نافذة طرفية جديدة في Cloud Shell من خلال النقر على "+". بعد فتح علامة التبويب الجديدة، عدِّل متغيّر اسم المشروع.

من Cloud Shell

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

سجِّل الدخول إلى private-client باستخدام IAP في Cloud Shell جديد للتحقّق من إمكانية الاتصال بواجهة Vertex API من خلال تنفيذ dig على نطاق Vertex us-central1-aiplatform.googleapis.com

من Cloud Shell، سجِّل الدخول إلى مثيل نظام التشغيل الخاص بالعميل الخاص.

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

نفِّذ الأمر dig.

dig us-central1-aiplatform.googleapis.com

على سبيل المثال، لاحظ عناوين IP العامة استنادًا إلى استجابة نظام أسماء النطاقات.

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

عدِّل مثيل العميل الخاص /etc/hosts باستخدام محرِّر sudo VI أو nano لإنشاء سجلّ لاسم المجال المؤهّل بالكامل (FQDN) الخاص بـ Vertex AI ‏us-central1-aiplatform.googleapis.com يشير إلى نقطة نهاية PSC ‏100.100.10.10، ولا يلزم إجراء أي تغييرات أخرى.

مثال:

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 إلى نقطة نهاية Vertex 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 للتحقّق من صحة التحويل باستخدام نظام أسماء النطاقات (DNS) ومسار بيانات بروتوكول الإنترنت إلى نقطة نهاية Private Service Connect عند تنفيذ curl مقابل خدمة "التوقّع على الإنترنت".

 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 إلى مثيل private-client.

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

في القسم التالي، ستنشئ ملف instances.json باستخدام محرّر sudo VI أو nano وتُدرج سلسلة البيانات المستخدَمة للحصول على نتيجة توقّعية من النموذج الذي تم نشره.

من نظام التشغيل الخاص بالعميل، أنشئ ملف 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:$

من نظام التشغيل الخاص بالعميل الخاص، أنشئ المتغيّرات التالية:

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

مثال:

ENDPOINT_ID="3328226095324463104"

من نظام التشغيل الخاص بالعميل في Cloud Shell 4، نفِّذ طلب 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

19. التحقّق من صحة الوصول الخاص إلى Vertex API

من نظام التشغيل الخاص بالعميل الخاص في Cloud Shell 4، لاحظ أنّه تم استخدام عنوان 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 الخاص بخدمة Private Service Connect‏ (PSC) وهو 100.10.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

لقد تمكّنت بنجاح من التحقّق من إمكانية الاتصال بالتوقّع على الإنترنت من خلال نقطة نهاية عامة عبر الإنترنت وبشكل خاص باستخدام الشبكات المختلطة وخدمة Private Service Connect (googleapis). الخروج من نظام التشغيل والرجوع إلى طلب Cloud Shell

20. تَنظيم

من 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

حذف مكوّنات Vertex

لحذف صورة الحاوية، انتقِل إلى Artifact Registry، واختَر المستودع الذي أنشأته، ثم انقر على حذف.

616a3108bc2e48c8.png

لحذف حزمة التخزين، استخدِم قائمة التنقّل في Cloud Console، وانتقِل إلى "مساحة التخزين"، واختَر الحزمة، ثم انقر على حذف:

eddd1f9fdfaede8.png

إلغاء تفعيل النموذج من نقطة النهاية انتقِل إلى Vertex AI → التوقّع على الإنترنت → اختَر diamonds-cpr_endpoint → إلغاء نشر النموذج من نقطة النهاية → إلغاء النشر

bc95f092d21d4698.png

احذف النموذج. انتقِل إلى Vertex AI → سجلّ النماذج → حذف النموذج

ec4afff091e11606.png

احذف نقطة نهاية "التوقّع على الإنترنت". انتقِل إلى VertexAI → التوقّع على الإنترنت → اختيار diamonds-cpr_endpoint → حذف نقطة النهاية

7453760299bdfb9a.png

21. تهانينا

تهانينا، لقد نجحت في إعداد عملية الاتصال بخدمة "التوقّع على الإنترنت" والتحقّق من صحتها بشكلٍ أصلي باستخدام الإنترنت وبشكلٍ خاص باستخدام خدمة Private Service Connect والشبكة المختلطة.

أنشأت nat-client وprivate-client واستخدمت TCPDUMP للتحقّق من صحة عناوين IP المستخدَمة للوصول إلى واجهات Vertex API. بالإضافة إلى ذلك، تعرّفت على خدمة Private Service Connect‏ (googleapis) وكيفية استخدامها لعزل التطبيقات المحلية والتطبيقات المتعددة السحابة الإلكترونية من خلال الاستفادة من نقطة نهاية PSC للعميل.

تعتقد Cosmopup أنّ الفيديوهات التعليمية رائعة!!

e6d3675ca7c6911f.jpeg

ما هي الخطوات التالية؟

يمكنك الاطّلاع على بعض هذه البرامج التعليمية...

مزيد من المعلومات والفيديوهات

المستندات المرجعية