1. مقدمة
في هذا الدرس البرمجي، ستُجري اتصالاً من جهة العميل باستخدام بروتوكول النقل الآمن (SSH) مع GitHub باستخدام موازن تحميل داخلي للطلبات يعمل كوكيل لبروتوكول النقل المتعدّد (TCP) ومجموعة نقاط نهاية لشبكة الإنترنت يتمّ استدعاؤها من Looker PSC بصفتها مستهلك خدمة.
Private Service Connect هي إحدى ميزات شبكة Google Cloud التي تتيح للمستهلكين الوصول إلى الخدمات المُدارة بشكل خاص من داخل شبكة VPC. وبالمثل، يسمح لمنتجي الخدمات المُدارة باستضافة هذه الخدمات في شبكات سحابة VPC منفصلة خاصة بهم وتوفير اتصال خاص لمستهلكيهم. على سبيل المثال، عند استخدام Private Service Connect للوصول إلى Looker، تكون أنت مستخدِم الخدمة وتكون Google مقدّم الخدمة، كما هو موضّح في الشكل 1.
الشكل 1.
إنّ الوصول إلى البيانات من جهة الجنوب، والمعروف أيضًا باسم PSC العكسي، يتيح للمستهلك إنشاء "خدمة منشورة" بصفتها أداة نشر للسماح بوصول Looker إلى نقاط النهاية داخل الشركة وفي شبكة VPC إلى الخدمات المُدارة والإنترنت. يمكن نشر اتصالات Southbound في أي منطقة، بغض النظر عن مكان نشر Looker PSC، كما هو موضّح في الشكل 2.
الشكل 2.
ما ستتعرّف عليه
- متطلبات الشبكة
- إنشاء خدمة منتج في Private Service Connect
- إنشاء نقطة نهاية Private Service Connect في Looker
- إنشاء اتصال بخدمة GitHub من Looker باستخدام اختبار اتصال
المتطلبات
- مشروع Google Cloud مع أذونات المالك
- حساب GitHub والمستودع
- مفتاح نشر بروتوكول النقل الآمن المشترك بين Looker وGitHub
- مثيل Looker PSC الحالي
2. ما الذي ستقوم ببنائه
ستنشئ شبكة أداة نشر، وهي Looker-psc-demo، لكي تتمكن من نشر جهاز موازنة حمل خادم وكيل tcp الداخلي ومجموعة نقاط نهاية شبكة الإنترنت التي يتم نشرها كخدمة عبر Private Service Connect (PSC). بعد النشر، عليك تنفيذ الإجراءات التالية للتحقّق من صحة الوصول إلى خدمة أداة نشر الأخبار:
- إنشاء نقطة نهاية PSC في Looker مرتبطة بمرفقات خدمة الإنتاج
- استخدام Looker Console لإنشاء مشروع جديد واختبار اتصال SSH بموقع GitHub.com باستخدام الإجراء الاتصال بـ Git باستخدام SSH
3- متطلبات الشبكة
في ما يلي تفاصيل متطلبات الشبكة لشبكة "المنتج"، والمستهلك في هذا الدليل التعليمي هو مثيل Looker PSC.
شبكة الإنتاج
المكونات | الوصف |
VPC (looker-psc-demo) | سحابة VPC للوضع المخصّص |
الشبكة الفرعية لـ PSC NAT | تتم ترجمة الحِزم الواردة من شبكة VPC للمستهلك باستخدام ترجمة عنوان الشبكة المصدر (SNAT) لكي يتم تحويل عناوين IP المصدر الأصلية إلى عناوين IP مصدر من الشبكة الفرعية لترجمة عنوان الشبكة في شبكة VPC الخاصة بالمنتج. |
الشبكة الفرعية لقاعدة إعادة توجيه PSC | يُستخدَم لتخصيص عنوان IP لجهاز موازنة حمل الخادم الوكيل الداخلي الإقليمي لبروتوكول TCP. |
شبكة PSC NEG الفرعية | تُستخدَم لتخصيص عنوان IP لمجموعة نقاط النهاية في الشبكة. |
الشبكة الفرعية للخادم الوكيل فقط | يتم تعيين عنوان IP داخلي لكل جهاز من الخوادم الوكيلة لجهاز موازنة الحمل. الحِزم المُرسَلة من خادم وكيل إلى جهاز افتراضي في الخلفية أو نقطة نهاية لها عنوان IP مصدر من الشبكة الفرعية للخادم الوكيل فقط. |
مجموعة نقاط نهاية الشبكة للإنترنت | يشير هذا المصطلح إلى مورد يُستخدم لتحديد واجهة خلفية خارجية لجهاز موازنة الحمل. لا يمكن الوصول إلى نقطة النهاية إلا عبر شبكة VPN أو Cloud Interconnect. |
خدمة الخلفية | تعمل خدمة الخلفية كجسر بين جهاز موازنة الحمل وموارد الخلفية. في البرنامج التعليمي، ترتبط خدمة الخلفية بمجموعة نقاط شبكة الإنترنت (NEG). |
Cloud Router | تعتمد آلية NAT في السحابة الإلكترونية على أجهزة التوجيه المستنِدة إلى السحابة الإلكترونية لتقديم إمكانات مستوى التحكّم، ولكن ليس في إدارة جلسة BGP. |
Cloud NAT | تستفيد مجموعة نقاط نهاية شبكة الإنترنت الإقليمية من Cloud NAT لخروج من شبكة الإنترنت. |
4. طوبولوجيا الدرس التطبيقي حول الترميز
5- الإعداد والمتطلبات
إعداد البيئة ذاتيًا
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
- يكون معرّف المشروع فريدًا في جميع مشاريع 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، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا الدليل التعليمي للترميز داخل متصفّح. لا تحتاج إلى تثبيت أي تطبيقات.
6- قبل البدء
تفعيل واجهات برمجة التطبيقات
في Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
فعِّل جميع الخدمات اللازمة:
gcloud services enable compute.googleapis.com
7- إنشاء شبكة VPC لمُنتِج
شبكة VPC
في Cloud Shell، نفِّذ ما يلي:
gcloud compute networks create looker-psc-demo --subnet-mode custom
إنشاء شبكات فرعية
سيتم ربط الشبكة الفرعية لـ PSC بمرفق خدمة PSC بغرض ترجمة عناوين الشبكة.
داخل Cloud Shell، أنشئ شبكة فرعية لترجمة عنوان بروتوكول الإنترنت (NAT) في PSC:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
داخل Cloud Shell، أنشئ الشبكة الفرعية لقاعدة إعادة توجيه المنتج:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
داخل Cloud Shell، أنشئ الشبكة الفرعية للخادم الوكيل الإقليمي فقط للمنتِج:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
إنشاء بوابة NAT العامة
يتم استخدام بوابة NATG من خلال جهاز موازنة حمولة خادم وكيل tcp على المستوى الإقليمي لتسجيل بيانات الإنترنت مع خيار الضبط، –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB، وبالتالي فإنّ بروتوكول NATGW نفسه لن يتيح تسجيل الخروج على الإنترنت عبر GCE/GKE. انشر وحدة GW إضافية من NAT باستخدام –endpoint-types=ENDPOINT_TYPE_VM لمخرجات الإنترنت من GCE/GKE.
في Cloud Shell، أنشئ "راوتر السحابة الإلكترونية":
gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region
داخل Cloud Shell، أنشئ بوابة ترجمة عنوان الشبكة (NAT) في السحابة الإلكترونية تتيح الخروج من الإنترنت لجهاز موازنة حمل خادم وكيل tcp:
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
حجز عنوان IP الخاص بجهاز موازنة الحمل
داخل Cloud Shell، احتفِظ بعنوان IP داخلي لجهاز موازنة الحمل:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
داخل Cloud Shell، يمكنك عرض عنوان IP المحجوزة.
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
مثال:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
إعداد مجموعة نقاط نهاية الشبكة للإنترنت
أنشِئ مجموعة نقاط نهاية الشبكة على الإنترنت واضبط –network-endpoint-type على Internet-fqdn-port (اسم المضيف والمنفذ الذي يمكن الوصول إلى الواجهة الخلفية الخارجية من خلاله).
داخل Cloud Shell، أنشئ NEG على الإنترنت يُستخدَم لموقع github.com.
gcloud compute network-endpoint-groups create github-internet-neg-ssh \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
داخل Cloud Shell، حدِّث شبكة NEG عبر شبكة الإنترنت github-internet-neg-ssh باستخدام اسم FQDN github.com والمنفذ 22.
gcloud compute network-endpoint-groups update github-internet-neg-ssh \
--add-endpoint="fqdn=github.com,port=22" \
--region=$region
إنشاء سياسة جدار حماية الشبكة وقواعد جدار الحماية
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
تسمح قاعدة جدار الحماية التالية بحركة البيانات من نطاق الشبكة الفرعية لـ PSC NAT إلى جميع المثيلات في الشبكة.
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. إنشاء خدمة إنتاج
إنشاء مكوّنات جهاز موازنة الحمل
في Cloud Shell، نفِّذ ما يلي:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=github-internet-neg-ssh --network-endpoint-group-region=$region --region=$region
في Cloud Shell، يمكنك إنشاء خادم وكيل TCP الهدف لتوجيه الطلبات إلى الخدمة الخلفية:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
في البنية التالية، أنشئ قاعدة إعادة توجيه (جهاز موازنة حمل داخلي لبروتوكول TCP).
في Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute forwarding-rules create producer-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=22
إنشاء مرفق الخدمة
داخل Cloud Shell، أنشئ مرفق الخدمة github-svc-attachment-ssh:
gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
بعد ذلك، احصل على مرفق الخدمة المدرَج في عنوان URL الخاص برابط الخدمة selfLink، واحرص على تدوينه، بدءًا بالمشاريع لضبط نقطة نهاية PSC في Looker.
selfLink: project/<your-project-id>/region/<your-region>/service المصدرs/github-svc-attachment-ssh
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region
مثال على الإخراج المتوقّع
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '7557641709467614900'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr
في Cloud Console، انتقِل إلى:
خدمات الشبكة → Private Service Connect → الخدمات المنشورة
9. إنشاء اتصال نقطة نهاية PSC في Looker
في القسم التالي، ستربط مرفق خدمة المنتجين بخدمة Looker Core PSC من خلال استخدام علامات مرفقة -psc-service-attachment في Cloud Shell لنطاق واحد.
داخل Cloud Shell، أنشِئ عملية ربط psc من خلال تعديل المعلَمات التالية لمطابقة بيئتك:
- INSTANCE_NAME: اسم مثيل Looker (Google Cloud core)
- DOMAIN_1: githubssh.com
- SERVICE_ATTACHMENT_1: عنوان URL تم تسجيله عند وصف مرفق الخدمة، github-svc-attachment-ssh.
- المنطقة: المنطقة التي تتم فيها استضافة مثيل Looker (الأساسي من Google Cloud)
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
مثال:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region
في Cloud Shell، تحقَّق من أنّ حالة اتصال serviceAttachments هي "مقبول". يُرجى التعديل باستخدام INSTANCE_NAME من Looker PSC.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
مثال:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
مثال:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.14.18",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "githubssh.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-31T20:53:04.824018122Z"
}
التحقّق من نقطة نهاية PSC في Cloud Console
من Cloud Console، يمكنك التحقّق من اتصال PSC.
في Cloud Console، انتقِل إلى:
Looker → نسخة Looker → التفاصيل
10. اختبار الاتصال بـ GitHub
في الخطوات التالية، ستستخدم Looker Console لإنشاء مشروع للتحقّق من إمكانية اتصال بروتوكول SSH بخدمة GitHub.com من خلال تعديل النطاق github.com إلى githubssh.com في واجهة مستخدم Looker. هذا الإجراء مطلوب فقط لاتصالات بروتوكول النقل الآمن بـ GitHub.
11. إنشاء مشروع جديد
تفعيل وضع التطوير
في Looker Console، انتقِل إلى:
تفعيل وضع التطوير (أسفل الصفحة اليمنى)، بعد اختيار البانر "أنت في وضع التطوير" نتائج البحث.
إنشاء مشروع جديد
في Cloud Console، انتقِل إلى:
التطوير → المشاريع
اختيار مشروع LookML الجديد
أدخِل اسمًا للمشروع، ثم اختَر "مشروع فارغ"، ثمّ انقر على "إنشاء مشروع".
اختَر "إعداد Git".
ضبط Git
بعد اختيار "متابعة"، ستتم ترقية حسابك للتحقّق من صحة عنوان URL الخاص بالمستودع وخدمة استضافة Git.
أضِف مفتاح النشر إلى مستودعك على GitHub. تأكَّد من السماح بإذن الوصول للكتابة. بعد تعديل الإعدادات، اختَر "اختبار الإعداد وإنهاءه".
اختيار إجراءات Git
انقر على "اختبار اتصال Git".
التحقّق من صحة اختبار اتصال Git
12. تَنظيم
حذف مكونات التمرين المعملي من وحدة طرفية واحدة في Cloud Shell
gcloud compute service-attachments delete github-svc-attachment-ssh --region=$region -q
gcloud compute forwarding-rules delete producer-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute network-endpoint-groups delete github-internet-neg-ssh --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
13. تهانينا
مبروك، لقد نجحت في ضبط إعدادات الاتصال بـ GitHub والتحقق منه باستخدام Looker Console المستندة إلى Private Service Connect.
لقد أنشأت البنية الأساسية للمنتِج، وتعلمت كيفية إنشاء نقطة نهاية مجموعة نقاط الوصول (NEG) لخدمة الإنترنت وخدمة المنتِج ونقطة نهاية Looker PSC التي أتاحت الاتصال بخدمة أداة نشر الأخبار.
يعتقد Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.
الخطوات التالية
اطّلِع على بعض هذه الدروس التطبيقية حول الترميز...
- استخدام Private Service Connect لنشر الخدمات واستخدامها
- الاتصال بالخدمات في مقر الشركة عبر الاتصال المختلط باستخدام Private Service Connect وجهاز موازنة حمل خادم وكيل TCP الداخلي
- الوصول إلى جميع الدروس التطبيقية المنشورة حول ترميز Private Service Connect