GitOps: Flux مقابل Argo CD

GitOps هي منهجية تطوير البرمجيات والعمليات التي تستخدم Git كمصدر الحقيقة لإعدادات النشر. يتضمن ذلك الاحتفاظ بالحالة المرغوبة لتطبيق أو بنية البيئة في مستودع Git واستخدام المناهج العمل المبنية على Git لإدارة ونشر التغييرات. إليك أدوات مفتوحة المصدر الشهيرة إثنتين تساعد المنظمات على تنفيذ GitOps لإدارة تطبيقات Kubernetes الخاصة بهم وهما Flux وArgo CD. في هذا المقال، سنلقي نظرة فاحصة على هذه الأدوات، مميزاتها وعيوبها، وكيفية إعدادها. تابع درس DZone ذات الصلة حول كيفية تشغيل خوادم CI/CD تلقائيًا باستخدام Jenkins وKubernetes.

الاستخدامات الشائعة لـ Flux وArgo CD

Flux

  • التوزيع المستمر: يمكن استخدام Flux لأتمتة ممر النشر وضمان نشر التغييرات تلقائيًا بمجرد دفعها إلى مستودع Git.
  • إدارة الإعدادات: يسمح Flux لك بتخزين وإدارة إعدادات تطبيقك كشيء قابل للتتبع، مما يجعل التحكم في الإصدارات وتتبع التغييرات أسهل.
  • البنية الثابتة: Flux يساعد في تطبيق نهج البنية الثابتة حيث يتم إجراء التغييرات فقط من خلال مستودع Git وليس من خلال التدخل اليدوي في النظام العنكبوتي.
  • النشر الأزرق-الأخضر: Flux يدعم النشر الأزرق-الأخضر حيث يتم نشر نسخة جديدة من التطبيق جنبًا إلى جنب مع النسخة الحالية، ويتم تحويل المرور تدريجيًا إلى النسخة الجديدة.

Argo CD

  • النشر المستمر: يمكن استخدام Argo CD لأتمتة في العملية التطبيقية، مؤكدًا أن التطبيقات دائمًا على استعداد للتحديثات الأخيرة من مستودع Git.
  • ترقية التطبيق: Argo CD يدعم ترقية التطبيق حيث يمكن ترقية التطبيقات من بيئة إلى أخرى. على سبيل المثال، من التطوير إلى الإنتاج.
  • إدارة متعددة المجمعات: يمكن استخدام Argo CD لإدارة التطبيقات عبر مجموعات متعددة، مؤكدًا الحالة المرغوبة للتطبيقات ثابتة عبر جميع المجموعات.
  • إدارة التراجع: Argo CD يوفر قدرات التراجع، مما يجعل من السهل التراجع عن التغييرات في حالة حدوث أخطاء.

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

ما هو فلوكس؟

فلوكس هو أداة GitOps تقوم بتشغيل تشغيل تطبيقات على كيبرنت. يعمل عن طريق مراقبة مستمرة لحالة مستودع Git وتطبيق أي تغييرات على النظام الأساسي. يدمج فلوكس مع مزودي Git مختلفين مثل GitHub، GitLab، و Bitbucket. عندما يتم إجراء تغييرات في المستودع، يكتشف فلوكس تلك التغييرات تلقائيًا ويقوم بتحديث النظام الأساسي وفقًا لذلك. البرنامج التعليمي ذو الصلة: كيفية توليد تطبيقات البرنج بوت باستخدام GitLab CI/CD.

الفوائد المتعلقة بفلوكس

  • النشر التلقائي: يقوم فلوكس بأتمتة في عملية النشر، مما يقلل من الأخطاء اليدوية ويتيح للمطورين التركيز على مهام أخرى.
  • نهج Git: يستغل فلوكس Git كمصدر حقيقة، مما يجعل من السهل تتبع وتراجع التغييرات.
  • التكوين الإعلاني: يستخدم فلوكس توجيهات كيبرنت لتحديد الحالة المرغوبة للنظام الأساسي، مما يجعل من السهل إدارة وتتبع التغييرات.

سلبيات Flux

  • التخصيص المحدود: Flux يدعم مجموعة محدودة من التخصيصات فقط، والتي قد لا تكون مناسبة لجميع الاستخدامات.
  • منحدر تعلم شاق: Flux لديه منحدر تعلم شاق للمستخدمين الجدد ويتطلب فهمًا عميقًا لـ Kubernetes و Git.

كيفية تهيئة Flux

المتطلبات الأساسية

  • A running Kubernetes cluster.
  • تثبيت Helm على جهازك المحلي.
  • A Git repository for your application’s source code and Kubernetes manifests.
  • عنوان URL المستودع ومفتاح SSH لمستودع Git.

الخطوة 1: إضافة مستودع Flux Helm

الخطوة الأولى هي إضافة مستودع Flux Helm إلى جهازك المحلي. قم بتشغيل الأمر التالي لإضافة المستودع:

Shell

 

helm repo add fluxcd https://charts.fluxcd.io

الخطوة 2: تثبيت Flux

الآن بعد إضافة مستودع Flux Helm، يمكنك تثبيت Flux على الخادم. قم بتشغيل الأمر التالي لتثبيت Flux:

Shell

 

helm upgrade -i flux fluxcd/flux \
--set [email protected]:/.git \
--set git.path= \
--set git.pollInterval=1m \
--set git.ssh.secretName=flux-git-ssh

في الأمر أعلاه، استبدل القيم النائبة بمعلومات مستودع Git الخاصة بك. المعلمة git.url هي عنوان URL مستودع Git، المعلمة git.path هي المسار إلى الدليل الذي يحتوي على مستندات Kubernetes، والمعلمة git.ssh.secretName هي اسم السرية التي تحتوي على مفتاح SSH للمستودع.

الخطوة 3: تأكد من التثبيت

بعد تشغيل الأمر أعلاه، يمكنك التحقق من تثبيت Flux عن طريق فحص حالة خوادم Flux. استخدم الأمر التالي لعرض الخوادم:

Shell

 

kubectl get pods -n <flux-namespace>

إذا كانت الخوادم تعمل، فقد تم تثبيت Flux بنجاح.

الخطوة 4: ربط Flux بمستودع Git الخاص بك

الخطوة الأخيرة هي ربط Flux بمستودع Git الخاص بك. استخدم الأمر التالي لإنشاء مفتاح SSH وإنشاء سرية:

Shell

 

ssh-keygen -t rsa -b 4096 -f id_rsa
kubectl create secret generic flux-git-ssh \
--from-file=id_rsa=./id_rsa --namespace=

في الأمر أعلاه، استبدل مكان حرف البديل <flux-namespace> بالمساحة التي تم تثبيت Flux فيها.

الآن، أضف المفتاح العام المولد كمفتاح نشر في مستودع Git الخاص بك.

لقد قمت بنجاح بإعداد Flux باستخدام Helm. كلما تم تعديل مستودع Git، سيكتشف Flux تلك التغييرات ويقوم بتحديث النظام الفرعي على النحو المناسب.

في الختام، إعداد Flux باستخدام Helm هو عملية بسيطة للغاية. باستخدام Git كمصدر حقيقة ومراقبة مستمرة لحالة النظام الفرعي، يساعد Flux في تبسيط عملية النشر وتقليل خطر الأخطاء اليدوية.

ما هو Argo CD؟

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

الإيجابيات المتعلقة بـ Argo CD

  • ميزات النشر المتقدمة: يوفر Argo CD ميزات نشر متقدمة، مثل التحديثات المتدرجة والنشر البريطاني، مما يسهل إدارة النشرات المعقدة.
  • واجهة مستخدم يسيرة: يوفر Argo CD واجهة مستخدم يسيرة تسهل إدارة النشرات، خاصة بالنسبة للمستخدمين غير التقنيين.
  • قابل للتخصيص: يتيح Argo CD التخصيص بشكل أكبر، مما يسهل تكييف الأداة حسب الحالات الفردية.

السلبيات المتعلقة بـ Argo CD

  • تكوين متعرج للتعلم: Argo CD يتطلب تكوينًا متعرجًا للتعلم لدى المستخدمين الجدد ويتطلب فهمًا عميقًا لـ Kubernetes وGit.
  • التعقيد: Argo CD لديها بنية أكثر تعقيدًا من Flux، مما يجعلها أكثر صعوبة في الإدارة وإصلاح المشكلات.

كيفية إعداد Argo CD

يمكن تثبيت Argo CD على سلطة الخادم الكبير باستخدام Helm، وهو مدير الحزم لسلطة الخادم الكبير. في هذا القسم، سنتحدث خلال خطوات إعداد Argo CD باستخدام Helm.

المتطلبات الأساسية

  • A running Kubernetes cluster.
  • تثبيت Helm على جهازك المحلي.
  • A Git repository for your application’s source code and Kubernetes manifests.

الخطوة 1: إضافة مستودع Helm لـ Argo CD

الخطوة الأولى هي إضافة مستودع Helm لـ Argo CD إلى جهازك المحلي. قم بتشغيل الأمر التالي لإضافة المستودع:

Shell

 

helm repo add argo https://argoproj.github.io/argo-cd

الخطوة 2: تثبيت Argo CD

الآن بعد إضافة مستودع Helm لـ Argo CD، يمكنك تثبيت Argo CD على الخادم. قم بتشغيل الأمر التالي لتثبيت Argo CD:

Shell

 

helm upgrade -i argocd argo/argo-cd --set server.route.enabled=true

الخطوة 3: تحقق من التثبيت

بعد تشغيل الأمر أعلاه، يمكنك التحقق من التثبيت عن طريق فحص حالة حزم Argo CD. قم بتشغيل الأمر التالي لعرض الحزم:

Shell

 

kubectl get pods -n argocd

إذا كانت الحزم تعمل، فقد تم تثبيت Argo CD بنجاح.

الخطوة 4: ربط Argo CD بمستودع Git الخاص بك

الخطوة الأخيرة هي ربط Argo CD بمستودع Git الخاص بك. Argo CD يوفر واجهة مستخدم بيئة العمل التي يمكنك استخدامها لإنشاء التطبيقات والاتصال بمستودع Git الخاص بك.

للوصول إلى واجهة Argo CD، قم بتشغيل الأمر التالي للحصول على الرابط:

Shell

 

kubectl get routes -n argocd

استخدم الرابط في متصفح الويب للوصول إلى واجهة Argo CD.

بمجرد الدخول إلى الواجهة، يمكنك إنشاء تطبيق جديد عن طريق توفير عنوان URL مستودع Git ومسار ملفات مانيفست Kubernetes. ستراقب Argo CD باستمرار المستودع بحثًا عن التغييرات وتطبيقها على الخوادم.

لقد قمت الآن بنجاح بإعداد Argo CD باستخدام Helm.

الخاتمة

Kubernetes و DevOps هي جزء أساسي من دورة الحياة التطويرية للبرامج، وتعتبر GitOps نهجًا قيمًا لأتمتة النشر وإدارة التطبيقات على Kubernetes. Flux و Argo CD هما أدوات GitOps شهيرتان توفران طريقة بسيطة وفعالة لأتمتة في العملية النشر، وفرض بنية أساسية غير قابلة للتغيير، وإدارة التطبيقات بطريقة متسقة ويمكن التنبؤ بها.

يركز Flux على أتمتة قناة النشر وتوفير إدارة الإعدادات كشفائل، بينما يوفر Argo CD حلاً أكثر شمولاً لـ GitOps، بما في ذلك ميزات مثل إدارة متعددة المجموعات، ترقية التطبيقات، وإدارة التراجع. تتمتع كلتا الأدوات بقوتين وضعفينهما، والاختيار بينهما يعتمد على المتطلبات المحددة للمنظمة والتطبيق.

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

Source:
https://dzone.com/articles/gitops-flux-vs-argo-cd