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.

ما ستنشئه
ستُعدّ شبكة سحابة VPC باسم on-prem-vpc لتمثيل بيئة محلية. في عملية النشر، لن يكون هناك on-prem-vpc، بل سيتم استخدام الشبكات المختلطة للوصول إلى مركز البيانات داخل الشركة أو مقدّم خدمات السحابة الإلكترونية.
ستنشئ بنية شاملة لخدمة Private Service Connect توضّح كيفية الوصول إلى "التوقّع على الإنترنت" بشكل علني من خلال Cloud NAT وبشكل خاص باستخدام PSC عبر شبكة HA VPN وفقًا للتفاصيل الواردة أدناه.

بعد نشر التوقّعات على الإنترنت في مشروع 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
أذونات "إدارة الهوية وإمكانية الوصول"
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 للبوابة.

إنشاء 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 على السحابة الإلكترونية.

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.

التحقّق من صحة المسارات التي تم التعرّف عليها في aiml-vpc عبر HA VPN
باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → aiml-vpc → مسارات → المنطقة → US-CENTRAL1 → عرض.
لاحظ أنّ aiml-vpc قد تعلّم مسارات من on-prem-vpc nat-subnet وprivate-ip-subnet

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

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، ثمّ انقر على تعديل.

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

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

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

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

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

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

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

من نظام تشغيل 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 لإرسال الطلبات إلى نقطة نهاية.
راجِع المستندات الخاصة بالعميل أو مكتبة العميل للحصول على معلومات حول كيفية ضبطها لاستخدام نقاط نهاية مخصّصة. على سبيل المثال:
- Python: يمكنك ضبط api_endpoint في فئة خيارات العميل في حزمة google-api-core.
- انتقِل إلى: يمكنك ضبط WithEndpoint في حزمة خيارات العميل في حزمة واجهة برمجة التطبيقات.
- gcloud: You can configure api_endpoint_overrides
افتح نافذة طرفية جديدة في 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، واختَر المستودع الذي أنشأته، ثم انقر على حذف.

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

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

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

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

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

ما هي الخطوات التالية؟
يمكنك الاطّلاع على بعض هذه البرامج التعليمية...
مزيد من المعلومات والفيديوهات
- نظرة عامة على Private Service Connect
- ما هي خدمة Private Service Connect؟
- كيفية الحصول على توقّعات من نموذج تعلُّم آلي
- ما هي منصة Vertex AI؟
