تعيين منفذ ربط الخدمة الخاصة لناشري الخدمات

1. مقدمة

باستخدام Private Service Connect، يمكن لمقدّمي الخدمات عرض الخدمات في بيئة شبكة VPC من خلال Service Attachment والسماح للمستهلكين في بيئة شبكة VPC أخرى بالوصول إلى هذه الخدمات عبر نقطة نهاية Private Service Connect. في بعض الأحيان، يتم تصميم خدمات المنتج هذه كمجموعات من الأجهزة الافتراضية، حيث يعرض كل جهاز افتراضي الخدمات نفسها على أرقام منافذ متطابقة. في السابق، كانت تصاميم الخدمات هذه تتطلّب إما نشر نقاط نهاية متعددة في Private Service Connect على جهة المستهلك، أو استخدام ميزة "إعادة توجيه عناوين IP" على جهة مقدّم الخدمة للتأكّد من استهداف الجهاز الظاهري الصحيح لمقدّم الخدمة.

يمكن الآن لخدمة Private Service Connect استهداف الوجهة الصحيحة بشكلٍ أصلي باستخدام ميزة "ربط المنافذ". في هذا الدرس العملي، ستتعرّف على حالات الاستخدام التي تتطلّب هذه الميزة وكيفية نشر مجموعة NEG لربط المنافذ في عبء عمل Private Service Connect.

ما ستتعلمه

  • حالات استخدام ميزة "تعيين المنافذ" في Private Service Connect
  • المزايا الرئيسية لعملية ربط المنافذ في PSC
  • متطلبات الشبكة
  • أنشئ خدمة منتِج Private Service Connect باستخدام ربط المنافذ.
  • إنشاء نقطة نهاية Private Service Connect
  • إجراء مكالمات من خلال نقطة نهاية Private Service Connect إلى خدمة منتِجة

المتطلبات

  • مشروع Google Cloud لديه أذونات المالك

2. حالات استخدام ميزة "تعيين المنافذ" في Private Service Connect

تستفيد ميزة "ربط المنافذ" من مجموعة NEG لربط المنافذ (Network Endpoint Group) المخصّصة لحالات استخدام PSC.

أكثر أنواع المنتجين شيوعًا الذين يمكنهم الاستفادة من استخدام "ربط المنافذ" هم منتجو قواعد بيانات NoSQL ومنتجو Kafka. ومع ذلك، يمكن لأي منتج يتطلّب مجموعة من الأجهزة الافتراضية التي تعرض الخدمات نفسها على المنافذ المتطابقة مع متطلبات ربط الأجهزة الافتراضية المحدّدة استخدام هذه الميزة.

يحدّد المنتج التعيين بين منفذ العميل والجهاز الافتراضي للمنتج بالإضافة إلى منفذ الوجهة. وعلى المنتج بعد ذلك مشاركة هذه المعلومات مع المستهلك. يستخدم المستهلك المنافذ المحدّدة مسبقًا لتحديد الجهاز الافتراضي للمنتج ومنفذ الوجهة اللذين يحتاج إلى الوصول إليهما بشكلٍ فريد. المنفذ الذي يستخدمه المستهلك هو منفذ مختلف عن المنفذ الذي يستخدمه المنتج.

المزايا الرئيسية لعملية ربط المنافذ في PSC

  • بسيط: ينشر مقدّمو الخدمات مكوّنات PSC مع ربط المنافذ، وينشر المستهلكون نقطة نهاية PSC. تتعامل خدمة PSC مع ترجمة عنوان الشبكة تلقائيًا.
  • فعّالة من حيث التكلفة: لا تتطلّب هذه الطريقة أي موارد إضافية من PSC أو دورات وحدة المعالجة المركزية (CPU) الخاصة بالجهاز الافتراضي للمنتج. التسعير هو نفسه كما هو الحال مع الأنواع الأخرى من عمليات نشر "حملات التسوّق الذكية"
  • الأداء العالي: يوفّر تعيين المنافذ سرعة معالجة البيانات نفسها ووقت الاستجابة المنخفض الذي توفّره أوضاع PSC الأخرى.
  • قابلية التوسّع والفعالية في استخدام عناوين IP: يمكن لعنوان IP واحد من شبكة VPC الخاصة بالمستهلك الوصول إلى ما يصل إلى 1000 آلة افتراضية خاصة بالمنتج و1000 عملية ربط منافذ.

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

  • تتطلّب ميزة "ربط المنافذ" استخدام جهاز موازنة الحمل الداخلي لوضع البيانات في مسارها الصحيح كجهاز موازنة الحمل الخاص بالمنتج.
  • يمكن استخدام نقاط نهاية PSC فقط مع ميزة "ربط المنافذ" (وليس الخلفيات أو الواجهات الخاصة بخدمة PSC).
  • مجموعات NEGs التي تتضمّن عمليات ربط المنافذ هي بنى إقليمية.
  • لا يمكن استخدام مجموعات NEG لربط المنافذ إلا من خلال اتصال PSC. ولن تعمل إذا كانت الآلة الافتراضية للعميل تستدعي قاعدة إعادة التوجيه لجهاز موازنة الحمل الخاص بالمنتج مباشرةً. ويظهر ذلك في طريقة اختبار خدمة المنتج في هذا الدرس التطبيقي حول الترميز.
  • يجب أن تكون نقطة نهاية PSC ومجموعة خدمات المنتج في شبكات VPC مختلفة.

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

ad37cfc003475b7c.png

في شبكة VPC الخاصة بالمنتج، سيتم إنشاء آلتين افتراضيتين تشغّلان خادمَي ويب، أحدهما يعمل على المنفذ 1000 والآخر على المنفذ 2000. سنختبر كل خدمة قبل إعداد مجموعة NEG الخاصة بـ Portmap و"موازن الحمل" التي تتيح نقل البيانات عبر الشبكة الداخلية و"ملحق الخدمة".

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

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=us-central1
zone=us-central1-a
echo $project
echo $region
echo $zone

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

gcloud services enable compute.googleapis.com

7. إنشاء شبكة VPC خاصة بالمنتج

شبكة VPC

من Cloud Shell

gcloud compute networks create producer-vpc --subnet-mode custom

إنشاء شبكات فرعية

من Cloud Shell

gcloud compute networks subnets create producer-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access

gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --purpose=PRIVATE_SERVICE_CONNECT

سيتم ربط الشبكة الفرعية لخدمة PSC بمرفق خدمة PSC بغرض ترجمة عناوين الشبكة. بالنسبة إلى حالات الاستخدام في مرحلة الإنتاج، يجب أن يكون حجم هذه الشبكة الفرعية مناسبًا لاستيعاب مقدار الزيارات الواردة من جميع نقاط نهاية PSC المرفقة. لمزيد من المعلومات، يمكنك الاطّلاع على مستندات تحديد حجم الشبكة الفرعية لترجمة عنوان الشبكة (NAT) في Private Service Connect.

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

من Cloud Shell

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy producer-vpc-policy --network producer-vpc --name network-producer-vpc --global-firewall-policy

للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM الافتراضية، أنشئ قاعدة جدار حماية تتضمّن ما يلي:

  • ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
  • تسمح هذه القاعدة بحركة البيانات الواردة من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.

من Cloud Shell

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy producer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

تسمح قاعدة جدار الحماية التالية بنقل البيانات على منافذ TCP من 1000 إلى 2000 من الشبكة الفرعية لخدمة Private Service Connect إلى جميع المثيلات في الشبكة. في بيئة الإنتاج، يجب أن تقتصر قاعدة جدار الحماية هذه على المثيلات المرتبطة بخدمة المنتج المحدّدة فقط.

من Cloud Shell

gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy

تسمح قاعدة جدار الحماية التالية بجميع الزيارات داخل الشبكة الفرعية للخدمات على منافذ TCP من 1000 إلى 2000. سيتم استخدام هذه القاعدة لاختبار ما إذا كانت خدمة المنتج تعمل بشكل سليم.

من Cloud Shell

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy

إنشاء أجهزة افتراضية خاصة بالمنتج وضبطها

إنشاء أجهزة افتراضية

من Cloud Shell

gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address

gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address

gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address

في القسم التالي، ابدأ خادم http على المنفذ 1000 و2000 على كل جهاز افتراضي من نوع Producer.

ضبط إعدادات الأجهزة الافتراضية

من Cloud Shell

gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project

في Cloud Shell من جلسة portmap-vm1

mkdir 1000
cd 1000
echo "portmap-vm1 1000">index.html
sudo python3 -m http.server 1000 &
cd ..
mkdir 2000
cd 2000
echo "portmap-vm1 2000">index.html
sudo python3 -m http.server 2000 &

فتح نافذة Cloud Shell جديدة

ابدأ بإعادة ضبط المتغيّرات. في Cloud Shell

project=[YOUR-PROJECT-ID]
region=us-central1
zone=us-central1-a
echo $project
echo $region
echo $zone

gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project

في Cloud Shell من جلسة portmap-vm2

mkdir 1000
cd 1000
echo "portmap-vm2 1000">index.html
sudo python3 -m http.server 1000 &
cd ..
mkdir 2000
cd 2000
echo "portmap-vm2 2000">index.html
sudo python3 -m http.server 2000 &

8. خدمة منتج الاختبار

أولاً، علينا الحصول على عناوين IP الخاصة بمثيلات portmap. دوِّن عنوانَي IP هذين.

فتح نافذة Cloud Shell جديدة

ابدأ بإعادة ضبط المتغيّرات. في Cloud Shell

project=[YOUR-PROJECT-ID]
region=us-central1
zone=us-central1-a
echo $project
echo $region
echo $zone

gcloud compute instances describe portmap-vm1 \
  --format='get(networkInterfaces[0].networkIP)' --zone $zone

gcloud compute instances describe portmap-vm2\
  --format='get(networkInterfaces[0].networkIP)' --zone $zone

سجِّل الدخول إلى الآلة الافتراضية التجريبية. في Cloud Shell

gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project

curl [portmap-vm1 IP]:1000

الناتج المتوقّع

portmap-vm1 1000

في Cloud Shell

curl [portmap-vm1 IP]:2000

الناتج المتوقّع

portmap-vm1 2000

في Cloud Shell

curl [portmap-vm2 IP]:1000

الناتج المتوقّع

portmap-vm2 1000

في Cloud Shell

curl [portmap-vm2 IP]:2000

الناتج المتوقّع

portmap-vm2 2000

الخروج من test-client-vm

9- إنشاء خدمة منتِج باستخدام مجموعة NEG في Portmap

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

من Cloud Shell

gcloud compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP

أضِف نقاط نهاية إلى مجموعة NEG الخاصة بخدمة Portmap لإنشاء عملية الربط من منفذ العميل إلى منفذ المنتج. ينشئ المنتج عملية الربط هذه وسيكون لديه طريقة خاصة لإيصال هذه المعلومات إلى المستهلكين. لا تتم مشاركة عملية ربط المنفذ المحدّد من خلال PSC.

في Cloud Shell

gcloud compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000

أكمِل عملية إنشاء جهاز موازنة الحمل.

في Cloud Shell

gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc

gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region

gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes

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

من Cloud Shell

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

بعد ذلك، استردِد معرّف الموارد المنتظم (URI) لمرفق الخدمة ودوِّن ملاحظة عنه لإعداد نقطة نهاية PSC في بيئة المستهلك.

في Cloud Shell

gcloud compute service-attachments describe portmap-service-attachment --region=$region

مثال على الناتج المتوقّع

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-07-19T10:02:29.432-07:00'
description: ''
enableProxyProtocol: false
fingerprint: LI8D6JNQsLA=
id: '6207474793859982026'
kind: compute#serviceAttachment
name: portmap-service-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: '94288091358954472'
  low: '6207474793859982026'
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/portmap-service-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-fr

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

شبكة VPC

من Cloud Shell

gcloud compute networks create consumer-vpc --subnet-mode custom

إنشاء شبكة فرعية

من Cloud Shell

gcloud compute networks subnets create consumer-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access

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

من Cloud Shell

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

يجب استخدام بروتوكول النقل الآمن (SSH) من خلال خدمة "الوصول إلى الإنترنت عبر بروتوكول IAP" فقط لشبكة المستهلك.

11. إنشاء جهاز افتراضي ونقطة نهاية Private Service Connect واختبار الاتصال

في هذه المرحلة، من المفترض أن تكون ثلاث نوافذ Cloud Shell مفتوحة. يجب أن يكون لديك جلسة مفتوحة مع portmap-vm1. يجب أن تكون هناك جلسة مفتوحة باستخدام portmap-vm2، وجلسة أخرى هي جلسة العمل.

إنشاء جهاز افتراضي للاختبار

من Cloud Shell

gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address

إنشاء نقطة نهاية Private Service Connect

من Cloud Shell

gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10

gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]

اختبار الاتصال

من Cloud Shell

gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project

curl 10.0.0.10:1001

الناتج المتوقّع

portmap-vm1 1000

من Cloud Shell

curl 10.0.0.10:1002

الناتج المتوقّع

portmap-vm1 2000

من Cloud Shell

curl 10.0.0.10:1003

الناتج المتوقّع

portmap-vm2 1000

من Cloud Shell

curl 10.0.0.10:1004

الناتج المتوقّع

portmap-vm2 2000

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

الخروج من مثيل الجهاز الافتراضي (جميع النوافذ)

exit

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

gcloud compute forwarding-rules delete psc-portmap-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client-vm --zone=$zone -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy=consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

gcloud compute networks subnets delete consumer-client-subnet  --region=$region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute service-attachments delete portmap-service-attachment --region=$region -q

gcloud compute forwarding-rules delete portmap-fr --region=$region -q

gcloud compute backend-services delete portmap-bes --region=$region -q

gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q

gcloud compute instances delete test-client-vm --zone=$zone -q

gcloud compute instances delete portmap-vm2 --zone=$zone -q

gcloud compute instances delete portmap-vm1 --zone=$zone -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete producer-service-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

13. تهانينا!

تهانينا على إكمال هذا الدرس العملي.

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

  • حالات استخدام ميزة "تعيين المنافذ" في Private Service Connect
  • المزايا الرئيسية لعملية ربط المنافذ في PSC
  • متطلبات الشبكة
  • أنشئ خدمة منتِج Private Service Connect باستخدام ربط المنافذ.
  • إنشاء نقطة نهاية Private Service Connect
  • إجراء مكالمات من خلال نقطة نهاية Private Service Connect إلى خدمة منتِجة