مجموعة نقاط نهاية شبكة الإنترنت لشبكات الإنترنت من Looker PSC في المنطقة الجنوبية

1. مقدمة

في هذا الدرس التطبيقي حول الترميز، سيتم إجراء اتصال HTTPS في اتجاه الجنوب مع GitHub باستخدام جهاز موازنة حمل خادم وكيل tcp الداخلي ومجموعة نقاط نهاية شبكة الإنترنت (NEG) التي تم استدعاءها من Looker PSC بصفتها مستهلك خدمة.

‫Private Service Connect هي إحدى ميزات شبكة Google Cloud التي تتيح للمستهلكين الوصول إلى الخدمات المُدارة بشكل خاص من داخل شبكة VPC. وبالمثل، يسمح لمنتجي الخدمات المُدارة باستضافة هذه الخدمات في شبكات سحابة VPC منفصلة خاصة بهم وتوفير اتصال خاص لمستهلكيهم. على سبيل المثال، عند استخدام Private Service Connect للوصول إلى Looker، تكون أنت مستهلك الخدمة، وGoogle هي منتج الخدمة، كما هو موضّح في الشكل 1.

الشكل 1.

145ea4672c3a3b14.png

إنّ الوصول إلى البيانات من جهة الجنوب، والمعروف أيضًا باسم PSC العكسي، يتيح للمستهلك إنشاء "خدمة منشورة" بصفتها أداة نشر للسماح بوصول Looker إلى نقاط النهاية داخل الشركة وفي شبكة VPC إلى الخدمات المُدارة والإنترنت. يمكن نشر اتصالات Southbound في أي منطقة، بغض النظر عن مكان نشر Looker PSC، كما هو موضّح في الشكل 2.

الشكل 2.

259493afd914f68b.png

ما ستتعرّف عليه

  • متطلبات الشبكة
  • إنشاء خدمة منتج Private Service Connect
  • إنشاء نقطة نهاية Private Service Connect في Looker
  • إنشاء اتصال بخدمة GitHub من Looker باستخدام اختبار اتصال

المتطلبات

def88091b42bfe4d.png

2. ما ستُنشئه

ستنشئ شبكة أداة نشر، وهي Looker-psc-demo، لكي تتمكن من نشر جهاز موازنة حمل خادم وكيل tcp الداخلي ومجموعة نقاط نهاية شبكة الإنترنت التي يتم نشرها كخدمة عبر Private Service Connect (PSC). بعد نشر التطبيق، عليك اتّخاذ الإجراءات التالية للتحقّق من إمكانية الوصول إلى خدمة "صانع المحتوى":

  • إنشاء نقطة نهاية PSC في Looker مرتبطة بمرفق خدمة مُنتِج
  • استخدام Looker Console لإنشاء مشروع جديد واختبار الاتصال عبر HTTPS بموقع GitHub.com

3- متطلبات الشبكة

في ما يلي تفاصيل متطلبات الشبكة لشبكة أداة نشر الأخبار، المستهلك في هذا الدرس التطبيقي هو مثيل Looker PSC.

المكونات

الوصف

VPC (looker-psc-demo)

سحابة VPC للوضع المخصّص

الشبكة الفرعية لـ PSC NAT

تتم ترجمة الحِزم الواردة من شبكة VPC للمستهلك باستخدام ترجمة عنوان الشبكة المصدر (SNAT) بحيث يتم تحويل عناوين IP المصدر الأصلية إلى عناوين IP مصدر من الشبكة الفرعية لترجمة عنوان الشبكة في شبكة VPC الخاصة بالمنتج.

الشبكة الفرعية لقاعدة إعادة توجيه PSC

يتم استخدامه لتخصيص عنوان IP لجهاز موازنة الحمل لخادم وكيل TCP الداخلي الإقليمي.

الشبكة الفرعية لمجموعة نقاط نهاية شبكة اتصال الخدمة الخاصة

تُستخدَم لتخصيص عنوان IP لمجموعة نقاط نهاية الشبكة.

الشبكة الفرعية للوكيل فقط

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

مجموعة نقاط نهاية الشبكة للإنترنت

مورد يُستخدَم لتحديد خلفية خارجية لجهاز موازنة الحمل لا يمكن الوصول إلى نقطة النهاية إلا عبر شبكة VPN أو Cloud Interconnect.

خدمة الخلفية

تعمل خدمة الخلفية كجسر بين جهاز موازنة الحمل وموارد الخلفية. في البرنامج التعليمي، ترتبط خدمة الخلفية بمجموعة نقاط شبكة الإنترنت (NEG).

Cloud Router

تعتمد تقنية Cloud NAT على أجهزة توجيه السحابة الإلكترونية لتوفير إمكانات مسار التحكّم، ولكن ليس لإدارة جلسات BGP.

Cloud NAT

تستفيد خدمة NEG للإنترنت على مستوى المنطقة من Cloud NAT للخروج إلى الإنترنت.

4. طوبولوجيا الدرس التطبيقي حول الترميز

4e7ac0fd4a61ed9b.png

5- الإعداد والمتطلبات

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.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 Console، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 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. يمكنك نشر بوابة 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 \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

داخل Cloud Shell، عدِّل NEG على الإنترنت github-internet-neg باستخدام الاسم الكامل للنطاقات github.com والمنفذ 443.

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="fqdn=github.com,port=443" \
    --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 --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=443

إنشاء مرفق الخدمة

داخل Cloud Shell، أنشئ مرفق الخدمة github-svc-attachment-https:

gcloud compute service-attachments create github-svc-attachment-https --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

بعد ذلك، احصل على مرفق الخدمة المدرَج في عنوان URL الخاص برابط الخدمة، واحرص على تدوينه، بدءًا من المشاريع لضبط نقطة نهاية PSC في Looker.

SelfLink: project/<your-project-id>/regions/<your-region>/service المصدرs/github-svc-attachment-https

داخل Cloud Shell، يمكنك تنفيذ ما يلي:

gcloud compute service-attachments describe github-svc-attachment-https --region=$region

مثال:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-30T09:44:03.883-07:00'
description: ''
enableProxyProtocol: false
fingerprint: RfKh3blWZE0=
id: '2897904404386302012'
kind: compute#serviceAttachment
name: github-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2897904404386302012'
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-https
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

في Cloud Console، انتقِل إلى:

خدمات الشبكة ← Private Service Connect ← الخدمات المنشورة

a8cae886441d9c25.png

84a906b3bedabeee.png

9. إنشاء اتصال بنقطة نهاية PSC في Looker

في القسم التالي، ستربط مرفق خدمة المنتجين بخدمة Looker Core PSC من خلال استخدام علامات مرفقة -psc-service-attachment في Cloud Shell لنطاق واحد.

في Cloud Shell، أنشئ عملية ربط psc من خلال تعديل المَعلمات التالية لتتطابق مع بيئتك:

  • INSTANCE_NAME: اسم مثيل Looker (الأساسي من Google Cloud)
  • DOMAIN_1: github.com
  • SERVICE_ATTACHMENT_1: معرّف الموارد المنتظم الذي تم تسجيله عند وصف مرفق الخدمة، github-svc-attachment-https.
  • المنطقة: المنطقة التي تتم فيها استضافة مثيل 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=github.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https \
--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.12.28",
  "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": "github.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-30T17:47:33.440271635Z"
}

التحقّق من نقطة نهاية PSC في Cloud Console

من Cloud Console، يمكنك التحقّق من اتصال PSC.

في Cloud Console، انتقِل إلى:

Looker ← Looker مثيل ← التفاصيل

2d4684d722d31e4b.png

ef907280833bcad.png

10. اختبار الاتصال بخدمة GitHub

في الخطوات التالية، ستستخدم Looker Console لإنشاء مشروع للتحقّق من إمكانية الاتصال ببروتوكول HTTPS على github.com.

11. إنشاء مشروع جديد

تفعيل وضع التطوير

في Looker Console، انتقِل إلى:

فعِّل "وضع التطوير" (في أسفل يمين الصفحة)، وبعد اختياره، سيظهر بانر "أنت في وضع التطوير".

70c9ded749decfbe.png

إنشاء مشروع جديد

في Cloud Console، انتقِل إلى:

التطوير → المشاريع

e8ae11e0392a776d.png

اختيار مشروع LookML الجديد

65a3c2573e97e1e9.png

أدخِل اسم مشروع، واختَر "مشروع فارغ" ثم "إنشاء مشروع".

9185808e001fa540.png

اختَر "إعداد Git"

42f5e51ce70642ad.png

ضبط Git

عدِّل عنوان URL الخاص بالمستودع باستخدام تفاصيل github التي تستخدم HTTPS، واحرص على إلحاق عنوان URL بالامتداد .git، ثم النقر على "متابعة".

f5c448f6659b8fc1.png

مثال:

4065ab1d196589f.png

عدِّل الاختيار باستخدام اسم المستخدم ورمز الوصول الشخصي (الكلاسيكي) على GitHub، ثم اختَر "اختبار" و"إنهاء الإعداد".

1dc44d63c555a9ae.png

اختيار إجراءات Git

b5903668a50a99ca.png

انقر على "اختبار اتصال Git".

51b722e84f2df38c.png

التحقّق من صحة اختبار اتصال Git

a33584380b788b6d.png

تَنظيم

حذف مكونات التمرين المعملي من وحدة طرفية واحدة في Cloud Shell

gcloud compute service-attachments delete github-svc-attachment-https --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 network-endpoint-groups delete github-internet-neg --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --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

12. تهانينا

مبروك، لقد نجحت في ضبط إعدادات الاتصال بـ GitHub والتحقق منه باستخدام Looker Console المستندة إلى Private Service Connect.

لقد أنشأت البنية الأساسية للمنتِج، وتعلمت كيفية إنشاء نقطة نهاية مجموعة نقاط الوصول (NEG) لخدمة الإنترنت وخدمة المنتِج ونقطة نهاية Looker PSC التي أتاحت الاتصال بخدمة أداة نشر الأخبار.

يعتقد Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.

c911c127bffdee57.jpeg

الخطوات التالية

اطّلِع على بعض هذه الدروس التطبيقية حول الترميز...

مزيد من المراجع والفيديوهات

مستندات المرجع