Looker PSA Southbound HTTPS Internet NEG

1. مقدمة

لا تتوافق إعدادات عنوان IP الخاص وعنوان IP العام إلا مع مثيلات Looker (خدمة Google Cloud الأساسية) التي تستخدم الوصول إلى الخدمات الخاصة للاتصال الخاص.

يتضمّن مثيل Looker (الإصدار الأساسي من Google Cloud) الذي يتضمّن اتصالاً عبر عنوان IP خاص (الوصول إلى الخدمات الخاصة) واتصالاً عبر عنوان IP علني عنوان URL علنيًا، وستمرّ جميع الزيارات الواردة عبر الاتصال عبر عنوان IP العلني. يتم توجيه الزيارات الصادرة من خلال شبكة VPC، ويمكن ضبطها للسماح فقط بزيارات عناوين IP الخاصة كما هو موضّح في الشكل 1.

Figure1

9f587c14791dd92e.png

يتم حلّ الاتصال بـ github.com إلى عنوان IP عام، وبالتالي لا يمكن الوصول إليه من مثيل Looker تم نشره على أنّه "خاص" أو "عام+خاص".

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

ما ستتعلمه

  • متطلبات الشبكة
  • إنشاء اتصال بـ GitHub من Looker باستخدام "اختبار الاتصال"

المتطلبات

5348de53f0a78a50.png

2. ما ستنشئه

ستنشئ جهاز موازنة حمل داخلي لخادم TCP الوكيل ومجموعة نقاط نهاية شبكة (NEG) على الإنترنت تم ضبطها باستخدام عنوان IP الذي تم تحديده لموقع github.com، والذي يستفيد من Cloud NAT لإرسال البيانات إلى مؤسسات github.com التي تم تحديدها بواسطة Looker.

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

في ما يلي تفاصيل متطلبات الشبكة:

المكونات

الوصف

شبكة VPC‏ ($vpc_network)

شبكة VPC في الوضع المخصّص

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

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

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

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

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

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

خدمة الخلفية

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

Cloud Router

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

Cloud NAT

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

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

c5871e5418d37f13.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]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network

فعِّل جميع الخدمات اللازمة:

gcloud services enable compute.googleapis.com

7. مكوّنات شبكة VPC

شبكة VPC

المتطلّب الأساسي للدليل التعليمي هو توفّر مثيل Looker حالي في "مساحة العرض التقديمي"، وبالتالي تمّ إنشاء شبكة VPC المرتبطة به.

داخل Cloud Shell، أنشئ الشبكة الفرعية لقاعدة إعادة التوجيه:

gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

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

gcloud compute networks subnets create $region-proxyonly-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=$vpc_network \
  --range=10.10.10.0/24

إنشاء بوابة NAT العامة

يتم استخدام NAT Gateway من خلال موازن التحميل الإقليمية الداخلية لخادم TCP الوكيل من أجل نقل البيانات إلى الإنترنت باستخدام خيار الإعداد ‎–endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB، وبالتالي لن تتوافق NATGW نفسها مع نقل البيانات إلى الإنترنت في GCE/GKE. يمكنك نشر NAT GW إضافية باستخدام ‎–endpoint-types=ENDPOINT_TYPE_VM لإرسال البيانات إلى الإنترنت في GCE/GKE.

داخل Cloud Shell، أنشئ Cloud Router:

gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region

داخل Cloud Shell، أنشئ بوابة Cloud NAT التي تتيح خروج الإنترنت لجهاز موازنة الحمل لوكيل TCP:

gcloud compute routers nats create $vpc_network-natgw \
  --router=$vpc_network-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

حجز عنوان IP الخاص بجهاز موازنة الحمل

داخل Cloud Shell، احجز عنوان IP داخليًا لموازنة الحمل التي سيتم استخدامها لاحقًا كسجلّ A لنظام أسماء النطاقات (DNS) الخاص بـ github.com:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=psa-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

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

هناك طريقتان لإعداد نقطة النهاية الخارجية المشار إليها في مجموعة NEG على الإنترنت: INTERNET_FQDN_PORT أو INTERNET_IP_PORT. في حال اختيار تنسيق INTERNET_IP_PORT (الخيار 1)، لا يمكن استخدام سوى عنوان IP يمكن توجيهه على الإنترنت العام. في حال اختيار تنسيق INTERNET_FQDN_PORT (الخيار 2)، يمكن أن يتم تحويل اسم FQDN إلى عنوان IP يمكن توجيهه على الإنترنت العام أو إلى عنوان IP خاص، وذلك حسب نطاق نقطة النهاية: إقليمي أو عالمي.

الخيار 1: إعداد NEG على الإنترنت باستخدام عنوان IP

يتطلّب NEG على الإنترنت عنوان IP الذي تمّت تسويته لموقع Github.com، لذا للحصول على أفضل أداء، افتح نافذة طرفية محلية ونفِّذ عملية بحث عن معلومات DNS واحصل على عنوان IP لموقع github.com.

مثال من جهاز طرفي محلي ينشئ عنوان IP الذي تمّت تسويته 140.82.113.4

bash-3.2$ dig github.com
; <<>> DiG 9.10.6 <<>> github.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.com.                        IN        A
;; ANSWER SECTION:
github.com.                60        IN        A        140.82.113.4
;; Query time: 409 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Sep 26 15:50:45 CDT 2024
;; MSG SIZE  rcvd: 65

أنشئ مجموعة نقاط نهاية شبكة (NEG) على الإنترنت، واضبط –network-endpoint-type على internet_ip_port.

داخل Cloud Shell، أنشئ مجموعة NEG على الإنترنت مستخدَمة في github.com:

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_IP_PORT \
    --network=$vpc_network \
    --region=$region

داخل Cloud Shell، عدِّل Internet NEG github-internet-neg باستخدام عنوان IP الذي تمّت تسويته لـ github.com والمنفذ 443:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=[your-resolved-ip],port=443" \
    --region=$region

مثال:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=140.82.113.4,port=443" \
    --region=$region

الخيار 2: إعداد مجموعة NEG على الإنترنت باستخدام اسم النطاق المؤهَّل بالكامل

يمكنك اختياريًا إنشاء مجموعة NEG على الإنترنت، وضبط –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=$vpc_network \
    --region=$region

داخل Cloud Shell، عدِّل Internet NEG github-internet-neg باستخدام اسم النطاق المؤهّل بالكامل github.com:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="fqdn=github.com,port=443" \
    --region=$region

9- إنشاء خدمة Github

إنشاء مكوّنات جهاز موازنة الحمل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute backend-services create psa-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend psa-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=psa-backend-svc  \
      --region=$region

في البنية التالية، أنشئ قاعدة إعادة توجيه (جهاز موازنة حمل وكيل TCP داخلي).

في Cloud Shell، نفِّذ ما يلي:

gcloud compute forwarding-rules create psa-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=$vpc_network \
     --subnet=psa-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

10. منطقة نظام أسماء النطاقات في GitHub

في القسم التالي، ستنشئ سياسة استجابة لنظام أسماء النطاقات خاصةً بموقع GitHub.com تتضمّن سجلّ A يتألف من عنوان IP الخاص بجهاز موازنة الحمل الداخلي لخادم وكيل TCP.

بعد ذلك، ستشارك خدمة "نظير نظام أسماء النطاقات" منطقة github.com مع Looker PSA، ما يتيح إمكانية الاتصال بـ github من خلال موازن التحميل الداخلي مع مجموعة نقاط نهاية الشبكة الصادرة والخاصة بالإنترنت وCloud NAT.

في Cloud Shell، أنشئ منطقة سياسة الردّ:

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

في Cloud Shell، أنشئ سجلّ A لنظام أسماء النطاقات يتألف من عنوان IP لموازن الحمل لخادم TCP الوكيل، [insert-your-ip-address]:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"

مثال:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

7b41b2f44609e5ed.png

تعديل تبادل معلومات بين الشبكات لنظام أسماء النطاقات

في هذا القسم، ستستخدم بنية "gcloud services peered-dns-domains create" التي تنشئ نطاق نظام أسماء نطاقات (DNS) مرتبطًا باتصال خدمة خاص يرسل طلبات للحصول على سجلات في مساحة اسم معيّنة مصدرها شبكة VPC لمقدّم الخدمة إلى شبكة VPC للمستهلك ليتم حلّها.

في Cloud Shell، أنشئ peered-dns-domain سيطلبه Looker من github.com:

gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.

11. اختبار الاتصال بـ GitHub

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

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

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

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

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

70c9ded749decfbe.png

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

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

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

e8ae11e0392a776d.png

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

65a3c2573e97e1e9.png

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

9185808e001fa540.png

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

42f5e51ce70642ad.png

ضبط Git

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

f5c448f6659b8fc1.png

مثال:

4065ab1d196589f.png

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

1dc44d63c555a9ae.png

اختيار Git Actions

b5903668a50a99ca.png

اختيار "اختبار ربط Git"

51b722e84f2df38c.png

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

8fb7386b739f60be.png

13. تَنظيم

من نافذة Cloud Shell واحدة، احذف مكوّنات المختبر:

gcloud compute forwarding-rules delete psa-github-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete psa-backend-svc --region=$region -q

gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q

gcloud compute routers delete $vpc_network-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 psa-fr-subnet $region-proxyonly-subnet --region=$region -q

gcloud services peered-dns-domains delete github-com --network=$vpc_network -q

gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q

gcloud dns response-policies update github-com --networks= -q

gcloud dns response-policies delete github-com

14. تهانينا

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

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

c911c127bffdee57.jpeg

ما هي الخطوات التالية؟

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

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