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

لمحة عن هذا الدرس التطبيقي حول الترميز
schedule145 دقيقة
subjectتاريخ التعديل الأخير: 7 سبتمبر 2023
account_circleتأليف: Deepak Michael

يمكن للمضيفين داخل المؤسسة الوصول إلى "توقّع على الإنترنت" محليًّا من خلال الإنترنت المتاح للجميع (الخيار 1) أو باستخدام شبكة VPN أو Cloud Interconnect مع "ربط الخدمة الخاصة" (PSC) (الخيار 2) من شبكتك داخل المؤسسة، ويوفِّر كلاهما تشفير طبقة المقابس الآمنة (SSL)/بروتوكول أمان طبقة النقل (TLS). تعد الاتصال المختلط بالتنبؤ عبر الإنترنت أكثر فعالية من الإنترنت، وبالتالي يوصى به للتطبيقات المهمة كما هو موضح في الشكل 1.

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

ملاحظة: ميزة Vertex Online توقُّع هي نقطة نهاية عامة، لذلك عليك حظر الوصول باستخدام عناصر التحكّم في خدمة سحابة VPC (VPC-SC) لإنشاء عوامل محيطة آمنة للسماح بالوصول إلى Vertex وواجهات Google APIs الأخرى أو منعهم. لا يتناول هذا الدليل التوجيهي عناصر التحكّم في سحابة VPC-SC. لمزيد من التفاصيل، يُرجى الرجوع إلى مقالة VPC Service Controls with Vertex AI

24a07ba49a7bcb16.png

ما الذي ستقوم ببنائه

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

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

b545c808b366341a.png

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

يتكوّن الوصول العام إلى التنبؤ عبر الإنترنت مما يلي:

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

يتكوّن الوصول الخاص إلى التنبؤ عبر الإنترنت مما يلي:

  • نشر نموذج لنقطة نهاية التوقّع على الإنترنت aVertex في المشروع
  • إنشاء نقطة نهاية لـ Private Service Connect (Googleapis) في intentl-vpc
  • صدِّر عنوان IP لخدمة PSC باستخدام جهاز التوجيه السحابي كإعلان مخصّص إلى شبكة VPC داخل الشركة.
  • إنشاء مثيل GCE (عميل خاص) وتعديل ملف etc/hosts باستخدام عنوان IP لنقطة النهاية PSC
  • استخدام CURL للاستنتاج وفقًا للنموذج
  • استخدِم بروتوكول TCPDUMP للتحقّق من أنّه يتم الوصول إلى التوقّع على الإنترنت من خلال عنوان IP لنقطة نهاية PSC

المعلومات التي ستطّلع عليها

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

المتطلبات

  • مشروع Google Cloud

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

Compute Network Admin

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

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

مشرف الشبكة

مشرف الحصة

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

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

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

مستخدم 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. إعدادiml-vpc

إنشاء ملف intentl-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

يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في البرنامج التعليمي لعمليات تنزيل حزمة برامج الكمبيوتر الدفتري لأنّ مثيل الدفتر الذي يديره المستخدم ليس له عنوان IP خارجي. توفّر ترجمة عنوان الشبكة في السحابة الإلكترونية أيضًا إمكانات ترجمة عنوان الشبكة (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

إنشاء Private-ip-subnet

داخل 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 في البرنامج التعليمي لتنزيل حزم البرامج. كما توفّر ترجمة عنوان الشبكة في السحابة الإلكترونية إمكانات ترجمة عنوان الشبكة (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 من campaignl-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. الاتصال المختلَط

في القسم التالي، ستنشئ "جهاز توجيه السحابة الإلكترونية" الذي يمكّنك من تبادل المسارات ديناميكيًا بين السحابة الإلكترونية الخاصة الافتراضية (VPC) وشبكة التطبيقات المشابهة باستخدام بروتوكول بوابة الحدود (BGP).

يمكن لجهاز Cloud Router إعداد جلسة بروتوكول BGP من خلال نفق VPN على السحابة الإلكترونية للاتصال بشبكاتك. تتعرّف هذه الميزة تلقائيًا على نطاقات عناوين IP الجديدة للشبكة الفرعية وتعلِنها إلى شبكة أقرانك.

في الدليل التعليمي، ستنشر شبكة VPN عالية التوفّر بين aiml-vpc وon-prem-vpc.

إنشاء مدخل شبكة VPN الخاص ببروتوكول HA aiml-vpc

عند إنشاء كل مدخل، يتم تلقائيًا تخصيص عنوانين خارجيين من عناوين IPv4، حيث يتم تخصيص عنوانين لكل واجهة مدخل.

داخل Cloud Shell، يمكنك إنشاء مدخل شبكة VPN العالية الدقة.

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

يمكنك إنشاء مدخل شبكة VPN الخاص بآلية HA on-prem-vpc.

عند إنشاء كل مدخل، يتم تلقائيًا تخصيص عنوانين خارجيين من عناوين IPv4، حيث يتم تخصيص عنوانين لكل واجهة مدخل. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الضبط.

داخل Cloud Shell، أنشئ مدخل شبكة VPN العالية الدقة.

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

التحقّق من إنشاء مدخل شبكة VPN العالية الدقة

باستخدام وحدة التحكّم، انتقِل إلى HYBRID CONNECTIVITY ← شبكة VPN ← CLOUD VPN GATEWAYS وتأكّد من إنشاء عناوين IP للمدخل.

66312b1b53c233d7.png

إنشاء Cloud Router لـ intentl-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 لـ intentl-vpc

ستحتاج إلى إنشاء نفقَين لشبكة VPN على كل مدخل شبكة VPN الخاص بشبكة HA.

إنشاء نفق شبكة VPN 0

داخل Cloud Shell، أنشئ نفقًا 0:

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

إنشاء نفق 1 لشبكة VPN

داخل 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 لـ on-prem-vpc

ستحتاج إلى إنشاء نفقَين لشبكة VPN على كل مدخل شبكة VPN الخاص بشبكة HA.

إنشاء نفق شبكة VPN 0

داخل Cloud Shell، أنشئ نفقًا 0:

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

إنشاء نفق 1 لشبكة VPN

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

باستخدام وحدة التحكّم، انتقِل إلى HYBRID CONNECTIVITY ← شبكة VPN ← CLOUD VPN TUNNELS.

e8e13ebaed09f1.png

8. إنشاء جيران لـ BGP

إنشاء جلسات BGP

في هذا القسم، يمكنك ضبط واجهات Cloud Router وأقران BGP.

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

انتقِل إلى الاتصال المختلط ← شبكة VPN للاطّلاع على تفاصيل الاتصال النفقي الخاص بشبكة VPN.

cb91b4476a88acd3.png

التحقّق من صحة المسارات التي تم تعلُّمها-vpc من خلال شبكة VPN العالية الدقة

باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← intentl-vpc← المسارات ← المنطقة ← US-CENTRAL1 ← عرض

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

f407ed6e1a6233db.png

التحقّق من أنّ on-prem-vpc قد تعرَّف على شبكة العمل الفرعية من خلال HA-VPN

باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← on-prem-vpc ← المسارات ← Region ← US-CENTRAL1 ← عرض

7957e5d898a9e7e0.png

9. إنشاء إعلانات مسارات مخصصة لتحسين vpc

لا يتم الإعلان تلقائيًا عن عنوان IP لنقطة نهاية اتصال الخدمة الخاصة من خلال جهاز التوجيه المستنِد إلى السحابة الإلكترونية targetl-cr-us-central1 بسبب عدم ضبط الشبكة الفرعية في شبكة VPC.

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

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

c8fb02ed59a5b068.png

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

5996464e3aae0665.png

f799082ab2cd7e31.png

التحقّق

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

باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← on-prem-vpc ← المسارات ← Region ← US-CENTRAL1 ← عرض

1b42673e6f940bf2.png

10. أنشِئ إعلانات مسارات مخصّصة على الإنترنت في مقر الشركة

يعلن جهاز توجيه السحابة الإلكترونية on-prem-vpc عن جميع الشبكات الفرعية تلقائيًا، ولكن لا يلزم سوى توفر شبكة Private-ip-subnet فقط.

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

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

bd96bde9550d516a.png

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

f8b61f669a9cfeef.png

التحقّق

تحقق من أن targetl-vpc قد تعلم مسار Private-ip-subnet من on-prem-vpc.

باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← intentl-vpc ← المسارات ← منطقة ← US-CENTRAL1 ← عرض.

2b1a7a5f918e9f50.png

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

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

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

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

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

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

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

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

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

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، Private Service Connect IP 100.100.10.10 للوصول إلى نقطة نهاية "التوقّع على الإنترنت" عبر شبكة 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 (IAP) بالاتصال بمثيلات الأجهزة الافتراضية، أنشئ قاعدة جدار حماية تعمل على:

  • ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
  • يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.

داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.

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. إنشاء ورقة ملاحظات يديرها المستخدم

واجهة notebook 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

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

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

ee68b7ba0cfd2746.png

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

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

سجِّل الدخول إلى nat-client باستخدام الشراء داخل التطبيق في Cloud Shell للتحقّق من إمكانية الاتصال بواجهة برمجة تطبيقات Vertex API من خلال إجراء بحث في النطاق الرأسي 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 العامة في استجابة نظام أسماء النطاقات.

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 للتحقق من صحة تحليل نظام أسماء النطاقات عند إجراء ربط بالربط في خوارزمية "التوقع على الإنترنت".

 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"

في القسم التالي، ستقوم بإنشاء ملف exit.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 ← التنبؤ على الإنترنت.

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 -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 عبر الإنترنت

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

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

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

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

على سبيل المثال، تُسمّى نقطة نهاية psc التي تم إنشاؤها في الدليل التوجيهي pscvertex ويتم ترجمتها إلى pscvertex.p.googleapis.com، وعند استخدام نقطة النهاية لـ Verx، تُلحق FQDN (اسم المجال المؤهل بالكامل) بالخدمة، مثل us-central1-aiplatform-pscvertex.p.googleapis.com.

إنّ تحديث نظام أسماء النطاقات داخل المؤسسة باستخدام نقطة نهاية PSC يتطلب أيضًا إعادة ضبط التطبيقات المحلية لاستدعاء رقم 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

سجِّل الدخول إلى حساب العميل الخاص باستخدام ميزة الشراء داخل التطبيق في Cloud Shell الجديد للتحقّق من إمكانية الاتصال بواجهة برمجة تطبيقات Vertex API من خلال إجراء بحث في النطاق الرئيسي 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 العامة استنادًا إلى استجابة نظام أسماء النطاقات.

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 لإنشاء سجل لـ Vertext AI FQDN 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) ومسار بيانات 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"

في القسم التالي، ستقوم بإنشاء ملف places.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 أربعة، يمكنك إجراء ربط للحصول على استجابة من النموذج.

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

من نظام التشغيل الخاص للعميل في Cloud Shell الرابع، يُرجى ملاحظة أنّه تم استخدام عنوان IP لنقطة نهاية PSC (100.100.10.10) للوصول إلى واجهة برمجة تطبيقات Vertex.

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 رقم ثلاثة، يمكننا التحقّق من عدم ملاحظة بحث نظام أسماء النطاقات إلى 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.

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 ← إلغاء نشر النموذج من نقطة النهاية ← Undeploy

bc95f092d21d4698.png

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

ec4afff091e11606.png

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

7453760299bdfb9a.png

21. تهانينا

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

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

يعتبر تطبيق Cosmopup الفيديوهات التعليمية رائعة.

e6d3675ca7c6911f.jpeg

الخطوات التالية

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

تعزيز القراءة الفيديوهات

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