DevOps and Infrastructure

تطبيق GitOps باستخدام ArgoCD لتسليم تطبيقات Kubernetes تلقائياً

في المشهد المتطور لـ DevOps، أصبح الانتقال من النشر اليدوي إلى البنية التحتية التصريحية المؤتمتة بالكامل معياراً لفرق الهندسة القابلة للتوسع. في قلب هذا التحول يكمن GitOps، وهو إطار عمل تشغيلي يستخدم Git كمصدر وحيد للحقيقة للبنية التحتية والتطبيقات التصريحية. بينما تسهل عدة أدوات هذا النموذج، برز ArgoCD كمعيار فعلي للتسليم المستمر في بيئات Kubernetes. يستكشف هذا المنشور كيفية تنفيذ ArgoCD لأتمتة خط تسليم التطبيقات الخاص بك بفعالية.

فهم الفلسفة الأساسية

قبل الغوص في التنفيذ، من الضروري فهم المبدأ الأساسي لـ GitOps: يجب أن تتطابق حالة العنقود (Cluster) مع الحالة المحددة في مستودع Git. على عكس أنابيب CI/CD التقليدية التي تدفع التغييرات مباشرة إلى العنقود، يعمل ArgoCD بنموذج "السحب" (Pull). يقوم بمراقبة الحالة الحية لعنقود Kubernetes الخاص بك باستمرار ومقارنتها بالحالة المرغوبة المحددة في مستودعات Git الخاصة بك. إذا تم اكتشاف انحراف—سواء كان تغييراً يدوياً أجراه مسؤول أو خطأ في التكوين—يقوم ArgoCD بتصحيحه تلقائياً ليتطابق مع بيان Git.

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

التثبيت والتكوين الأولي

يعد إعداد ArgoCD أمراً مباشراً بفضل مخططات Helm الرسمية الخاصة به. بالنسبة لبيئة الإنتاج، يُنصح بتثبيت ArgoCD في مساحة اسم مخصصة. أدناه هو الأمر لتثبيت أحدث إصدار مستقر:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argocd/stable/manifests/install.yaml

بمجرد تشغيل الحاويات (Pods)، يمكنك الوصول إلى واجهة ArgoCD UI عن طريق توجيه المنافذ (port-forwarding) لخدمة الخادم:

kubectl port-forward svc/argocd-server -n argocd 8080:443

بعد تسجيل الدخول (بيانات الاعتماد الافتراضية هي admin وكلمة المرور التي تم إنشاؤها تلقائياً والمُسترجعة عبر kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d)، أنت جاهز لتعريف تطبيقاتك.

تعريف التطبيقات وسياسات المزامنة

الوحدة الأساسية في ArgoCD هي مورد Application. يخبر هذا المورد المخصص ArgoCD بمكان العثور على ملفات البيان الخاصة بك، وأي عنقود Kubernetes يستهدفه، وكيفية التعامل مع المزامنة. يتضمن بيان Application النموذجي عنوان URL لمستودع المصدر، والمراجعة المستهدفة (الفرع أو الوسم)، ومساحة الاسم الوجهة.

إحدى أقوى ميزات ArgoCD هي سياسة المزامنة الخاصة بها. يمكنك تكوين التطبيق للمزامنة تلقائياً عند تحديث مستودع Git. هذا يتيح التسليم المستمر الحقيقي. أدناه مثال على بيان Application مُهيأ للمزامنة التلقائية مع تمكين الإصلاح الذاتي:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/myorg/my-repo.git
    targetRevision: main
    path: k8s/base
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true

في هذا المثال، يضمن prune: true إزالة الموارد المعرفة في Git من العنقود إذا تم حذفها من المستودع، بينما يسمح selfHeal: true لـ ArgoCD بتجاوز أي تغييرات يدوية أجريت مباشرة على العنقود.

أفضل الممارسات للاستخدام في بيئة الإنتاج

بينما يكون الإعداد الأساسي بسيطاً، يتطلب GitOps الجاهز للإنتاج اهتماماً بالتفاصيل. أولاً، استخدم دائماً مجموعات التطبيقات (Application Sets) إذا كنت تدير بيئات متعددة أو مستأجرين. تتيح لك مجموعات التطبيقات تعريف قالب للتطبيقات وإنشاؤها ديناميكياً بناءً على معلمات مثل اسم البيئة أو المنطقة، مما يقلل بشكل كبير من تكرار كود YAML.

ثانياً، قم بتأمين مثيل ArgoCD الخاص بك. استخدم OAuth2 أو SAML للمصادقة، وقيد سياسات الشبكة للحد من الوصول إلى واجهة المستخدم، وتأكد من تخزين بيانات اعتماد مستودع Git بشكل آمن باستخدام ميزات إدارة الأسرار في ArgoCD. أخيراً، استفد من الإشعارات لدمج ArgoCD مع خدمات Slack أو البريد الإلكتروني. الحصول على تنبيهات فورية عند فشل النشر أو اكتمال عملية المزامنة يبقي فريقك على اطلاع واستجابة.

الخاتمة

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

Share: