يوضح هذا البرنامج التعليمي كيفية استخدام Google Kubernetes Engine (GKE) لعرض تطبيق الويب الخاص بك على الإنترنت على عنوان IP خارجي ثابت وتكوين اسم مجال للإشارة إلى تطبيقك يفترض هذا البرنامج التعليمي أنك تمتلك اسم مجال مسجل ، مثل example.com يمكنك تسجيل اسم المجال من خلال جوجل المجالات أو مسجل مجال آخر خاص بك اختيار إذا لم يكن لديك واحد ## أهداف يوضح هذا البرنامج التعليمي الخطوات التالية: ## التكاليف يستخدم هذا البرنامج التعليمي المكونات التالية القابلة للفوترة من Google Cloud: لإنشاء تقدير التكلفة بناءً على الاستخدام المتوقع ، استخدم حاسبة التسعير عند الانتهاء من هذا البرنامج التعليمي ، يمكنك تجنب الفوترة المستمرة عن طريق حذف الموارد التي قمت بإنشائها. لمزيد من المعلومات ، راجع التنظيف ## قبل أن تبدأ ، اتبع الخطوات التالية لتمكين Kubernetes Engine API: - قم بزيارة صفحة Kubernetes Engine في وحدة تحكم Google Cloud - إنشاء أو تحديد مشروع - انتظر حتى يتم تمكين API والخدمات ذات الصلة. هذا يمكن أن يستغرق عدة دقائق - تأكد من تمكين الفوترة لمشروع Cloud الخاص بك. تعرف على كيفية التحقق من تمكين الفوترة في مشروع ما قم بتثبيت أدوات سطر الأوامر التالية المستخدمة في هذا البرنامج التعليمي: - تُستخدم gcloudis لإنشاء مجموعات Kubernetes Engine وحذفها تم تضمين gcloudis في ملف gcloudCLI - يستخدم kubectlis لإدارة Kubernetes ، وهو نظام تزامن الكتلة الذي يستخدمه Kubernetes Engine. يمكنك تثبيت ملفات kubectlusing gcloud: تقوم مكونات gcloud بتثبيت kubectl استنساخ نموذج التعليمات البرمجية من GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-sample / hello-app / manifests تعيين الافتراضيات لملف لتوفير الوقت في كتابة معرف المشروع الخاص بك وخيارات منطقة Compute Engine في ملف أداة سطر أوامر gcloud أداة سطر أوامر gcloud ، يمكنك تعيين الإعدادات الافتراضية: تعيين مشروع gcloud config تعيين تكوين المشروع idgcloud الحوسبة / منطقة حساب المنطقة قم بإنشاء كتلة قم بإنشاء كتلة حاوية باسم domain-test لنشر تطبيق الويب الخاص بك: تقوم مجموعات حاوية gcloud بإنشاء اختبار المجال ## نشر تطبيق الويب الخاص بك يصف البيان التالي عملية نشر تقوم بتشغيل نموذج لصورة حاوية تطبيق ويب: # Copyright 2021 Google LLC # # مُرخص بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص # لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. # يمكنك الحصول على نسخة من الترخيص على # # httpwww.apache.org /licenses/LICENSE-2.0 # # ما لم يكن مطلوبًا بموجب القانون المعمول به أو تمت الموافقة عليه كتابيًا ، يتم توزيع البرنامج # الموزع بموجب الترخيص على أساس "كما هو"، # بدون ضمانات أو شروط من أي نوع ، سواء كانت صريحة أو ضمنية. # راجع الترخيص الخاص بأذونات تحكم اللغة المحددة و # القيود بموجب الترخيص. apiVersion: apps / v1 kind: نشر البيانات الوصفية: الاسم: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: labels: app: hello tier: web spec: container: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 المنافذ: - containerPort: 8080 الموارد: الطلبات : وحدة المعالجة المركزية: 200 م قم بتشغيل الأمر التالي لإنشاء النشر: تطبيق kubectl -f helloweb -loyment.yaml ## تعريض التطبيق الخاص بك يمكنك عرض تطبيقك على GKE باستخدام أي من الطرق التالية: استخدم خدمة ، والتي تنشئ موازن تحميل شبكة TCP الذي يعمل مع عناوين IP الإقليمية. استخدم Ingress ، الذي ينشئ HTTP (S) Load Balancer ويدعم عناوين IP العالمية لمعرفة المزيد حول إيجابيات وسلبيات كل طريقة ، راجع إعداد موازنة تحميل HTTP (S) مع Ingress استخدم خدمة للتأكد من أن التطبيق الخاص بك يحتوي على عنوان IP عام ثابت ، يجب عليك حجز عنوان IP ثابت إذا اخترت عرض تطبيقك باستخدام خدمة ، فيجب عليك إنشاء عنوان IP إقليمي. تعمل عناوين IP العالمية فقط مع نوع مورد الدخول ، كما هو موضح في القسم التالي لاستخدام خدمة ، قم بإنشاء عنوان IP ثابت مسمى helloweb-ip في منطقة us-central1: gcloud إنشاء عناوين حساب gcloud helloweb-ip - منطقة us-central1 للعثور على عنوان IP الثابت الذي قمت بإنشائه ، قم بتشغيل الأمر التالي: تصف عناوين حساب gcloud helloweb-ip - منطقة us-central1 الإخراج: العنوان: 203.0.113.32 .. موصل التكوين ** ملاحظة تتطلب هذه الخطوة موصل التكوين. اتبع ال تعليمات التحميل لتثبيت رابط التكوين على المجموعة الخاصة بك apiVersion: compute.cnrm.cloud.google.com/v1beta1 النوع: ComputeAddress البيانات الوصفية: الاسم: helloweb-ip spec: location: us-central1 للعثور على عنوان IP الثابت ، قم بتشغيل الأمر التالي: kubectl الحصول على computeaddress helloweb-ip -o jsonpathspec.address} 'يصف البيان التالي خدمة من نوع LoadBalancer ، والتي تُنشئ موازن تحميل شبكة لفضح Pods مع IP عام يحل محل "YOUR.IP.ADDRESS.HERE"بعنوان IP الثابت: # حقوق الطبع والنشر 2021 Google LLC # # مرخصة بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص # لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. # يمكنك الحصول على نسخة من الترخيص على # # httpwww.apache.org /licenses/LICENSE-2.0 # # ما لم يكن مطلوبًا بموجب القانون المعمول به أو تمت الموافقة عليه كتابيًا ، يتم توزيع البرنامج # الموزع بموجب الترخيص على أساس "كما هو"، # بدون ضمانات أو شروط من أي نوع ، سواء كانت صريحة أو ضمنية. # راجع الترخيص الخاص بأذونات تحكم اللغة المحددة و # القيود بموجب الترخيص. apiVersion: v1 kind: بيانات تعريف الخدمة: الاسم: helloweb labels: app: hello spec: selector: app: hello tier: web port: - port: 80 targetPort: نوع 8080: LoadBalancer loadBalancerIP: "YOUR.IP.ADDRESS.HERE"ثم قم بإنشاء الخدمة: تطبيق kubectl -f helloweb-service-static-ip.yaml لمشاهدة عنوان IP المحجوز المرتبط بموازن التحميل: kubectl الحصول على الخدمة NAME CLUSTER-IP EXTERNAL-IP PORT (S) العمر helloweb 10.31.254.176 203.0.113.32 80: 30690 / TCP 54s استخدم الدخول إذا اخترت عرض تطبيقك باستخدام Ingress ، مما يؤدي إلى إنشاء HTTP (S) Load Balancer ، فيجب عليك حجز عنوان IP ثابت عالمي. لا تعمل عناوين IP الإقليمية مع Ingress لمعرفة المزيد حول كيفية استخدام Ingress لعرض تطبيقاتك على الإنترنت ، راجع البرنامج التعليمي Setting up HTTP (S) Load Balancing with Ingress تعليمي لإنشاء عنوان IP ثابت عالمي مسمى helloweb- الملكية الفكرية: gcloud إنشاء عناوين حساب gcloud helloweb-ip - global للعثور على عنوان IP الثابت الذي قمت بإنشائه: تصف عناوين حساب gcloud helloweb-ip --globalOutput: العنوان: 203.0.113.32 .. موصل التكوين ** ملاحظة تتطلب هذه الخطوة موصل التكوين. اتبع ال تعليمات التحميل لتثبيت رابط التكوين على المجموعة الخاصة بك apiVersion: compute.cnrm.cloud.google.com/v1beta1 النوع: ComputeAddress البيانات الوصفية: الاسم: helloweb-ip spec: location: global kubectl application -f compute-address-global.yaml يصف البيان التالي تطبيق ويب Ingress thata على IP ثابت مع مصدرين: - أ الخدمة النوع: NodePort - ان تم تكوينه باستخدام اسم الخدمة وتعليق IP الثابت # حقوق الطبع والنشر 2021 Google LLC # # مرخصة بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص # لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. # يمكنك الحصول على نسخة من الترخيص على # # httpwww.apache.org /licenses/LICENSE-2.0 # # ما لم يكن مطلوبًا بموجب القانون المعمول به أو تمت الموافقة عليه كتابيًا ، يتم توزيع البرنامج # الموزع بموجب الترخيص على أساس "كما هو"، # بدون ضمانات أو شروط من أي نوع ، سواء كانت صريحة أو ضمنية. # راجع الترخيص للأذونات الحاكمة للغة المحددة و # القيود بموجب الترخيص. apiVersion: network.k8s.io/v1 النوع: البيانات الوصفية الداخلة: الاسم: helloweb التعليقات التوضيحية: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080api الإصدار: v1 kind: بيانات وصفية للخدمة: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: hello المستوى: منافذ الويب: - المنفذ: 8080 targetPort: 8080 ال يحدد التعليق التوضيحي kubernetes.io/ingress.global-static-ip-name الاسم لمورد عنوان IP العالمي الذي سيتم ربطه بتحميل HTTP (S) موازن تطبيق المورد على الكتلة: تطبيق kubectl -f helloweb-ingress-static-ip.yaml الإخراج: تم إنشاء خدمة "helloweb"التي تم إنشاؤها بواسطة "helloweb-backend"لمشاهدة عنوان IP الاحتياطي المرتبط بموازن التحميل: الحصول على دخول kubectl الإخراج: الاسم يستضيف عنوان المنافذ العمر هيلويب * 203.0.113.32 80 4 م ## زيارة عنوان IP الثابت المحجوز للتحقق من تكوين موازن التحميل بشكل صحيح ، يمكنك إما استخدام ملف متصفح الويب لزيارة عنوان IP أو استخدامه لفة: حليقة http203.0.113.32 / الإخراج: مرحبا بالعالم! اسم المضيف: helloweb-3766687455-8lvqv ## تكوين سجلات اسم المجال الخاص بك لجعل المتصفحات تستعلم عن اسم المجال الخاص بك ، مثل example.com أو المجال الفرعي الاسم ، مثل blog.example.com ، أشر إلى عنوان IP الثابت الذي حجزته ، يجب عليك تحديث سجلات DNS (خادم اسم المجال) لاسم المجال الخاص بك يجب عليك إنشاء ملف ** A ** (العنوان) اكتب سجل DNS للمجال أو المجال الفرعي الخاص بك الاسم وتكوين قيمته باستخدام عنوان IP المحجوز تتم إدارة سجلات DNS الخاصة بنطاقك بواسطة خادم الأسماء الخاص بك. قد يكون خادم الأسماء هو "المسجل"الذي سجلت فيه نطاقك ، أو خدمة DNS مثل Cloud DNS ، أو مزود آخر تابع لجهة خارجية إذا كان خادم الأسماء الخاص بك هو Cloud DNS: اتبع دليل Cloud DNS Quickstart لتكوين DNS A سجل لاسم المجال الخاص بك بعنوان IP المحجوز لتطبيقك. إذا كان خادم الأسماء مزودًا آخر: ارجع إلى وثائق خدمة DNS الخاصة بك حول إعداد سجلات DNS A لتكوين اسم المجال الخاص بك. إذا اخترت استخدام Cloud DNS بدلاً من ذلك ، فارجع إلى الترحيل إلى Cloud DNS ## زيارة اسم المجال الخاص بك للتحقق من أن سجلات DNS A لاسم المجال الخاص بك تتحلل إلى عنوان IP الذي حجزته ، قم بزيارة اسم المجال الخاص بك لإجراء استعلام DNS لسجل A لاسم المجال الخاص بك ، قم بتشغيل ملف مضيف أمر: المضيف example.com الإخراج: يحتوي موقع example.com على العنوان 203.0.113.32 في هذه المرحلة ، يمكنك توجيه متصفح الويب الخاص بك إلى اسم المجال الخاص بك وزيارة موقع الويب الخاص بك! ## نظف لتجنب تكبد رسوم على حساب Google Cloud الخاص بك للموارد المستخدمة في هذا البرنامج التعليمي ، إما حذف المشروع الذي يحتوي على الموارد ، أو الاحتفاظ بالمشروع وحذف الموارد الفردية احذف موارد موازنة التحميل: kubectl delete ingress، service -l app = مرحبًا حرر عنوان IP الثابت المحجوز. بعد حذف موازن التحميل ، لم يعد عنوان IP غير المستخدم ولكن المحجوز خاليًا من الرسوم ويتم تحرير فواتير له حسب تسعير عنوان IP غير المستخدم. قم بتشغيل الأوامر التالية لتحرير مورد IP الثابت: إذا استخدمت خدمة: عناوين حساب gcloud حذف helloweb-ip - منطقة us-central1 إذا استخدمت دخولًا: عناوين حساب gcloud حذف helloweb-ip --global - احذف نموذج الطلب: kubectl حذف -f helloweb -loyment.yaml انتظر حتى يتم حذف موازن التحميل من خلال مشاهدة إخراج الأمر التالي. يجب ألا يُظهر الإخراج قاعدة إعادة توجيه تحتوي على "helloweb"في اسمه: قائمة قواعد إعادة التوجيه لحساب gcloud احذف مجموعة الحاوية: مجموعات حاوية gcloud تحذف اختبار المجال ## ماذا بعد سجل اسم المجال الخاص بك من خلال Google Domains استكشف البرامج التعليمية الأخرى لـ Kubernetes Engine استكشف الهياكل المرجعية والرسوم التخطيطية والبرامج التعليمية وأفضل الممارسات حول Google Cloud. ألق نظرة على مركز Cloud Architecture.