1. مقدمة
تتيح Private Service Connect لمنتج الخدمة تقديم الخدمات بشكل خاص لمستهلك الخدمة. يوفّر Private Service Connect المزايا التالية:
- يمكن لشبكة VPC لمنتج الخدمة أن تتيح استخدام أكثر من مستهلك خدمة واحد.
- يتصل كل مستهلك بعنوان IP داخلي يحدده. ينفّذ Private Service Connect ترجمة عنوان الشبكة (NAT) لتوجيه الطلب إلى منتِج الخدمة.
الشكل 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 ثابت يُستخدم لإنشاء الطلبات إلى منتِج الخدمة، بالإضافة إلى مرفق الخدمة المستهدفة الذي يرتبط بمرفق خدمة المنتج (الخدمة المنشورة).
لنلقِ الآن نظرة على شبكة المنتجين. لاحظ كيف أن شبكة المنتجين ليس لها تعيين لشبكة المستهلكين، ولكن، بدلاً من ذلك، تحتوي شبكة المنتجين على مرفق خدمة (خدمة منشورة) يستخدمه المستهلك للخدمات. يتم الكشف عن مرفق خدمة المنتج بواسطة GKE ingress L4 ILB (خدمة منشورة) تتيح الاتصال بمجموعة GKE Pods التطبيقات المرتبطة بها.
يتم استخدام الشبكة الفرعية NAT (ترجمة عنوان الشبكة) عندما يتم إرسال طلب من شبكة VPC للمستهلك، وتتم ترجمة عنوان IP المصدر الخاص بالمستهلك باستخدام مصدر NAT (SNAT) إلى عنوان IP محدّد من إحدى الشبكات الفرعية لـ Private Service Connect.
ولا يمكن استخدام هذه الشبكات الفرعية للموارد، مثل مثيلات الأجهزة الافتراضية أو قواعد إعادة التوجيه. تُستخدم الشبكات الفرعية فقط لتوفير عناوين IP لمؤشر SNAT للاتصالات الواردة من المستهلكين.
لمعرفة المزيد من المعلومات حول L4ILB for GKE Private Service Connect والحصول على إمكانية الوصول المباشر إلى المحتوى المستخدَم في جعل هذا التمرين المعملي مرجعًا التالي.
إعداد بيئة ذاتية
- سجِّل الدخول إلى 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- قبل البدء
يتطلب الدرس التطبيقي حول الترميز مشروعَين، على الرغم من أنّ هذا البرنامج ليس شرطًا لـ 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 لـ الإنتاجين
شبكة 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-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
إنشاء 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 على الحقول التالية:
- إعدادات الاتصال المفضَّلة: هي إعدادات الاتصال المفضَّلة التي تحدِّد كيفية اتصال العملاء بالخدمة. يمكنك استخدام إما الموافقة التلقائية على المشروع باستخدام ACCEPT_AUTOMATIC أو الموافقة الصريحة على المشروع باستخدام ACCEPT_AUTOMATIC. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة خدمات النشر باستخدام Private Service Connect.
- natSubnets: قائمة بأسماء موارد الشبكة الفرعية التي يمكن استخدامها لمرفق الخدمة.
- proxyProtocol: عند ضبط هذا الإعداد على "صحيح"، يكون عنوان IP لمصدر المستهلك ورقم تعريف الاتصال لـ Private Service Connect متاحًا في الطلبات. هذا الحقل اختياري، ويتم ضبطه تلقائيًا على "خطأ" إذا لم يتم تقديمه.
- consumerAllowList: قائمة بمشاريع المستهلكين المسموح لها بالاتصال بواجهة Serviceمُرفَق. لا يمكن استخدام هذا الحقل إلا عندما تكون connectionPreference هي accept_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 لديك.
الاطّلاع على الخدمة المنشورة
من Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Service Connect ← "الخدمات المنشورة".
حدِّد الخدمة باستخدام الشبكة المستخدَمة في التمرين المعملي، gke-producer-l4-vpc, ولاحظ لقطة الشاشة أدناه، على الرغم من أنّ قيم "الخدمة" و"الهدف" قد تختلف.
انقر على اسم الخدمة الذي ينتقل بك إلى الشاشة أدناه، ولاحظ تفاصيل مرفق الخدمة التي تمت تعبئتها في "المعلومات الأساسية". لاحظ أيضًا "المشاريع المرتبطة" فارغ لأن المستهلك لم يسجّل بعد في الخدمة. وسيظل الخياران accept وREJECT غير مفعّلين بسبب ضبط تفضيل الاتصال على "accept_autoMATicalLY""، ويمكن تغيير هذا الخيار في أي وقت إلى "accept_MANUAL" من خلال تعديل مرفق الخدمة yaml (my-psc.yaml).
9. إنشاء شبكة VPC للمستهلكين
في القسم التالي، تم ضبط شبكة 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". .
من 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 الثابت بقاعدة إعادة توجيه المستهلك من خلال تنفيذ البنية التالية.
من سحابة 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 "نقاط النهاية المتصلة" الاطّلاع على نقطة النهاية التي تم إنشاؤها حديثًا
يتيح هذا الإذن تسجيل الدخول إلى consumer-instance-1 واختبار الوصول إلى خدمة أدائي الأخبار المنشورة.
من 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"
بعد تسجيل الدخول إلى المثيل الخاص بالمستهلك-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، افتح علامة تبويب جديدة بالنقر على الزر +
من 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، تحديد تسجيل العمليات ← 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. التحقق من الصحة - المنتِج
من مشروع "أداة الإنتاج"، تحقَّق من ربط مرفق الخدمة بنجاح. الانتقال إلى "خدمات الشبكة" ← Private Service Connect (ربط الخدمة الخاصة) ← "الخدمات المنشورة"
عند النقر على الخدمة، يمكنك الاطّلاع على مشروع المستهلك المرتبط وحالته كما هو موضّح أدناه.
16. حظر الوصول إلى "خدمة منشورة"
حتى الآن تأكدنا من أن كلتا المثيلتين لديهما إذن الدخول إلى "الخدمات المنشورة"، فلننشئ قاعدة جدار حماية الخروج لرفض وصول consumer-instance-2 إلى الخدمة المنشورة.
بشكل تلقائي، يرفض برنامج GCP جميع الزيارات الواردة. سننشئ في الخطوات التالية قاعدة جدار حماية استنادًا إلى علامة شبكة تم تحديدها سابقًا "google2". المستخدم عند إنشاء مثيل المستهلك 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، تحديد تسجيل العمليات ← Log Explorer
- في الحقل "Query" (طلب البحث)، حدِّث الإدخال أدناه باستخدام 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. خطوات التنظيف
خطوات تنظيف شبكة المنتجين
حذف مكونات المعمل، من واجهة مستخدم سحابية واحدة في الوحدة الطرفية لمشروع أداة نشر الأخبار
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
خطوات تنظيف شبكة المستهلكين
حذف مكونات المعمل، من واجهة مستخدم سحابية واحدة في الوحدة الطرفية لمشروع المستهلك
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 تهانينا!
تهانينا على إكمال الدرس التطبيقي حول الترميز.
المواضيع التي تناولناها
- مزايا ربط الخدمة الخاصة
- المفاهيم الرئيسية لمستهلكي الخدمات
- المفاهيم الرئيسية لمنتجي الخدمات
- إنشاء بيئة منتج
- عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
- إنشاء بيئة للمستهلك
- إنشاء قاعدة إعادة توجيه في شبكة المستهلك
- التحقُّق من إذن وصول المستهلك
- تفعيل التحكم في الوصول للسياسة
- استخدام قاعدة جدار حماية الخروج لحظر الوصول إلى قاعدة إعادة توجيه المستهلك