1. مقدمة
Private Service Connect لواجهات Google APIs (PSC) هي إحدى إمكانات الربط الشبكي في Google Cloud التي تتيح للمستخدمين إعداد وصول خاص من خلال نقطة نهاية عامة لعنوان IP خاص ضمن شبكة VPC. بالنسبة إلى المستخدمين الذين يشغّلون الرموز أو تطبيقات من جهة العميل في بيئة مختلطة مرتبطة بخدمة Google Cloud من خلال شبكة VPN أو Interconnect، يتم استخدام PSC لحلّ مشاكل Google APIs عبر هذا الاتصال المختلط الخاص.
يمكن أن تحلّ خدمة PSC الخاصة بواجهات Google APIs العديد من النطاقات المختلفة، ويمكن الاطّلاع على القائمة الكاملة هنا. النطاق الذي تستخدمه معظم واجهات Google API هو <API>.googleapis.com. بالإضافة إلى هذا النطاق، يوفّر PSC للمستخدمين أيضًا إصدارًا من googleapis.com وهو <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com. وباستخدام هذا النطاق، يمكن للمستخدمين إعداد التطبيقات لاستخدام نقاط نهاية PSC معيّنة. تتيح حالة الاستخدام الأكثر شيوعًا للمستخدمين اختيار التطبيقات التي تستخدم نقطة نهاية PSC لتوجيه زيارات Google API عبر الاتصال المختلط، مع السماح للتطبيقات الأخرى بمواصلة توجيه الزيارات إلى نقطة نهاية واجهة برمجة التطبيقات العامة.
يصنّف Gemini ضمن مجموعة منتجات Vertex AI في Google Cloud، وهو مدرَج في قائمة واجهات Google APIs التي يمكن حلّها باستخدام PSC لواجهات Google APIs.
في هذا الدرس العملي، ستنشئ بيئة مختلطة محاكاة، وتستضيف مثيل Workbench محليًا، وتنفّذ رمز Gemini Python الذي يصل إلى Gemini API بشكل خاص عبر شبكة HA VPN، ويتصل بنقطة نهاية PSC لواجهات Google APIs.
ما ستتعلمه
- أنشئ "مركزًا للشبكة السحابية المحلية".
- إعداد أجهزة Spoke في شبكة VPC في مركز NCC
- أنشئ شبكة Cloud HA VPN.
- ضبط Hybrid Spokes في مركز NCC
- أنشئ نقطة نهاية Private Service Connect لواجهات Google APIs.
- ضبط مسار مخصّص عبر HA-VPN
- إعداد منطقة ربط نظام أسماء النطاقات
- ضبط مثيل Vertex Workbench
- إعداد رمز Python في Gemini لاستخدام Private Service Connect (PSC) لنقطة نهاية Google APIs API.
المتطلبات
- مشروع Google Cloud لديه أذونات "المالك" أو "المحرّر" الكاملة
2. بنية الدرس التطبيقي حول الترميز
في هذا الدرس العملي، ستستخدم Google Cloud لمحاكاة بيئة مختلطة. ستتضمّن هذه التجربة العملية خطوات خاصة بـ Google Cloud وستكون مختلفة إذا تم إعدادها من بيئة محلية حقيقية. سيتم توضيح هذه الخطوات.
ستنشئ مركز NCC يحتوي على شبكة VPC للتوجيه كشبكة VPC فرعية. في شبكة VPC هذه، سيتم إعداد HA-VPN لشبكة VPC المحلية، ما يحاكي بيئة محلية. سيتم إعداد HA-VPN كمركز Hybrid Spoke في مركز NCC. في شبكة VPC المحلية، ستنشئ شبكة فرعية سيتم استضافة مثيل Workbench فيها. ستنشئ أيضًا خدمة Cloud NAT لاستخدامها في تنزيل الحِزم على مثيل Workbench.
أخيرًا، ستنشئ منطقة ربط DNS للسحابة الإلكترونية الافتراضية الخاصة (VPC) المحلية لتتمكّن من استخدام منطقة Service Directory الخاصة لـ p.googleapis.com التي تنشئها خدمة Private Service Connect (PSC) تلقائيًا لواجهات Google APIs.
3- الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- معرّف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم
PROJECT_ID
). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:
لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. ليس عليك تثبيت أي تطبيق.
4. قبل البدءالمدة: 2:00
تفعيل واجهات برمجة التطبيقات
داخل Cloud Shell، تأكَّد من إعداد مشروعك بشكلٍ صحيح واضبط متغيّرات البيئة.
من Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
فعِّل جميع واجهات Google APIs الضرورية في المشروع.
من Cloud Shell
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com gcloud services enable notebooks.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable aiplatform.googleapis.com
5- إنشاء شبكات VPC وشبكات فرعيةالمدة: 5:00
إنشاء شبكات
من Cloud Shell
gcloud compute networks create routing-vpc \ --subnet-mode=custom
من Cloud Shell
gcloud compute networks create onprem-vpc \ --subnet-mode=custom gcloud compute networks subnets create onprem-$region-subnet \ --network=onprem-vpc \ --range=10.0.0.0/24 \ --region=$region --enable-private-ip-google-access
إنشاء أجهزة توجيه Cloud Router وCloud NAT
أنشئ جهاز توجيه Cloud Router سيتم استخدامه مع شبكة HA VPN في شبكة VPC للتوجيه.
من Cloud Shell
gcloud compute routers create routing-$region-cr \ --network=routing-vpc \ --region=$region \ --asn=64512
أنشئ Cloud Router سيتم استخدامه مع HA VPN في onprem-vpc.
من Cloud Shell
gcloud compute routers create onprem-$region-cr \ --network=onprem-vpc \ --region=$region \ --asn=64513
أنشئ جهاز توجيه Cloud Router سيتم استخدامه مع Cloud NAT في onprem-vpc.
من Cloud Shell
gcloud compute routers create onprem-$region-cr-4nat \ --network=onprem-vpc \ --region=$region
سيتم استخدام Cloud NAT في onprem-vpc لتنزيل الحِزم إلى مثيل Vertex AI Workbench الذي سيتم إعداده في خطوة لاحقة.
من Cloud Shell
gcloud compute routers nats create onprem-$region-nat \ --router=onprem-$region-cr-4nat \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
6. إنشاء Cloud HA-VPNDuration: 7:00
أنشئ بوابات VPN.
من Cloud Shell
gcloud compute vpn-gateways create routing-gateway \ --network=routing-vpc \ --region=$region \ --stack-type=IPV4_ONLY
من Cloud Shell
gcloud compute vpn-gateways create onprem-gateway \ --network=onprem-vpc \ --region=$region \ --stack-type=IPV4_ONLY
أنشئ أنفاق VPN مصدرها routing-vpc.
من Cloud Shell
gcloud compute vpn-tunnels create routing-to-onprem-tunnel0 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=0 gcloud compute vpn-tunnels create routing-to-onprem-tunnel1 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=1
أنشئ أنفاق VPN مصدرها onprem-vpc.
من Cloud Shell
gcloud compute vpn-tunnels create onprem-to-routing-tunnel0 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=0 gcloud compute vpn-tunnels create onprem-to-routing-tunnel1 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=1
إعداد جلسات BGP للنفقَين اللذين ينشآن من routing-vpc
من Cloud Shell
gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface0 \ --ip-address=169.254.0.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp0 \ --interface=routing-interface0 \ --peer-ip-address=169.254.0.2 \ --peer-asn=64513 \ --region=$region gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface1 \ --ip-address=169.254.1.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp1 \ --interface=routing-interface1 \ --peer-ip-address=169.254.1.2 \ --peer-asn=64513 \ --region=$region
إعداد جلسات BGP للنفقَين اللذين ينشآن من onprem-vpc
من Cloud Shell
gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface0 \ --ip-address=169.254.0.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp0 \ --interface=onprem-interface0 \ --peer-ip-address=169.254.0.1 \ --peer-asn=64512 \ --region=$region gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface1 \ --ip-address=169.254.1.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp1 \ --interface=onprem-interface1 \ --peer-ip-address=169.254.1.1 \ --peer-asn=64512 \ --region=$region
انتقِل إلى صفحة "اتصال الشبكة" > "شبكة VPN" في وحدة التحكّم وتأكَّد من ضبط أنفاق HA-VPN وجلسات BGP بشكلٍ صحيح.
7. ضبط إعدادات "مركز NCC" و"النقاط المحورية"Duration:10:00
إنشاء مركز NCC
من Cloud Shell
gcloud network-connectivity hubs create ncc-hub \ --project="$project" \ --preset-topology="mesh"
إنشاء مواقع فرعية في NCC
تتطلّب NCC gcloud أن يتم ضبط جميع المواقع الفرعية باستخدام أسماء مسارات كاملة أو معرّفات موارد موحّدة (URI).
من Cloud Shell
gcloud compute networks describe routing-vpc
دوِّن المسار الكامل (URI) لشبكة VPC الخاصة بالتوجيه من أجل الأمر التالي.
مثال على الناتج
autoCreateSubnetworks: false creationTimestamp: '2025-08-20T11:13:42.233-07:00' id: 'xxx' kind: compute#network name: routing-vpc networkFirewallPolicyEnforcementOrder: AFTER_CLASSIC_FIREWALL routingConfig: bgpBestPathSelectionMode: LEGACY routingMode: REGIONAL selfLink: https://www.googleapis.com/compute/v1/projects/$project/global/networks/routing-vpc selfLinkWithId: https://www.googleapis.com/compute/v1/projects/$project/global/networks/355666541188722361 x_gcloud_bgp_routing_mode: REGIONAL x_gcloud_subnet_mode: CUSTOM
ضبط شبكة VPC الفرعية الخاصة بالتوجيه
من Cloud Shell
gcloud network-connectivity spokes linked-vpc-network create routing-vpc \ --hub=ncc-hub \ --vpc-network=projects/$project/global/networks/routing-vpc \ --global
من Cloud Shell
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region
دوِّن المسارات الكاملة (معرّفات الموارد الموحّدة) لأنفاق شبكة VPN التي مصدرها routing-vpc.
مثال على الناتج
creationTimestamp: '2025-08-20T11:33:37.494-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel0 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.54.166 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel0 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 0 creationTimestamp: '2025-08-20T11:33:41.829-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel1 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.246.117 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel1 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 1
من Cloud Shell
gcloud network-connectivity spokes linked-vpn-tunnels create $region-vpn-spoke \ --hub=ncc-hub \ --vpn-tunnels=projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel0,projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel1 \ --region=$region
تأكَّد من إعداد جميع الأجهزة الطرفية بشكل صحيح قبل المتابعة.
من Cloud Shell
gcloud network-connectivity hubs list-spokes ncc-hub
مثال على الناتج
NAME: routing-vpc GROUP: default PROJECT: $project LOCATION: global TYPE: VPC_NETWORK STATE: ACTIVE STATE REASON: ETAG: 2 NAME: us-central1-vpn-spoke GROUP: default PROJECT: $project LOCATION: us-central1 TYPE: VPN_TUNNEL STATE: ACTIVE STATE REASON: ETAG:
8. إعداد Private Service Connect لواجهات Google APIsDuration: 5:00
يتم إنشاء نقاط نهاية PSC لواجهات برمجة تطبيقات Google من عناوين IP عالمية لا تقع في شبكة فرعية إقليمية لشبكة VPC. يجب حجز عنوان IP العام تحديدًا لغرض PRIVATE_SERVICE_CONNECT.
من Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.100.100.0 \ --network=routing-vpc
من Cloud Shell
gcloud compute forwarding-rules create psc4googep \ --global \ --network=routing-vpc \ --address=psc-ip \ --target-google-apis-bundle=all-apis \ --service-directory-registration=projects/$project/locations/$region
من Cloud Shell
gcloud compute routers update routing-$region-cr \ --project=$project \ --region=$region \ --advertisement-mode custom \ --set-advertisement-groups=ALL_SUBNETS \ --set-advertisement-ranges=10.100.100.0/32
من Cloud Shell
gcloud dns managed-zones create peeringzone \ --description="dns peer onprem to routing" \ --dns-name=p.googleapis.com \ --networks=onprem-vpc \ --target-network=routing-vpc \ --target-project=$project \ --visibility=private
9- إعداد مثيل Vertex WorkbenchDuration: 5:00
أنشئ حساب خدمة لاستخدامه في تحديد هوية مثيل Workbench.
من Cloud Shell
gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
دوِّن الاسم الكامل لحساب الخدمة ومنحه الإذن aiplatform.admin لتنفيذ طلبات إلى Vertex AI أو Gemini.
من Cloud Shell
gcloud iam service-accounts list
مثال على الناتج
DISPLAY NAME: Compute Engine default service account EMAIL: xxx-compute@developer.gserviceaccount.com DISABLED: False DISPLAY NAME: workbench-sa EMAIL: workbench-sa@$project.iam.gserviceaccount.com DISABLED: False
تأكَّد من استبدال <your-project-id> برقم تعريف مشروعك الفعلي. لا يمكننا استخدام المتغير $project هنا بسبب علامات الاقتباس المطلوبة.
من Cloud Shell
gcloud projects add-iam-policy-binding $project --member='serviceAccount:workbench-sa@<your-project-id>.iam.gserviceaccount.com' --role='roles/aiplatform.admin' --condition=None
من Cloud Shell
gcloud workbench instances create workbench-$region --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --location=$region-a --network=projects/$project/global/networks/onprem-vpc --subnet=projects/$project/regions/$region/subnetworks/onprem-$region-subnet --subnet-region=$region --disable-public-ip --service-account-email=workbench-sa@$project.iam.gserviceaccount.com
قد يستغرق توفير مثيل Workbench وقتًا أطول من مدة تنفيذ أمر gcloud.
10. اختبار Gemini CodeDuration: 7:00
في واجهة المستخدم، انقر على "فتح JupyterLab".
بعد الدخول إلى JupyterLab، افتح دفتر ملاحظات جديدًا في Python 3.
نفِّذ الرمز التالي في ورقة الملاحظات. تأكَّد من تعديل الرمز البرمجي ليشمل مشروعك المحدّد ومعلومات المنطقة.
من دفتر ملاحظات JupyterLab
pip install --upgrade google-genai
أعِد تشغيل نواة دفتر الملاحظات.
دوِّن نقطة نهاية واجهة برمجة التطبيقات. في هذا المثال، نستخدم نقطة نهاية واجهة برمجة التطبيقات <YOUR_REGION>-aiplatform.googleapis.com، وهي نقطة نهاية واجهة برمجة التطبيقات الافتراضية في Vertex AI.
من دفتر ملاحظات JupyterLab
PROJECT_ID="YOUR_PROJECT_ID" # Google Cloud Project ID LOCATION_ID="YOUR_REGION" # Enter Vertex AI Gemini region such a s us-central1 API_ENDPOINT="https://<YOUR_REGION>-aiplatform.googleapis.com" # API Endpoint MODEL_ID="gemini-2.0-flash" # Gemini Model ID from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
من دفتر ملاحظات JupyterLab
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
نموذج إجابة
This is a classic trick question! They both weigh the same: 1 kilogram. The difference is in the volume they occupy and the density of the materials.
دوِّن اسم واجهة برمجة التطبيقات الذي استخدمته عند تنفيذ الرمز. YOUR_REGION-aiplatform.googleapis.com هو اسم واجهة برمجة التطبيقات التلقائي في Vertex AI. علينا تغيير اسم واجهة برمجة التطبيقات وتشغيل الرمز مرة أخرى. يمكننا التأكّد من أنّ الرمز البرمجي يستخدم نقطة نهاية PSC من خلال تشغيل TCPdump في نافذة طرفية على "مثيل Workbench".
تشغيل TCPdump في الوحدة الطرفية
افتح "وحدة طرفية" في Workbench من خلال النقر على "ملف" > "جديد" > "وحدة طرفية".
إذا كنت تواجه مشاكل في رؤية ناتج النص في الوحدة الطرفية، عليك تعديل مظهر الوحدة الطرفية. يمكنك إجراء ذلك من خلال "الإعدادات" > "مظهر المحطة الطرفية" > "فاتح" أو "داكن".
من المحطة
sudo tcpdump host 10.100.100.0
تعديل Gemini Code
ارجع إلى دفتر الملاحظات، وعدِّل نقطة نهاية واجهة برمجة التطبيقات، ثم شغِّل الرمز مرة أخرى. يُرجى العِلم أنّنا غيّرنا نقطة نهاية واجهة برمجة التطبيقات إلى <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com. ويتوافق ذلك مع تنسيق واجهة برمجة التطبيقات الخاص بخدمة Private Service Connect وهو <service>-<endpointname>.p.googleapis.com.
من دفتر ملاحظات JupyterLab
API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint
من دفتر ملاحظات JupyterLab
from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
من دفتر ملاحظات JupyterLab
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
نموذج إجابة
They weigh the same. 1 kg is 1 kg, regardless of what it's made of.
التحقّق من TCPdump
ارجع إلى المحطة الطرفية وابحث عن طلبات إلى نقطة نهاية PSC (10.100.100.0). إنهاء TCPdump (control+c)
مثال على الناتج
listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes 19:12:01.473886 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [S], seq 3367930834, win 65320, options [mss 1420,sackOK,TS val 2933602967 ecr 0,nop,wscale 7], length 0 19:12:01.476561 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [S.], seq 1863301110, ack 3367930835, win 65535, options [mss 1366,sackOK,TS val 3004118895 ecr 2933602967,nop,wscale 8], length 0 19:12:01.476602 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 1, win 511, options [nop,nop,TS val 2933602969 ecr 3004118895], length 0 19:12:01.477283 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1:1573, ack 1, win 511, options [nop,nop,TS val 2933602970 ecr 3004118895], length 1572 19:12:01.478836 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [.], ack 1573, win 1045, options [nop,nop,TS val 3004118898 ecr 2933602970], length 0 19:12:01.480181 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 1:6041, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 6040 19:12:01.480183 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 6041:8378, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 2337 19:12:01.480215 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 6041, win 485, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.480225 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 8378, win 473, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.482580 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1573:1653, ack 8378, win 501, options [nop,nop,TS val 2933602975 ecr 3004118899], length 80
نجح الإجراء!
11. خطوات التنظيف
أغلِق دفتر ملاحظات JupyterLab وارجع إلى Cloud Shell. تأكَّد من عدم انتهاء مهلة Cloud Shell. إذا كان الأمر كذلك، أعِد ضبط المتغيرات.
من Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
حذف جميع المراجع
من Cloud Shell
gcloud workbench instances delete workbench-$region --location=$zone -q gcloud iam service-accounts delete workbench-sa@$project.iam.gserviceaccount.com -q gcloud dns managed-zones delete peeringzone -q gcloud compute forwarding-rules delete psc4googep --global -q gcloud compute addresses delete psc-ip --global -q gcloud network-connectivity spokes delete $region-vpn-spoke --region=$region -q gcloud network-connectivity spokes delete routing-vpc --global -q gcloud network-connectivity hubs delete ncc-hub -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel0 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel0 --region=$region --project=$project -q gcloud compute vpn-gateways delete onprem-gateway --region=$region --project=$project -q gcloud compute vpn-gateways delete routing-gateway --region=$region --project=$project -q gcloud compute routers nats delete onprem-$region-nat --router=onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr --region=$region -q gcloud compute routers delete routing-$region-cr --region=$region -q gcloud compute networks subnets delete onprem-$region-subnet --region=$region -q gcloud compute networks delete onprem-vpc -q gcloud compute networks delete routing-vpc -q
12. تهانينا!
تهانينا على إكمال هذا الدرس العملي.
المواضيع التي تناولناها
- أنشئ "مركزًا للشبكة السحابية المحلية".
- إعداد أجهزة Spoke في شبكة VPC في مركز NCC
- أنشئ شبكة Cloud HA VPN.
- ضبط Hybrid Spokes في مركز NCC
- أنشئ نقطة نهاية Private Service Connect لواجهات Google APIs.
- ضبط مسار مخصّص عبر HA-VPN
- إعداد منطقة ربط نظام أسماء النطاقات
- ضبط مثيل Vertex Workbench
- إعداد رمز Python في Gemini لاستخدام Private Service Connect (PSC) لنقطة نهاية Google APIs API.