إعداد خطة مبيعات CI/CD لعمليات النشر السحابية

يُعد التسليم السريع للبرامج أمرًا مهمًا لإدارة تطبيقاتك في السحابة بكفاءة. Jenkins هو منتج شائع لأتمتة أنابيب التكامل المستمر (CI) والنشر المستمر (CD) لأحمال العمل فيOracle Cloud.

البنية

في هذه البنية المرجعية، تتم استضافة Jenkins على Oracle Cloud Infrastructure لإضفاء الطابع المركزي على أتمتة الإنشاء وقياس النشر. تقوم عملية التكامل المستمر بتكوين تطبيق ونشره باستخدام Oracle Cloud Infrastructure Registry (OCIR) ومحرك الحاوية لـ Kubernetes (OKE). يتم استخدام GitHub لإدارة التعليمات البرمجية المصدر.

يوفر GitHub تكامل خطاف الويب، لذا يبدأ Jenkins تشغيل عمليات الإنشاء والاختبار التلقائية بعد كل إيداع تعليمة برمجية. يتم توزيع عينة تطبيق ويب كجزء من توجيه CI/CD، الذي يمكن للمستخدمين النهائيين الوصول إليه من مجموعة Container Engine for Kubernetes. لتبسيط العملية، يتم استخدام Terraform لأتمتة البنية التحتية.

في هذه البنية المرجعية، تستفيد Terraform من وحدة Terraform قادرة على نشر Jenkins في العديد من التكوينات المختلفة من جهاز ظاهري Jenkins واحد حتى تكوين نقطة توصيل وحدة تحكم (خادم) ووكيل (عامل). وهذا يعني أنه يمكن دمج وحدة Jenkins النمطية في عمليات نشر بنية أخرى لحالات استخدام غير Kubernetes (على سبيل المثال تطوير تطبيق APEX وWebLogic على الأجهزة الظاهرية وما إلى ذلك).

يعني تكوين الوكيل أنه يمكن إعادة تكوين البيئة لتوفير عدد مختلف من طبعات الحوسبة التي تعكس متطلبات حمل العمل. ويشمل ذلك إمكانية استبدال الأجهزة الظاهرية للوكيل لتجنب مشاكل تراكم التبعيات القديمة، وتعارضات التبعية المؤقتة، وبناء العمل بتبعيات غير معلنة.

يتم تكوين نقاط توصيل الأجهزة الظاهرية (VM Nodes) التي تستخدم Jenkins باستخدام صورة جهاز ظاهري محددة مسبقًا تم إنشاؤها مسبقًا باستخدام جميع البرامج اللازمة لدعم Jenkins.

يوضح الرسم البياني التالي هيكل المرجع هذا.

ما يلي هو وصف cicd-oci.png
وصف الشكل التوضيحي cicd-oci.png

cicd-oci-oracle.zip

تشتمل هذه البنية على المكونات التالية:
  • Region (المنطقة)

    منطقة Oracle Cloud Infrastructure هي منطقة جغرافية محلية تحتوي على مركز بيانات واحد أو أكثر، تسمى نطاقات الإتاحة. والمناطق مستقلة عن المناطق الأخرى، ويمكن لمسافات شاسعة أن تفصلها (عبر البلدان أو حتى القارات).

  • نطاقات الإتاحة

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

  • شبكة السحابة الظاهرية (VCN) والشبكات الفرعية

    يعمل Jenkins على طبعة حوسبة جهاز ظاهري (VM) يتم توزيعها في VCN يمكنك تقسيمها إلى شبكات فرعية. يتم استضافة Jenkins على الشبكة الفرعية العامة الإقليمية A، ويتم نشر Container Engine for Kubernetes في الشبكة الفرعية العامة الإقليمية B.

  • حساب الطبعة

    يتم توزيع Jenkins على جهاز VM لطبعة Compute. تقوم مجموعة Container Engine for Kubernetes أيضًا بتشغيل نقاط التوصيل الخاصة بها على طبعات الحوسبة.

  • Container Engine for Kubernetes

    Container Engine for Kubernetes خدمة مدارة بالكامل وقابلة للتوسيع ومتاحة للغاية يمكنك استخدامها لتوزيع تطبيقاتك المودعة في حاويات على السحابة. يمكنك تحديد موارد الحوسبة التي تتطلبها تطبيقاتك، ويقوم Container Engine for Kubernetes بتزويدها في Oracle Cloud Infrastructure في مستأجر موجود.

  • سجل النظام

    سجل النظام هو سجل تديره Oracle يتيح لك تبسيط تطوير سير عمل الإنتاج. يسهل التسجيل عليك كمطور تخزين ومشاركة وإدارة البيانات الاصطناعية للتطوير مثل صور Docker.

  • Jenkins

    Jenkins هو خادم أتمتة مفتوح المصدر يتيح للمطورين إمكانية إنشاء البرامج واختبارها ونشرها بشكل موثوق. يدعم Jenkins الوضع الرئيسي/الوكيل، حيث يتم تفويض حمل عمل مشروعات البناء إلى نقاط توصيل وكيل متعددة بواسطة الرئيسي. يمكن لتثبيت Jenkins واحد استضافة مشروعات متعددة أو توفير بيئات مختلفة لعمليات الإنشاء والاختبار.

التوصيات

قد تختلف متطلباتك عن البنية الموضحة هنا. استخدام التوصيات التالية كنقطة بداية.

  • حوسبة الأشكال

    تستخدم هذه البنية صورة Oracle Linux OS مع شكل VM.Standard 2.1 لاستضافة كل من خادم Jenkins ومحرك الحاوية لنقاط توصيل مجموعة Kubernetes. إذا كان التطبيق بحاجة إلى ذاكرة أو نواة أكثر، فيمكنك اختيار شكل مختلف.

  • VCN

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

    بعد تكوين VCN، يمكنك تغيير كتل CIDR الخاصة بها وإضافتها وإزالتها.

    تستخدم هذه البنية VCN عام لاستضافة Container Engine for Kubernetes. يمكنك أيضًا استخدام VCN خاص. في هذه الحالة، استخدم جيت واي NAT لمنح المجموعة حق الوصول عبر الإنترنت العام.

  • Jenkins

    تقوم هذه البنية بتوزيع Jenkins على طبعة Compute. يتم استخدام نقطة توصيل Jenkins الرئيسية لإنشاء خطة مبيعات CI/CD. إذا كان لديك خطوط أنابيب متعددة للإنشاء والتشغيل بالتوازي، يمكنك استخدام نقطة توصيل وكيل Jenkins لتطوير المزيد من خطوط الأنابيب.

  • Container Engine for Kubernetes

    تقوم هذه البنية بنشر مجموعة Container Engine for Kubernetes. يتم توزيع نقاط توصيل العامل على VM.Standard2.1 Oracle Linux OS. تستخدم هذه البنية ثلاث نقاط توصيل عامل في المجموعة، ولكن يمكنك تكوين ما يصل إلى 1000 نقطة توصيل في كل مجموعة.

  • سجل النظام

    تقوم هذه البنية بنشر سجل النظام كسجل Docker خاص للاستخدام الداخلي. يتم إرسال صور Docker إلى سجل النظام وسحبها منه. يمكنك أيضًا استخدام سجل النظام كسجل Docker عام، مما يتيح لأي مستخدم لديه إمكانية الوصول إلى الإنترنت ومعرفة عنوان URL المناسب لسحب الصور من المستودعات العامة في Oracle Cloud.

الاعتبارات

  • قابلية التوسيع

    يمكنك توسيع نطاق التطبيق عن طريق تحديث عدد نقاط توصيل العامل في مجموعة Container Engine for Kubernetes، تبعًا للتحميل. يمكنك أيضًا التوسيع من خلال تقليل عدد نقاط توصيل العامل في المجموعة. عند تكوين خدمة في المجموعة، يمكنك تكوين موازنة تحميل لتوزيع حركة المرور بين نقاط التوصيل المعينة لهذه الخدمة. بالنسبة لـ Jenkins، يمكنك استخدام نقطة توصيل Jenkins الرئيسية لتكوين المزيد من الوكلاء لخطوط أنابيب متعددة.

  • إتاحة التطبيق

    توفر نطاقات الخطأ أفضل مرونة في نطاق إتاحة واحد. يمكنك توزيع طبعات الحوسبة التي تقوم بنفس المهام في نطاقات إتاحة متعددة. يزيل هذا التصميم نقطة فشل واحدة من خلال إدخال التكرار.

  • إمكانية الإدارة

    تستخدم هذه البنية نموذج تطبيق ويب مستضاف على GitHub للتحكم في المصدر. يتم استخدام سجل النظام في خطة مبيعات الإنشاء لتخزين صورة إنشاء Docker للتطبيق.

  • التأمين

    استخدم السياسات لتقييد من يمكنه الوصول إلى موارد Oracle Cloud Infrastructure التي تمتلكها شركتك وكيفية ذلك.

    تم تكامل محرك الحاويات لـ Kubernetes مع Oracle Cloud Infrastructure Identity and Access Management (IAM )، الذي يوفر عملية تصديق سهلة باستخدام وظيفة هوية Oracle Cloud Infrastructure الأصلية.

توزيع

التعليمة البرمجية المطلوبة لنشر هذه البنية المرجعية متاحة في GitHub. يمكنك سحب التعليمة البرمجية إلى Oracle Cloud Infrastructure Resource Manager بنقرة واحدة وتكوين المكدس وتوزيعه. بدلاً من ذلك، قم بتنزيل التعليمات البرمجية من GitHub إلى الكمبيوتر، وتخصيص التعليمات البرمجية، وتوزيع البنية باستخدام Terraform CLI.

  • التوزيع باستخدام Oracle Cloud Infrastructure Resource Manager:
    1. انقر على توزيع على Oracle Cloud

      إذا لم تكن قد قمت بتسجيل الدخول بالفعل، أدخل بيانات صلاحية المقيم والمستخدم.

    2. راجع البنود والشروط وقبولها
    3. اختر المنطقة التي تريد توزيع المكدس بها.
    4. اتبع الموجهات والتعليمات المعروضة على الشاشة لتكوين المكدس.
    5. بعد تكوين المكدس، انقر على إجراءات Terraform، وحدد خطة.
    6. في انتظار إتمام الوظيفة، ومراجعة الخطة.

      لإجراء أية تغييرات، ارجع إلى صفحة تفاصيل المكدس وانقر على تحرير المكدس وقم بإجراء التغييرات المطلوبة. ثم قم بتشغيل إجراء الخطة مرة أخرى.

    7. إذا لم تكن هناك حاجة إلى أية تغييرات أخرى، ارجع إلى صفحة تفاصيل المكدس، وانقر على إجراءات Terraform، وحدد تطبيق.
  • النشر باستخدام Terraform CLI:
    1. انتقل إلى GitHub.
    2. قم بتنزيل التعليمة البرمجية أو استنساخها إلى الكمبيوتر المحلي.
    3. اتبع الإرشادات الواردة في README.md.

أرشيف التغيير

يسرد هذا السجل التغييرات الهامة: