1. مقدمة
تتيح خدمة Private Service Connect لمقدّم الخدمة تقديم الخدمات بشكل خاص لمستهلك الخدمة. توفّر Private Service Connect المزايا التالية:
- يمكن لشبكة VPC لمقدّم الخدمة أن تتيح لأكثر من مستهلك خدمة واحد.
- يتصل كل مستهلك بعنوان IP داخلي يحدّده. تنفّذ Private Service Connect ترجمة عنوان الشبكة (NAT) لتوجيه الطلب إلى مقدّم الخدمة.

الشكل 2: تستخدم خدمة Private Service Connect نقاط النهاية ومرفقات الخدمة للسماح لمستهلكي الخدمة بإرسال الزيارات من شبكة VPC الخاصة بالمستهلك إلى الخدمات في شبكة VPC الخاصة بمقدّم الخدمة (انقر للتكبير).
ما ستتعلمه
- مزايا Private Service Connect
- المفاهيم الأساسية لمستهلكي الخدمات
- المفاهيم الأساسية لمقدّمي الخدمات
- إنشاء بيئة منتج
- عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
- إنشاء بيئة مستهلك
- إنشاء قاعدة إعادة توجيه في شبكة المستهلك
- التحقّق من إمكانية وصول المستهلك
- تفعيل ميزة التحكّم في الوصول إلى السياسات
- استخدام قاعدة جدار حماية للخروج لحظر الوصول إلى قاعدة إعادة توجيه المستهلك
المتطلبات
- معرفة كيفية نشر خدمات ومجموعات GKE
- معرفة بأجهزة موازنة الحمل الداخلية
- إمكانية إنشاء شبكات VPC في مشروعَين
- إمكانية إنشاء مجموعة GKE
2. مزايا Private Service Connect
توفّر لك خدمة PSC مزايا عديدة مقارنةً باستخدام خدمة VPC Peering:
تحكّم أفضل في مساحة عناوين IP الخاصة
- بصفتك مستهلك خدمة، يمكنك التحكّم في عنوان IP الخاص المستخدَم للاتصال بالخدمة المُدارة التي تريد الوصول إليها.
- بصفتك مستهلكًا للخدمة، لا داعي للقلق بشأن حجز نطاقات عناوين IP الخاصة للخدمات الخلفية التي يتم استهلاكها في شبكة VPC. ما عليك سوى اختيار عنوان IP من الشبكة الفرعية الخاصة بك للاتصال بخدمات المنتج.
- بصفتك منتج خدمة، يمكنك اختيار نشر نموذج متعدد المستأجرين، حيث يحتوي VPC على خدمات تخدم العديد من شبكات VPC الخاصة بالمستهلكين. لم يعُد تداخل نطاقات الشبكات الفرعية للمستهلكين مشكلة.
- بصفتك مقدّم خدمة، يمكنك توسيع نطاق خدمتك ليشمل أكبر عدد ممكن من مثيلات الأجهزة الافتراضية حسب الحاجة، بدون الحاجة إلى التواصل مع المستهلك للحصول على المزيد من عناوين IP.
تحسين الأمان والعزل
- بصفتك مستهلكًا للخدمة، يمكنك وحدك بدء التواصل مع مقدّم الخدمة. يؤدي هذا الاتصال الأحادي الاتجاه إلى تبسيط عملية ضبط جدار الحماية بشكل كبير، كما يقلّل من خطر وصول زيارات غير مرغوب فيها من مقدّم الخدمة.
- بصفتك منتج خدمة، لا تحتاج إلى تغيير قواعد جدار الحماية استنادًا إلى نطاقات الشبكات الفرعية في شبكة VPC الخاصة بالمستهلك. يمكنك ببساطة إنشاء قواعد جدار الحماية لنطاق عناوين IP الخاص بـ NAT الذي تم إعداده لخدمتك.
قابلية أفضل للتوسّع
- تتيح PSC تصميمًا قابلاً للتوسيع بشكل كبير من خلال إتاحة آلاف المستهلكين، كما تسمح لموفّري الخدمات بتقديم خدمات قابلة للتوسيع بشكل كبير ومتعددة المستأجرين أو ذات مستأجر واحد.
- بصفتك مستهلكًا للخدمة باستخدام Private Service Connect، يمكنك إنشاء الموارد حسب الحاجة في شبكتك VPC. لا يتأثر حجم هذا المورد بعدد الموارد المشابهة التي تم إنشاؤها في شبكة VPC الخاصة بالمنتج.
3- المفاهيم الأساسية لمستهلكي الخدمات
يمكنك استخدام نقاط نهاية Private Service Connect لاستهلاك الخدمات التي تقع خارج شبكة VPC. ينشئ مستهلكو الخدمات نقاط نهاية Private Service Connect تتصل بخدمة مستهدَفة.
نقاط النهاية
يمكنك استخدام نقاط نهاية Private Service Connect للاتصال بخدمة مستهدَفة. تحتوي نقاط النهاية على عنوان IP داخلي في شبكة VPC وتستند إلى مورد قاعدة إعادة التوجيه.
ترسل حركة البيانات إلى نقطة النهاية، التي تعيد توجيهها إلى أهداف خارج شبكة VPC.
الاستهدافات
تتضمّن نقاط نهاية Private Service Connect هدفًا، وهو الخدمة التي تريد الاتصال بها:
- حِزمة واجهات برمجة التطبيقات:
- جميع واجهات برمجة التطبيقات: معظم واجهات برمجة التطبيقات من Google
- VPC-SC: واجهات برمجة التطبيقات التي تتوافق مع عناصر التحكّم في خدمة سحابة VPC
- خدمة منشورة في شبكة VPC أخرى يمكن أن تدير هذه الخدمة مؤسستك أو جهة خارجية.
الخدمة المنشورة
لربط نقطة النهاية بالخدمة التي يقدّمها منتج الخدمة، يجب أن يتوفّر لديك ملحق الخدمة الخاص بالخدمة. يكون تنسيق معرّف الموارد المنتظم لمرفق الخدمة على النحو التالي: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. المفاهيم الأساسية لمقدّمي الخدمات
لإتاحة خدمة للمستهلكين، عليك إنشاء شبكات فرعية مخصّصة واحدة أو أكثر لاستخدامها في ترجمة عناوين الشبكة (NAT) لعناوين IP الخاصة بالمستهلكين. بعد ذلك، يمكنك إنشاء مرفق خدمة يشير إلى هذه الشبكات الفرعية.
الشبكات الفرعية لخدمة Private Service Connect
لعرض خدمة، على مقدّم الخدمة أولاً إنشاء شبكة فرعية واحدة أو أكثر بغرض استخدام Private Service Connect.
عند إرسال طلب من شبكة VPC الخاصة بالمستهلك، تتم ترجمة عنوان IP المصدر الخاص بالمستهلك باستخدام ترجمة عنوان الشبكة المصدر (SNAT) إلى عنوان IP تم اختياره من إحدى الشبكات الفرعية في Private Service Connect.
إذا كنت تريد الاحتفاظ بمعلومات عنوان IP الخاص باتصال المستهلك، اطّلِع على عرض معلومات اتصال المستهلك.
لا يمكن استخدام هذه الشبكات الفرعية للموارد، مثل مثيلات الأجهزة الافتراضية أو قواعد إعادة التوجيه. لا تُستخدم الشبكات الفرعية إلا لتوفير عناوين IP لترجمة عناوين الشبكة المصدرية (SNAT) لاتصالات المستهلكين الواردة.
يجب أن تحتوي الشبكة الفرعية Private Service Connect على عنوان IP واحد على الأقل لكل 63 جهازًا افتراضيًا للمستهلك، وذلك ليتم تخصيص 1,024 مجموعة مصدر لكل جهاز افتراضي للمستهلك لترجمة عناوين الشبكة.
الحد الأدنى لحجم الشبكة الفرعية في Private Service Connect هو /24.
مرفقات الخدمة
يعرض مقدّمو الخدمات خدماتهم من خلال مرفق خدمة.
- لعرض خدمة، ينشئ مقدّم الخدمة مرفق خدمة يشير إلى قاعدة إعادة التوجيه لموازنة الحمل الخاصة بالخدمة.
- للوصول إلى إحدى الخدمات، ينشئ مستهلك الخدمة نقطة نهاية تشير إلى مرفق الخدمة.
إعدادات الاتصال المفضّلة
عند إنشاء خدمة، يمكنك اختيار طريقة إتاحتها. وثمة خياران لذلك:
- قبول الاتصالات تلقائيًا لجميع المشاريع: يمكن لأي مستهلك خدمة ضبط نقطة نهاية والاتصال بالخدمة تلقائيًا.
- قبول عمليات الربط للمشاريع المحدّدة: يضبط مستهلكو الخدمة نقطة نهاية للربط بالخدمة، ويقبل منتجو الخدمة طلبات الربط أو يرفضونها.
المتطلّبات والقيود
- تسري القيود المفروضة على Private Service Connect.
- يمكنك إنشاء مرفق خدمة في الإصدارات 1.21.4-gke.300 والإصدارات الأحدث من GKE.
- لا يمكنك استخدام الشبكة الفرعية نفسها في إعدادات متعددة لربط الخدمة.
- يجب إنشاء خدمة GKE تستخدم جهاز موازنة حمل TCP/UDP داخليًا.
5- بيئة الاختبار
تتألف شبكة المستهلك من عنوان IP ثابت يُستخدم لإرسال الطلبات إلى مقدّم الخدمة، بالإضافة إلى target-service-attachment الذي يتم ربطه بمرفق الخدمة الخاص بمقدّم الخدمة (الخدمة المنشورة).

لنلقِ نظرة الآن على شبكة المنتجين. لاحظ كيف أنّ شبكة المنتجين لا تتضمّن ربطًا بشبكة المستهلكين، بل تحتوي شبكة المنتجين على مرفق خدمة (خدمة منشورة) يستخدمه المستهلك للخدمات. يتم عرض مرفق الخدمة الخاص بمقدّم الخدمة من خلال موازن تحميل داخلي من الطبقة 4 (خدمة منشورة) في GKE، ما يتيح التواصل مع وحدات Pod في GKE والتطبيقات المرتبطة بها.
يتم استخدام الشبكة الفرعية لترجمة عنوان الشبكة (NAT) عند إرسال طلب من شبكة VPC الخاصة بالمستهلك، ويتم ترجمة عنوان IP المصدر الخاص بالمستهلك باستخدام ترجمة عنوان الشبكة المصدر (SNAT) إلى عنوان IP تم اختياره من إحدى الشبكات الفرعية لميزة Private Service Connect.
لا يمكن استخدام هذه الشبكات الفرعية للموارد، مثل مثيلات الأجهزة الافتراضية أو قواعد إعادة التوجيه. لا تُستخدم الشبكات الفرعية إلا لتوفير عناوين IP لترجمة عناوين الشبكة المصدرية (SNAT) لاتصالات المستهلكين الواردة.
لمعرفة المزيد عن موازنة الحمل من الطبقة 4 في Private Service Connect في GKE والحصول على إذن وصول مباشر إلى المحتوى المستخدَم في إعداد هذا المرجع العملي، يُرجى الرجوع إلى ما يلي.
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى 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 Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا التمرين المعملي باستخدام متصفّح فقط.
6. قبل البدء
يتطلّب Codelab مشروعَين، على الرغم من أنّ ذلك ليس شرطًا في PSC. لاحظ المراجع التي تدعم مشروعًا واحدًا أو مشاريع متعددة.
مشروع واحد - تعديل المشروع ليتوافق مع شبكة المنتجين والمستهلكين
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
مشاريع متعددة: تعديل المشروع ليتوافق مع شبكة المنتجين
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
يُرجى مراعاة اصطلاح ترميز الألوان التالي:

7. إنشاء شبكة VPC للمنتجين

شبكة السحابة الخاصة الافتراضية (VPC)
من Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
إنشاء شبكة فرعية لمجموعة GKE
من Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
إنشاء مجموعة GKE
من Cloud Shell
gcloud container clusters create gke-psc-l4 \
--release-channel=rapid \
--enable-ip-alias \
--zone=us-central1-a \
--network gke-producer-l4-vpc \
--num-nodes 1 \
--subnetwork node-subnet1 \
--cluster-secondary-range-name pod \
--services-secondary-range-name service
إنشاء شبكة فرعية لخدمة Private Service Connect (شبكة NAT الفرعية)
يجب إنشاء شبكة فرعية واحدة أو أكثر مخصّصة للاستخدام مع Private Service Connect. إذا كنت تستخدم Google Cloud Console من أجل نشر خدمة، يمكنك إنشاء الشبكات الفرعية أثناء هذا الإجراء.
للحصول على معلومات حول الشبكات الفرعية في Private Service Connect، يُرجى الاطّلاع على الشبكات الفرعية في Private Service Connect.
من Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \
--project $prodproject \
--network gke-producer-l4-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
8. نشر حمل عمل وخدمات
يوضّح البيان التالي عملية نشر تشغّل صورة حاوية لتطبيق ويب نموذجي. احفظ ملف البيان باسم my-deployment.yaml من Cloud Shell.
apiVersion: apps/v1
kind: Deployment
metadata:
name: psc-ilb
spec:
replicas: 3
selector:
matchLabels:
app: psc-ilb
template:
metadata:
labels:
app: psc-ilb
spec:
containers:
- name: whereami
image: gcr.io/google-samples/whereami:v1.2.1
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
تطبيق ملف البيان على مجموعتك من Cloud Shell
kubectl apply -f my-deployment.yaml
إنشاء خدمة
يوضّح البيان التالي خدمة تنشئ جهاز موازنة حمل TCP/UDP داخليًا على منفذ TCP رقم 8080. احفظ ملف البيان باسم my-service.yaml من Cloud Shell.
apiVersion: v1
kind: Service
metadata:
name: gke-l4-psc
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: psc-ilb
ports:
- port: 80
targetPort: 8080
protocol: TCP
تطبيق ملف البيان على مجموعتك من Cloud Shell
kubectl apply -f my-service.yaml
إنشاء ServiceAttachment
يوضّح بيان الخدمة التالي ServiceAttachment الذي يعرض الخدمة التي أنشأتها لمستهلكي الخدمة. احفظ ملف البيان باسم my-psc.yaml من Cloud Shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
تطبيق ملف البيان على مجموعتك من Cloud Shell
kubectl apply -f my-psc.yaml
يحتوي ServiceAttachment على الحقول التالية:
- connectionPreference: إعدادات الاتصال المفضَّلة التي تحدّد كيفية اتصال العملاء بالخدمة. يمكنك استخدام الموافقة التلقائية على المشاريع باستخدام ACCEPT_AUTOMATIC أو الموافقة الصريحة على المشاريع باستخدام ACCEPT_MANUAL. لمزيد من المعلومات، يُرجى الاطّلاع على نشر الخدمات باستخدام Private Service Connect.
- natSubnets: قائمة بأسماء موارد الشبكات الفرعية التي سيتم استخدامها لمرفق الخدمة.
- proxyProtocol: عند ضبط القيمة على "صحيح"، يصبح عنوان IP المصدر للمستهلك ومعرّف اتصال Private Service Connect متاحَين في الطلبات. هذا الحقل اختياري ويتم ضبطه تلقائيًا على "خطأ" في حال عدم توفيره.
- consumerAllowList: هي قائمة بمشاريع المستهلكين المسموح لها بالاتصال بـ ServiceAttachment. لا يمكن استخدام هذا الحقل إلا عندما تكون قيمة connectionPreference هي ACCEPT_MANUAL. لمزيد من المعلومات حول هذا الحقل والخيارات الأخرى، يُرجى الاطّلاع على نشر الخدمات باستخدام Private Service Connect.
التحقّق من صحة معلومات المنتج
عرض تفاصيل Service Attachment
يمكنك عرض تفاصيل ServiceAttachment باستخدام الأمر التالي من Cloud Shell
kubectl describe serviceattachment emoji-sa
عرض موازن التحميل الداخلي من الطبقة 4 في GKE
من Cloud Console، انتقِل إلى "خدمات الشبكة" (Network Services) → "موازنة الحمل" (Load Balancing) → "الواجهات الأمامية" (Frontends).
حدِّد عنوان IP للواجهة الأمامية يتوافق مع الشبكة الفرعية للعقدة 192.168.10.0/24 المحدّدة سابقًا، كما هو موضّح في لقطة الشاشة أدناه، وقد يختلف عنوان IP الخاص بك.

عرض الخدمة المنشورة
من Cloud Console، انتقِل إلى "خدمات الشبكة" (Network Services) → "Private Service Connect" (Private Service Connect) → "الخدمات المنشورة" (Published Services).
حدِّد الخدمة التي تستخدم الشبكة في الدرس التطبيقي، gke-producer-l4-vpc,، كما هو موضّح في لقطة الشاشة أدناه، علمًا بأنّ قيمتَي "الخدمة" و"الهدف" قد تختلفان

انقر على اسم الخدمة الذي ينقلك إلى الشاشة أدناه، ولاحِظ تفاصيل مرفق الخدمة التي تمّت تعبئتها في "المعلومات الأساسية". ولاحِظ أيضًا أنّ "المشاريع المرتبطة" فارغة لأنّ المستهلك لم يسجّل بعد في الخدمة. سيظل الخياران قبول ورفض غير متاحَين لأنّ إعدادات الاتصال المفضّلة مضبوطة على "ACCEPT_AUTOMATICALLY"، ويمكن تغيير هذا الخيار في أي وقت إلى "ACCEPT_MANUAL" من خلال تعديل ملف YAML الخاص بربط الخدمة (my-psc.yaml).


9. إنشاء شبكة VPC للمستهلكين

في القسم التالي، يتم إعداد شبكة VPC الخاصة بالمستهلك في مشروع منفصل. يتم التواصل بين شبكة المستهلك وشبكة المنتج من خلال مرفق الخدمة المحدّد في شبكة المستهلك.
يتطلّب Codelab مشروعَين، على الرغم من أنّ ذلك ليس شرطًا في PSC. لاحظ المراجع التي تدعم مشروعًا واحدًا أو مشاريع متعددة.
مشروع واحد - تعديل المشروع ليتوافق مع شبكة المنتجين والمستهلكين
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
مشاريع متعددة - تعديل المشروع ليتوافق مع شبكة المستهلكين
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
شبكة السحابة الخاصة الافتراضية (VPC)
من Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
إنشاء شبكة فرعية لـ PSC
من Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
إنشاء شبكة فرعية لمثيلات الأجهزة الافتراضية
من Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
إنشاء عنوان IP ثابت للوصول إلى الخدمة المنشورة
من Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
إنشاء قواعد جدار الحماية
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- يسمح هذا الخيار بزيارات الدخول من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة "الوصول إلى الإنترنت عبر بروتوكول IPv4" لإعادة توجيه بروتوكول TCP.
من Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
على الرغم من أنّ ذلك غير مطلوب لإنشاء PSC، يمكنك إنشاء قاعدة جدار حماية للخروج من أجل مراقبة عدد الزيارات إلى مرفق خدمة المنتِج من خلال PSC.
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. إنشاء نسخة اختبارية للمستهلك 1
من Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. إنشاء نسخة اختبارية للمستهلك 2
من Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. إنشاء مرفق خدمة
في خطوة سابقة، نسخت سلسلة Producer Service Attachment في مكان آمن، لذا لنُدرج القيمة المخزّنة في الحقل "target-service-attachment".

من Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. التحقّق من صحة المعلومات - المستهلك
سنستخدم سجلّات CURL وجدار الحماية للتحقّق من التواصل بين المستهلك والمنتج.
ضمن مشروع المستهلك، يتم استخدام عناوين IP الثابتة لبدء التواصل مع المنتج. يتم التحقّق من صحة ربط عنوان IP الثابت بقاعدة إعادة التوجيه الخاصة بالمستهلك من خلال تنفيذ الصيغة التالية.

من Consumer VPCs Cloud use shell، حدِّد قاعدة إعادة التوجيه وعنوان IP الثابت.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
الناتج أدناه، سنستخدم 10.0.60.100 للوصول إلى المنتج في خطوة لاحقة
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
عرض الخدمة المرتبطة
من وحدة تحكّم السحابة الإلكترونية، انتقِل إلى "خدمات الشبكة" (Network Services) → "خدمة Private Service Connect" (Private Service Connect) → "نقاط النهاية المرتبطة" (Connected Endpoints) واطّلِع على نقطة النهاية التي تم إنشاؤها حديثًا.

لنقم بتسجيل الدخول إلى consumer-instance-1 واختبار الوصول إلى الخدمة المنشورة من Producer
من Cloud Shell، افتح علامة تبويب جديدة بالنقر على علامة الجمع (+).

من Cloud Shell، نفِّذ ما يلي:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
بعد تسجيل الدخول إلى مثيل consumer-instance-1، نفِّذ طلب curl مقابل عنوان IP لقاعدة إعادة التوجيه 10.0.60.100.
من Cloud Shell، نفِّذ ما يلي:
user@consumer-instance-1:~$ curl 10.0.60.100
مثال على الناتج
user@consumer-instance-1:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
"pod_name": "psc-ilb-588887dfdb-w7tbr",
"pod_name_emoji": "🤷",
"project_id": "prodorijectid",
"timestamp": "2021-10-01T17:43:37",
"zone": "us-central1-a"
لنقم بتسجيل الدخول إلى consumer-instance-2 واختبار الوصول إلى الخدمة المنشورة من مقدّم الخدمة
من Cloud Shell، افتح علامة تبويب جديدة بالنقر على علامة الجمع (+).

من Cloud Shell، نفِّذ ما يلي:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
من Cloud Shell، نفِّذ ما يلي:
user@consumer-instance-2:~$ curl 10.0.60.100
مثال على الناتج
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
"pod_name": "psc-ilb-588887dfdb-4jdql",
"pod_name_emoji": "🧑🏿",
"project_id": "prodproject",
"timestamp": "2021-10-01T17:49:51",
"zone": "us-central1-a"
14. تسجيل جدار الحماية - التحقّق من صحة التخصيص
استخدام "مستكشف السجلات" للتحقّق من أنّ قاعدة جدار الحماية "vpc-consumner-psc" تسجّل حركة البيانات بين مثيل الجهاز الافتراضي وعنوان IP الثابت
- من Cloud Console، انتقِل إلى "تسجيل العمليات" (Identify Operations Logging) → "مستكشف السجلات" (Log Explorer).
- في حقل طلب البحث، عدِّل الإدخال أدناه باستخدام yourconsumerproject وانقر على "تنفيذ طلب البحث".
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- تقدّم نتائج طلب البحث ما يلي لكل لقطة شاشة مقدَّمة

- وسِّع السجلّ (jsonPayload → Connection) وحدِّد الناتج المقدَّم أدناه. دوِّن dest_ip: 10.0.60.100 هو عنوان IP الثابت لبروتوكول TCP المستخدَم للوصول إلى "خدمة المنتج"، وsrc_ip: 10.0.70.10 أو 10.0.70.20 هما عنوانا IP الخاصان بمثيل الجهاز الظاهري. يُسمح بالتصرف.

15. التحقّق من صحة المعلومات - المنتج

من مشروع "الموفّرون"، تأكَّد من ربط مرفق الخدمة بنجاح. انتقِل إلى "خدمات الشبكة" (Network Services) → "خدمة Private Service Connect" (Private Service Connect) → "الخدمات المنشورة" (Published Services).

يؤدي النقر على الخدمة إلى عرض مشروع المستهلك المرتبط والحالة كما هو موضّح أدناه

16. حظر الوصول إلى خدمة منشورة

حتى الآن، تأكّدنا من أنّ كلتا الآلتين الافتراضيتين يمكنهما الوصول إلى "الخدمات المنشورة"، لننشئ الآن قاعدة جدار حماية للخروج لمنع consumer-instance-2 من الوصول إلى "الخدمة المنشورة".
تسمح منصة GCP تلقائيًا بجميع عمليات نقل البيانات الصادرة، ولكنها ترفض جميع عمليات نقل البيانات الواردة. في الخطوات التالية، سننشئ قاعدة جدار حماية استنادًا إلى علامة الشبكة "google2" المحدّدة سابقًا والتي تم استخدامها عند إنشاء consumer-instance-2 لرفض الوصول إلى "الخدمة المنشورة".

افتح علامة تبويب جديدة في Cloud Shell من خلال النقر على علامة الجمع (+) ونفِّذ قاعدة جدار الحماية التالية في Cloud Shell.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
لنختبر الآن ما إذا كان بإمكان consumer-instance-2 الوصول إلى الخدمة المنشورة. إذا انتهت مهلة جلستك، عليك فتح Cloud Shell + جديد وتسجيل الدخول إلى الجهاز الافتراضي كما هو موضّح أدناه.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
من Cloud Shell، نفِّذ ما يلي:
user@consumer-instance-2:~$ curl 10.0.60.100
مثال على الناتج
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
تسجيل جدار الحماية - تعذُّر التحقّق من الصحة
استخدِم "مستكشف السجلات" للتأكّد من أنّ قاعدة جدار الحماية "psc-endpoint-deny-egress" تسجّل حركة البيانات بين الجهاز الظاهري وعنوان IP الثابت.
- من Cloud Console، انتقِل إلى "تسجيل العمليات" (Identify Operations Logging) → "مستكشف السجلات" (Log Explorer).
- في حقل "طلب البحث"، عدِّل الإدخال أدناه باستخدام yourconsumerproject وانقر على "تنفيذ طلب البحث".
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- تقدّم نتائج طلب البحث ما يلي لكل لقطة شاشة مقدَّمة

- وسِّع السجلّ وحدِّد الناتج الموضّح أدناه. دوِّن dest_ip: 10.0.60.100 وهو عنوان IP الثابت لبروتوكول TCP، وsrc_ip: 10.0.70.10 أو 10.0.70.20 وهما عنوانا IP الخاصان بمثيل الجهاز الظاهري. تم رفض طلب التصرف.

17. خطوات التنظيف
خطوات تنظيف شبكة المنتجين

من Cloud Shell واحد في نافذة مشروع Producer، احذف مكوّنات المختبر
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet

خطوات إعادة ضبط شبكة المستهلك
من نافذة Cloud Shell واحدة في مشروع المستهلك، احذف مكوّنات المختبر
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18 تهانينا!
تهانينا على إكمال درس البرمجة.
المواضيع التي تناولناها
- مزايا Private Service Connect
- المفاهيم الأساسية لمستهلكي الخدمات
- المفاهيم الأساسية لمقدّمي الخدمات
- إنشاء بيئة منتج
- عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
- إنشاء بيئة مستهلك
- إنشاء قاعدة إعادة توجيه في شبكة المستهلك
- التحقّق من إمكانية وصول المستهلك
- تفعيل ميزة التحكّم في الوصول إلى السياسات
- استخدام قاعدة جدار حماية للخروج لحظر الوصول إلى قاعدة إعادة توجيه المستهلك