سير عمل CI/CD باستخدام GitOps - Kubernetes الممكنة في Azure Arc

هام

يستخدم سير العمل الموضح في هذا المستند GitOps مع Flux v1. يتوفر GitOps مع Flux v2 الآن لمجموعات Kubernetes وAzure Kubernetes Service (AKS) الممكنة في Azure Arc؛ تعرف على سير عمل CI/CD باستخدام GitOps مع Flux v2. نوصي بالترحيل إلى Flux v2 في أقرب وقت ممكن.

سينتهي دعم موارد تكوين نظام المجموعة المستندة إلى Flux v1 التي تم إنشاؤها قبل 1 يناير 2024 في 24 مايو 2025. بدءا من 1 يناير 2024، لن تتمكن من إنشاء موارد تكوين نظام المجموعة الجديدة المستندة إلى Flux v1.

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

تشرح هذه النظرة العامة المفاهيمية GitOps كواقع في دورة حياة تغيير التطبيق الكامل باستخدام Azure Arc وAzure Repos وAzure Pipelines. انتقل إلى مثال لتغيير تطبيق واحد إلى بيئات Kubernetes التي يتم التحكم فيها بواسطة GitOps.

البنية

ضع في اعتبارك تطبيقا تم نشره في بيئة Kubernetes واحدة أو أكثر.

GitOps CI/CD architecture

مستودع التطبيق

يحتوي مستودع التطبيق على التعليمات البرمجية للتطبيق التي يعمل عليها المطورون أثناء الحلقة الداخلية الخاصة بهم. تعيش قوالب توزيع التطبيق في هذا المستودع في نموذج عام، مثل Helm أو Kustomize. لا يتم تخزين القيم الخاصة بالبيئة. تستدعي التغييرات التي يتم إجراؤها على هذا المستودع مسار PR أو CI الذي يبدأ عملية النشر.

Container Registry

يحتفظ سجل الحاوية بجميع الصور الأولى والثالثة المستخدمة في بيئات Kubernetes. ضع علامة على صور تطبيق الطرف الأول بعلامات قابلة للقراءة البشرية وتثبيت Git المستخدم لبناء الصورة. تخزين صور الجهات الخارجية مؤقتا للأمان والسرعة والمرونة. قم بتعيين خطة لاختبار تحديثات الأمان وتكاملها في الوقت المناسب. لمزيد من المعلومات، راجع دليل ACR Consume and maintain public content للحصول على مثال.

مسار PR

يتم بوابات PRs إلى مستودع التطبيق على تشغيل ناجح لمسار PR. يقوم هذا المسار بتشغيل بوابات الجودة الأساسية، مثل التحليل واختبارات الوحدة على التعليمات البرمجية للتطبيق. يختبر المسار التطبيق وقوالب Dockerfiles وHelm المستخدمة للتوزيع في بيئة Kubernetes. يجب إنشاء صور Docker واختبارها، ولكن لا يتم دفعها. احتفظ بمدة المسار قصيرة نسبيا للسماح بالتكرار السريع.

CI Pipeline

يقوم مسار CI للتطبيق بتشغيل جميع خطوات مسار PR ويوسع عمليات التحقق من الاختبار والنشر. يمكن تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية لكل تثبيت، أو بوتيرة منتظمة مع مجموعة من التثبيتات. في هذه المرحلة، قم بإجراء اختبار التطبيق طويل جدا لمسار PR. ادفع صور Docker إلى سجل الحاويات بعد الإنشاء استعدادا للنشر. يمكن تحليل القالب الذي تم استبداله بمجموعة من قيم الاختبار. يجب تحليل الصور المستخدمة في وقت تشغيل الخدمة وبنائها واختبارها في هذه المرحلة. في بناء CI على وجه التحديد، يتم نشر البيانات الاصطناعية لخطوة CD للاستهلاك استعدادا للتوزيع.

Flux

Flux هي خدمة تعمل في كل مجموعة وهي مسؤولة عن الحفاظ على الحالة المطلوبة. تقوم الخدمة بشكل متكرر باستطلاع مستودع GitOps للتغييرات على نظام المجموعة الخاص بها وتطبيقها.

خط أنابيب CD

يتم تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية CD تلقائيا بواسطة بنيات CI الناجحة. يستخدم القوالب المنشورة مسبقا، ويستبدل قيم البيئة، ويفتح PR إلى مستودع GitOps لطلب تغيير الحالة المطلوبة لمجموعة Kubernetes واحدة أو أكثر. يراجع مسؤولو نظام المجموعة حالة تغيير PR ويوافقون على الدمج في مستودع GitOps. ثم ينتظر المسار اكتمال طلب السحب، مما يسمح ل Flux بالتقاط تغيير الحالة.

مستودع GitOps

يمثل مستودع GitOps الحالة المطلوبة الحالية لجميع البيئات عبر المجموعات. يتم التقاط أي تغيير في هذا المستودع بواسطة خدمة Flux في كل مجموعة ونشره. يتم إنشاء PRs مع تغييرات على الحالة المطلوبة ومراجعتها ودمجها. تحتوي PRs هذه على تغييرات على كل من قوالب النشر وبيانات Kubernetes المعروضة الناتجة. تسمح البيانات المقدمة ذات المستوى المنخفض بفحص أكثر دقة للتغييرات التي عادة ما لا تكون مرئية على مستوى القالب.

مجموعات أجهزة كمبيوتر Kubernetes

تخدم مجموعة Kubernetes واحدة على الأقل ممكنة من Azure Arc البيئات المختلفة التي يحتاجها التطبيق. على سبيل المثال، يمكن أن تخدم مجموعة واحدة كلا من بيئة التطوير و QA من خلال مساحات أسماء مختلفة. يمكن أن توفر المجموعة الثانية فصلا أسهل للبيئات وتحكما أكثر دقة.

مثال على سير العمل

بصفتها مطور تطبيق، أليس:

  • كتابة التعليمات البرمجية للتطبيق.
  • تحديد كيفية تشغيل التطبيق في حاوية Docker.
  • تعريف القوالب التي تقوم بتشغيل الحاوية والخدمات التابعة في مجموعة Kubernetes.

بينما تعرف Alice أن التطبيق يحتاج إلى القدرة على التشغيل في بيئات متعددة، فإنها لا تعرف الإعدادات المحددة لكل بيئة.

افترض أن Alice تريد إجراء تغيير تطبيق يغير صورة Docker المستخدمة في قالب نشر التطبيق.

  1. تغير Alice قالب النشر، وتدفعه إلى فرع بعيد على مستودع التطبيق، وتفتح طلب السحب للمراجعة.
  2. تطلب Alice من فريقها مراجعة التغيير.
    • يقوم مسار PR بتشغيل التحقق من الصحة.
    • بعد تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية بنجاح، يقوم الفريق بتسجيل الخروج ويتم دمج التغيير.
  3. تتحقق البنية الأساسية لبرنامج ربط العمليات التجارية CI من صحة تغيير Alice وتكتمل بنجاح.
    • التغيير آمن للنشر إلى نظام المجموعة، ويتم حفظ البيانات الاصطناعية في تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية CI.
  4. يدمج تغيير Alice البنية الأساسية لبرنامج ربط العمليات التجارية CD ويشغلها.
    • تلتقط البنية الأساسية لبرنامج ربط العمليات التجارية CD البيانات الاصطناعية المخزنة بواسطة تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية CI الخاصة ب Alice.
    • يستبدل مسار CD القوالب بقيم خاصة بالبيئة، ويرحل أي تغييرات مقابل حالة نظام المجموعة الموجودة في مستودع GitOps.
    • تنشئ البنية الأساسية لبرنامج ربط العمليات التجارية CD طلب السحب إلى مستودع GitOps مع التغييرات المطلوبة لحالة نظام المجموعة.
  5. يراجع فريق Alice طلب السحب الخاص بها ويوافق عليه.
    • يتم دمج التغيير في الفرع الهدف المقابل للبيئة.
  6. في غضون دقائق، يلاحظ Flux تغييرا في مستودع GitOps ويسحب تغيير Alice.
    • بسبب تغيير صورة Docker، يتطلب جراب التطبيق تحديثا.
    • يطبق Flux التغيير على نظام المجموعة.
  7. تختبر Alice نقطة نهاية التطبيق للتحقق من اكتمال النشر بنجاح.

    إشعار

    لمزيد من البيئات المستهدفة للتوزيع، يتكرر مسار CD عن طريق إنشاء طلب السحب للبيئة التالية ويكرر الخطوات من 4 إلى 7. تحتاج العملية العديد من الموافقة الإضافية على عمليات النشر أو البيئات الأكثر خطورة، مثل التغيير المتعلق بالأمان أو بيئة الإنتاج.

  8. بمجرد تلقي جميع البيئات عمليات نشر ناجحة، يكتمل المسار.

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

تعرف على المزيد حول إنشاء اتصالات بين نظام المجموعة الخاص بك ومستودع Git كمورد تكوين باستخدام Kubernetes التي تدعم Azure Arc