استخدام Private Service Connect لنشر الخدمات واستخدامها من خلال GKE

1. مقدمة

تتيح Private Service Connect لمنتج الخدمة تقديم الخدمات بشكل خاص لمستهلك الخدمة. يوفّر Private Service Connect المزايا التالية:

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

45b90d50690dd111.png

الشكل 2. تستخدم Private Service Connect نقاط النهاية ومرفقات الخدمة للسماح لمستهلكي الخدمة بإرسال حركة البيانات من شبكة VPC الخاصة بالمستهلك إلى الخدمات في شبكة VPC الخاصة بمنتج الخدمة (انقر للتكبير).

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

  • مزايا ربط الخدمة الخاصة
  • المفاهيم الرئيسية لمستهلكي الخدمات
  • المفاهيم الرئيسية لمنتجي الخدمات
  • إنشاء بيئة منتج
  • عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
  • إنشاء بيئة للمستهلك
  • إنشاء قاعدة إعادة توجيه في شبكة المستهلك
  • التحقُّق من إذن وصول المستهلك
  • تفعيل التحكم في الوصول للسياسة
  • استخدام قاعدة جدار حماية الخروج لحظر الوصول إلى قاعدة إعادة توجيه المستهلك

المتطلبات

  • المعرفة بنشر مجموعات GKE وخدماتها
  • الإلمام بأجهزة موازنة الحمل الداخلية
  • القدرة على إنشاء سحابة VPC في مشروعين
  • القدرة على إنشاء مجموعة GKE

2. مزايا ربط الخدمة الخاصة

عند استخدام PSC، يمكنك الاستفادة من العديد من المزايا مقارنةً باستخدام تبادل المعلومات بين شبكات VPC:

تحكُّم أفضل في مساحة عناوين IP الخاصة

  • بصفتك مستهلكًا للخدمة، يمكنك التحكُّم في عنوان IP الخاص المُستخدم للاتصال بالخدمة المُدارة التي تريد الوصول إليها.
  • بصفتك مستهلكًا للخدمة، لا داعي للقلق بشأن حجز نطاقات عناوين IP الخاصة لخدمات الخلفية التي يتم استهلاكها في شبكة VPC. ما عليك سوى اختيار عنوان IP من شبكتك الفرعية للاتصال بخدمات المنتجين.
  • بصفتك من منتجي الخدمة، يمكنك اختيار استخدام نموذج استعارة متعدّدة، حيث تحتوي سحابة VPC على خدمات توفّر عدة شبكات VPC للمستهلكين. لم يعد المستهلكون الذين لديهم نطاقات شبكة فرعية متداخلة مشكلةً.
  • وبصفتك مقدِّم خدمة، يمكنك توسيع نطاق خدمتك إلى أكبر عدد ممكن من مثيلات الأجهزة الافتراضية، بدون الحاجة إلى التواصل مع المستهلك للحصول على مزيد من عناوين IP.

تحسين مستوى الأمان والعزل

  • بصفتك مستهلكًا للخدمة، يمكنك وحدك بدء التواصل مع منتِج الخدمة. يعمل هذا الاتصال أحادي الاتجاه على تبسيط تهيئة جدار الحماية إلى حد كبير، ولكنه يقلل أيضًا من المخاطر الناتجة عن الزيارات الاحتيالية الواردة من منتِج الخدمة.
  • بصفتك منتج خدمة، لن تحتاج إلى تغيير قواعد جدار الحماية استنادًا إلى نطاقات الشبكة الفرعية في VPC للمستهلك. يمكنك ببساطة إنشاء قواعد جدار حماية لنطاق عنوان IP الخاص بترجمة عنوان الشبكة (NAT) والذي تم إعداده لخدمتك.

قابلية تطوير أفضل

  • تتيح PSC تصميمًا قابلاً للتوسع بشكل كبير من خلال دعم آلاف المستهلكين، كما تسمح لجهات إصدار الخدمات بتقديم خدمات قابلة للتوسع بشكل كبير متعدد المستأجرين أو خدمات مستأجر واحد.
  • بصفتك مستهلك خدمة يستخدم خدمة خاصة، يمكنك إنشاء موارد حسب الحاجة في سحابة VPC. لا يتأثّر حجم ذلك بعدد هذه الموارد التي تم إنشاؤها في سحابة VPC الخاصة بالمنتج.

3- المفاهيم الرئيسية لمستهلكي الخدمات

يمكنك استخدام نقاط نهاية Private Service Connect للاستفادة من الخدمات خارج شبكة VPC. ينشئ مستهلكو الخدمة نقاط نهاية Private Service Connect تتصل بخدمة مستهدَفة.

نقاط النهاية

يمكنك استخدام نقاط نهاية Private Service Connect للاتصال بخدمة مستهدَفة. تحتوي نقاط النهاية على عنوان IP داخلي في شبكة VPC وتستند إلى مورد قاعدة إعادة التوجيه.

يمكنك إرسال الزيارات إلى نقطة النهاية التي تعيد توجيهها إلى استهدافات خارج شبكة VPC.

الأهداف

لدى نقاط نهاية Private Service Connect هدف، وهو الخدمة التي تريد الاتصال بها:

  • حزمة واجهة برمجة التطبيقات:
  • جميع واجهات برمجة التطبيقات: معظم واجهات Google APIs
  • VPC-SC: واجهات برمجة التطبيقات المتوافقة مع عناصر التحكم في خدمة سحابة VPC
  • خدمة منشورة في شبكة سحابة VPC أخرى يمكن إدارة هذه الخدمة من خلال مؤسستك أو جهة خارجية.

خدمة منشورة

لربط نقطة النهاية بخدمة منتِج الخدمة، تحتاج إلى مرفق الخدمة للخدمة. يحتوي معرّف الموارد المنتظم (URI) لمرفق الخدمة على هذا التنسيق: projects/SERVICE_PROJECT/regions/region/serviceمُرفَقs/SERVICE_NAME

4. المفاهيم الرئيسية لمنتجي الخدمات

لإتاحة إحدى الخدمات للمستهلكين، يمكنك إنشاء واحدة أو أكثر من الشبكات الفرعية المخصصة لاستخدامها في ترجمة عنوان الشبكة (NAT) لعناوين IP للمستهلك. بعد ذلك، تُنشئ مرفق خدمة يشير إلى هذه الشبكات الفرعية.

الشبكات الفرعية الخاصة بخدمة Private Service Connect

لعرض خدمة، ينشئ منتج الخدمة أولاً شبكة فرعية واحدة أو أكثر باستخدام Private Service Connect.

عند إرسال طلب من شبكة VPC للمستهلك، تتم ترجمة عنوان IP المصدر للمستهلك باستخدام NAT (SNAT) المصدر إلى عنوان IP تم اختياره من إحدى الشبكات الفرعية لـ Private Service Connect.

إذا كنت تريد الاحتفاظ بمعلومات عنوان IP لاتصال المستهلك، راجع عرض معلومات اتصال المستهلك.

ولا يمكن استخدام هذه الشبكات الفرعية للموارد، مثل مثيلات الأجهزة الافتراضية أو قواعد إعادة التوجيه. تُستخدم الشبكات الفرعية فقط لتوفير عناوين IP لمؤشر SNAT للاتصالات الواردة من المستهلكين.

يجب أن تحتوي الشبكة الفرعية لـ Private Service Connect على عنوان IP واحد على الأقل لكل 63 جهاز افتراضي (VM) للمستهلكين لكي يتم تخصيص 1,024 صف مصدر لترجمة عنوان الشبكة لكل جهاز افتراضي.

الحد الأدنى لحجم الشبكة الفرعية الخاصة بـ Private Service Connect هو /24.

مرفقات الخدمة

يعرض منتجو الخدمة خدمتهم من خلال مرفق خدمة.

  • لعرض خدمة، ينشئ منتج الخدمة مرفق خدمة يشير إلى قاعدة إعادة توجيه جهاز موازنة الحمل للخدمة.
  • للوصول إلى خدمة، ينشئ مستهلك الخدمة نقطة نهاية تشير إلى مرفق الخدمة.

إعدادات الاتصال المفضّلة

عندما تنشئ خدمة، تختار طريقة إتاحتها. وثمة خياران لذلك:

  • قبول الاتصالات تلقائيًا لجميع المشاريع - يمكن لأي مستهلك خدمة ضبط نقطة نهاية والاتصال بالخدمة تلقائيًا.
  • قبول الاتصالات لمشاريع محددة - يهيئ مستخدمو الخدمة نقطة نهاية للاتصال بالخدمة ويقبل منتج الخدمة طلبات الاتصال أو يرفضها.

المتطلبات والقيود

  • تنطبق القيود المفروضة على Private Service Connect.
  • يمكنك إنشاء مرفق خدمة في إصدارات GKE 1.21.4-gke.300 والإصدارات الأحدث.
  • لا يمكنك استخدام الشبكة الفرعية نفسها في تهيئات متعددة لمرفقات الخدمة.
  • يجب إنشاء خدمة GKE تستخدم جهاز موازنة حمل TCP/UDP الداخلي.

5- بيئة الاختبار

تتكوّن شبكة المستهلك من عنوان IP ثابت يُستخدم لإنشاء الطلبات إلى منتِج الخدمة، بالإضافة إلى مرفق الخدمة المستهدفة الذي يرتبط بمرفق خدمة المنتج (الخدمة المنشورة).

1ce5607c0c56d77d.jpeg

لنلقِ الآن نظرة على شبكة المنتجين. لاحظ كيف أن شبكة المنتجين ليس لها تعيين لشبكة المستهلكين، ولكن، بدلاً من ذلك، تحتوي شبكة المنتجين على مرفق خدمة (خدمة منشورة) يستخدمه المستهلك للخدمات. يتم الكشف عن مرفق خدمة المنتج بواسطة GKE ingress L4 ILB (خدمة منشورة) تتيح الاتصال بمجموعة GKE Pods التطبيقات المرتبطة بها.

يتم استخدام الشبكة الفرعية NAT (ترجمة عنوان الشبكة) عندما يتم إرسال طلب من شبكة VPC للمستهلك، وتتم ترجمة عنوان IP المصدر الخاص بالمستهلك باستخدام مصدر NAT (SNAT) إلى عنوان IP محدّد من إحدى الشبكات الفرعية لـ Private Service Connect.

ولا يمكن استخدام هذه الشبكات الفرعية للموارد، مثل مثيلات الأجهزة الافتراضية أو قواعد إعادة التوجيه. تُستخدم الشبكات الفرعية فقط لتوفير عناوين IP لمؤشر SNAT للاتصالات الواردة من المستهلكين.

لمعرفة المزيد من المعلومات حول L4ILB for GKE Private Service Connect والحصول على إمكانية الوصول المباشر إلى المحتوى المستخدَم في جعل هذا التمرين المعملي مرجعًا التالي.

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي عبارة عن سلسلة أحرف لا تستخدمها Google APIs، ويمكنك تحديثها في أي وقت.
  • يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه PROJECT_ID). لذلك، إذا لم يعجبك، يمكنك إنشاء رقم تعريف عشوائي آخر أو يمكنك تجربة رقم تعريف المشروع الخاص بك ومعرفة ما إذا كان متاحًا. بعد ذلك تكون الحالة "مجمّدة". بعد إنشاء المشروع.
  • هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد أكثر من هذا البرنامج التعليمي، اتبع أي عملية "تنظيف". التعليمات الموجودة في نهاية الدرس التطبيقي حول الترميز. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ كل أعمالك في هذا التمرين من خلال متصفح.

6- قبل البدء

يتطلب الدرس التطبيقي حول الترميز مشروعَين، على الرغم من أنّ هذا ليس من متطلبات 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

لاحِظ اصطلاح رمز التلوين التالي:

f251ebb137e37136.png

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

afe738fc869f0d6e.png

شبكة VC

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

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

إنشاء Serviceمُرفَق

يصف البيان التالي Serviceمُرفَق يعرض الخدمة التي أنشأتها لمستهلكي الخدمة. احفظ البيان باسم 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_AUTOMATIC. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة خدمات النشر باستخدام Private Service Connect.
  • natSubnets: قائمة بأسماء موارد الشبكة الفرعية التي يمكن استخدامها لمرفق الخدمة.
  • proxyProtocol: عند ضبط هذا الإعداد على "صحيح"، يكون عنوان IP لمصدر المستهلك ورقم تعريف الاتصال لـ Private Service Connect متاحًا في الطلبات. هذا الحقل اختياري، ويتم ضبطه تلقائيًا على "خطأ" إذا لم يتم تقديمه.
  • consumerAllowList: قائمة بمشاريع المستهلكين المسموح لها بالاتصال بواجهة Serviceمُرفَق. لا يمكن استخدام هذا الحقل إلا عندما تكون connectionPreference هي قدم_MANUAL. لمزيد من المعلومات حول هذا الحقل والخيارات الأخرى، يُرجى الاطّلاع على مقالة Publish services using Private Service Connect.

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

عرض تفاصيل مرفق الخدمة

يمكنك الاطّلاع على تفاصيل Serviceمُرفَق باستخدام الأمر التالي من cloudshell.

kubectl describe serviceattachment emoji-sa

عرض GKE L4 ILB

من Cloud Console، انتقِل إلى "خدمات الشبكة" ← "موازنة التحميل" ← Frontends.

حدِّد عنوان IP للواجهة الأمامية الذي يتوافق مع الشبكة الفرعية للعقدة المحددة مسبقًا 192.168.10.0/24. يُرجى ملاحظة لقطة الشاشة أدناه، وقد يختلف عنوان IP لديك.

ed7a25ed4774977b.png

الاطّلاع على الخدمة المنشورة

من Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Service Connect ← "الخدمات المنشورة".

حدِّد الخدمة باستخدام الشبكة المستخدَمة في التمرين المعملي، gke-producer-l4-vpc, ولاحظ لقطة الشاشة أدناه، على الرغم من أنّ قيم "الخدمة" و"الهدف" قد تختلف.

5a00836ee514b918.png

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

497f5f43920018c0.png

e246063a23771273.png

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

1f3c90f1e139e906.png

في القسم التالي، تم ضبط شبكة VPC للمستهلك في مشروع منفصل. يتم إجراء الاتصال بين شبكة المستهلك والمنتج من خلال مرفق الخدمة المحدد في شبكة المستهلكين.

يتطلب الدرس التطبيقي حول الترميز مشروعَين، على الرغم من أنّ هذا ليس من متطلبات 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

شبكة VC

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

إنشاء قواعد جدار الحماية

للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:

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

في خطوة سابقة، نسخْت سلسلة مرفق خدمة أداة نشر الأخبار في مكان آمن، لنُدخِل القيمة المُخزنة في "target-service-attachment". .

7amaccc4e24f1ef7.png

من 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 الثابت بقاعدة إعادة توجيه المستهلك من خلال تنفيذ البنية التالية.

1f3c90f1e139e906.png

من سحابة VPC الخاصة بالمستهلكين، استخدم 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

الاطّلاع على الخدمة المرتبطة

من Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Service Connect "نقاط النهاية المتصلة" الاطّلاع على نقطة النهاية التي تم إنشاؤها حديثًا

206bc00297aaa260.png

يتيح هذا الإذن تسجيل الدخول إلى consumer-instance-1 واختبار الوصول إلى خدمة أدائي الأخبار المنشورة.

من Cloud Shell، افتح علامة تبويب جديدة بالنقر على الزر +

81f3210b29faebd3.png

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

بعد تسجيل الدخول إلى المثيل الخاص بالمستهلك-instance-1، يتم إجراء عملية ربط في مقابل قاعدة إعادة التوجيه عنوان 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 واختبار الوصول إلى خدمة Cleanr Publication Service).

من Cloud Shell، افتح علامة تبويب جديدة بالنقر على الزر +

81f3210b29faebd3.png

من 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 الثابت

  1. من Cloud Console، تحديد تسجيل العمليات ← Log Explorer
  2. في حقل "طلب البحث"، حدِّث الإدخال أدناه باستخدام yourconsumerproject وحدّد "تشغيل طلب البحث"

LogName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. توفّر نتائج طلب البحث ما يلي لكل لقطة شاشة مقدّمة

23e427b3060473.png

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

2669743fd1f1cb0d.png

15. التحقق من الصحة - المنتِج

afe738fc869f0d6e.png

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

89ded87a63888f60.png

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

15966d47423ebc5f.png

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

1f3c90f1e139e906.png

حتى الآن تأكدنا من أن كلتا المثيلتين لديهما إذن الدخول إلى "الخدمات المنشورة"، فلننشئ قاعدة جدار حماية الخروج لرفض وصول consumer-instance-2 إلى الخدمة المنشورة.

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

7fa2cda1dfec33a.png

افتح علامة تبويب جديدة في 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 الثابت

  1. من Cloud Console، تحديد تسجيل العمليات ← Log Explorer
  2. في الحقل "Query" (طلب البحث)، حدِّث الإدخال أدناه باستخدام yourconsumerproject (تشغيل طلب البحث)

LogName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")

  1. توفّر نتائج طلب البحث ما يلي لكل لقطة شاشة مقدّمة

83b4fc7348ac93cd.png

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

a344f75f67590655.png

17. خطوات التنظيف

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

afe738fc869f0d6e.png

حذف مكونات المعمل، من واجهة مستخدم سحابية واحدة في الوحدة الطرفية لمشروع أداة نشر الأخبار

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

1f3c90f1e139e906.png

خطوات تنظيف شبكة المستهلكين

حذف مكونات المعمل، من واجهة مستخدم سحابية واحدة في الوحدة الطرفية لمشروع المستهلك

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 تهانينا!

تهانينا على إكمال الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها

  • مزايا ربط الخدمة الخاصة
  • المفاهيم الرئيسية لمستهلكي الخدمات
  • المفاهيم الرئيسية لمنتجي الخدمات
  • إنشاء بيئة منتج
  • عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
  • إنشاء بيئة للمستهلك
  • إنشاء قاعدة إعادة توجيه في شبكة المستهلك
  • التحقُّق من إذن وصول المستهلك
  • تفعيل التحكم في الوصول إلى السياسة
  • استخدام قاعدة جدار حماية الخروج لحظر الوصول إلى قاعدة إعادة توجيه المستهلك