المقدمة
Argo CD هو تنفيذ مفتوح المصدر شهير لتنفيذ تسليم مستمر لـ GitOps على منصة Kubernetes. يجب أن تكون تطبيقاتك وتعريفاتك وتكويناتك وبيئاتك إعلانية ومُراقبة بالإصدار. كما يجب أن يكون نشر التطبيقات وإدارة دورة حياتها تلقائيًا وقابلة للتدقيق وسهلة الفهم. يمكن القيام بكل هذا باستخدام Argo.
يلتزم Argo CD بنفس أنماط ومبادئ GitOps، مما يتيح الحفاظ على حالة عقدة التجميع الخاصة بك باستخدام نهج إعلاني. يحدث التزامن عبر مستودع Git، حيث يتم تخزين تعريفات Kubernetes الخاصة بك. يمكن تحديد تعريفات Kubernetes بعدة طرق:
- تطبيقات Kustomize.
- مخططات Helm.
- تطبيقات Ksonnet.
- ملفات Jsonnet.
- مجلد عادي يحتوي على تعريفات YAML/json.
- أي أداة إدارة تكوين مخصصة مكونة كإضافة إدارة تكوين.
كما هو الحال مع كل تطبيق يعمل في مجموعة Kubernetes، يتم تكوين Argo CD عبر تعاريف الموارد المخصصة (CRDs) المخزنة داخل ملفات YAML. الأكثر أهمية هو تعريف المورد Application. في تطبيق Argo CD، تعرف أي مستودع Git يجب استخدامه لمزامنة أي مجموعة Kubernetes. يمكن أن يكون نفس مجموعة Kubernetes حيث تم نشر Argo CD، أو خارجيًا.
يتم تنفيذ Argo CD كمتحكم Kubernetes الذي يراقب باستمرار التطبيقات الجارية ويقارن الحالة الحالية (أو الحية) مقابل الحالة المستهدفة المرجوة (كما هو محدد في مستودع Git). يُعتبر التطبيق المنشور الذي تختلف حالته الحية عن الحالة المستهدفة من OutOfSync
. يقوم Argo CD بتقديم تقارير وتصور الاختلافات، بينما يوفر وسائل لمزامنة الحالة الحية بشكل تلقائي أو يدوي مع الحالة المستهدفة المرجوة.
يقدم Argo CD العديد من الميزات، وأبرزها:
- دعم لأدوات إدارة التكوين/التخطيط المتعددة، مثل:
Kustomize
،Helm
،Ksonnet
،Jsonnet
،plain-YAML
. - القدرة على إدارة ونشر على مجموعات متعددة.
- تكامل SSO (
OIDC
،OAuth2
،LDAP
،SAML 2.0
،GitHub
،GitLab
،Microsoft
،LinkedIn
). - التعددية وسياسات RBAC للتفويض.
- تحليل حالة الصحة لموارد التطبيق.
- إرجاع/تراجع في أي مكان لأي تكوين تم تنفيذه في مستودع Git.
- كشف تحول التكوين التلقائي وتصويره.
- واجهة مستخدم ويب توفر عرضًا في الوقت الحقيقي لنشاط التطبيق.
- واجهة سطر الأوامر للتحكم التلقائي والتكامل في CI.
- تكامل ويب هوك (GitHub، BitBucket، GitLab).
- خطافات PreSync، Sync، PostSync لدعم إطلاقات التطبيق المعقدة (مثل الترقيات الزرقاء/الخضراء والكناري).
- مقاييس Prometheus.
في هذا البرنامج التعليمي، ستتعلم كيفية:
- استخدام
Helm
لتوفيرArgo CD
لعقدتكDOKS
. - الحفاظ على تزامن حالة تطبيقات عقدة
Kubernetes
الخاصة بك مع مستودعGit
(استخدم مبادئGitOps
). - نشر وإدارة التطبيقات عبر Argo CD.
بعد الانتهاء من جميع الخطوات في هذا البرنامج التعليمي، يجب أن يكون لديك عقدة DOKS
مع Argo CD
متمركزة، والتي ستقوم بـ:
- معالجة توافق العقدة، عبر تعريفات التطبيقات CRDs.
- معالجة إصدارات Helm، باستخدام مصادر Helm محددة داخل CRDs التطبيق.
نظرة عامة على DOKS و Argo CD لإصدارات Helm
يظهر الرسم البياني أدناه كيفية إدارة Argo CD لتطبيقات Helm المستضافة باستخدام مستودع Git:
جدول المحتويات
- مقدمة
- المتطلبات المسبقة
- فهم مفاهيم Argo CD لنشر التطبيقات
- تثبيت Argo CD
- الوصول إلى واستكشاف واجهة الويب لـ Argo CD
- التعرف على واجهة سطر الأوامر لـ Argo CD
- بدء تشغيل تطبيقات Argo CD
- استخدام مجموعات تطبيقات Argo CD
- إلغاء تثبيت تطبيقات Argo CD
- الاستنتاج
المتطلبات المسبقة
لإكمال هذا البرنامج التعليمي، ستحتاج:
- A working
DOKS
cluster that you have access to. Please follow the Starter Kit DOKS Setup Guide to find out more.to find out more. - A GitHub repository and branch, to store Argo CD and your applications manifests. Must be created beforehand.
- A Git client, for cloning the
Starter Kit
repository. - أداة Kubectl لتفاعل مع
Kubernetes
. اتبع هذه التعليمات للاتصال بمجموعتك باستخدامkubectl
وdoctl
. - أداة Argo CLI للتفاعل مع
Argo CD
باستخدام واجهة سطر الأوامر. - أداة Kubeseal لتشفير الأسرار والتفاعل مع متحكم Sealed Secrets.
- أداة Helm لإدارة إصدارات وترقيات
Argo CD
(اختياري، ولكن يُوصى به عمومًا لأنظمة الإنتاج).
فهم مفاهيم Argo CD لنشر التطبيقات
تستخدم Argo CD مفهوم الـ تطبيق الأساسي لإدارة نشر التطبيقات ودورة حياتها. داخل ملف تطبيق Argo CD، تقوم بتحديد مستودع Git الذي يستضيف تعريفات التطبيق الخاصة بك، بالإضافة إلى العقد المقابل لتنفيذ التطبيقات في كوبرنيتس. بمعنى آخر، يحدد تطبيق Argo CD العلاقة بين مستودع المصدر وعقدة Kubernetes. إنه تصميم موجز وقابل للتوسع بشكل كبير، حيث يمكنك ربط مصادر متعددة (مستودعات Git) وعقدة Kubernetes المقابلة.
A major benefit of using applications is that you don’t need to deploy Argo to each cluster individually. You can use a dedicated cluster for Argo, and deploy applications to all clusters at once from a single place. This way, you avoid Argo CD downtime or loss, in case other environments have issues or get decommissioned.
بالإضافة إلى ذلك، يمكنك تجميع التطبيقات المماثلة في مشروع. تسمح المشاريع بتجميع منطقي للتطبيقات والأدوار/الأذونات المرتبطة عند العمل مع فرق متعددة. عندما لا يتم تحديده، ينتمي كل تطبيق جديد إلى المشروع الافتراضي
. يتم إنشاء المشروع الافتراضي تلقائيًا، وليس له أي قيود. يمكن تعديل المشروع الافتراضي، لكن لا يمكن حذفه.
مجموعة البداية
تستخدم المشروع الافتراضي
للبدء السريع باستخدام Argo CD. بعد ذلك، ستتعلم كيفية إنشاء تطبيق
لكل مكون من مكونات مجموعة البداية
، واستخدام مخططات Helm
كـ مصدر للتطبيق
. Argo CD ليست مقتصرة على مصادر Helm فقط، ويمكنك أيضًا استغلال قوة Kustomize، Ksonnet، Jsonnet، وما إلى ذلك. يرجى الاطلاع على صفحة مصادر التطبيق لمزيد من التفاصيل.
على الرغم من أنه يمكنك استخدام واجهة المستخدم الرسومية (واجهة الويب) لـ Argo CD لإنشاء التطبيقات، إلا أن مجموعة البداية تعتمد على الطريقة الإعلانية GitOps، عبر توثيقات YAML. يعمل كل تكوين YAML كوصف لكل تطبيق، وبالتالي يمكن تخزينه في مستودع Git. يعني ذلك أنه يمكنك إعادة إنشاء إعدادات Argo CD الخاصة بك دائمًا إذا قمت بإعادة إنشاء بيئتك، أو الانتقال إلى عنقود آخر. الأهم من ذلك، يمكنك إجراء تدقيقات وتتبع كل تغيير عبر تاريخ Git. من الممارسات الجيدة أيضًا أن يكون لديك ملفات تكوين Argo CD في مستودع Git منفصل، بدلاً من المستخدم لتطوير التطبيق الخاص بك. يمكنك قراءة صفحة الممارسات الجيدة من موقع الوثائق الرسمي لـ Argo CD لمزيد من المعلومات حول هذا الموضوع.
ملاحظة مهمة:
جانب مهم يجب أخذه بعين الاعتبار هو أن Argo CD بشكل افتراضي لا يُزامن تلقائياً التطبيقات الجديدة الخاصة بك. عندما يتم إنشاء تطبيق ArgoCD لأول مرة، يكون حالته “متخلف” (OutOfSync). هذا يعني أن حالة مستودع Git المشير إليه بواسطة تطبيق ArgoCD لا تتطابق مع حالة عقدة Kubernetes. إنشاء تطبيق ArgoCD جديد لا يُشغّل نشرًا تلقائيًا على العقدة المستهدفة.
لتمكين المزامنة التلقائية وحذف الموارد اليتيمة (التنظيف)، تحتاج إلى إنشاء syncPolicy
. يمكنك أيضًا تكوين Argo CD لإلغاء التغييرات اليدوية تلقائيًا التي تم إجراؤها عبر kubectl
. يمكنك قراءة المزيد حول سياسات المزامنة التلقائية على موقع الوثائق الرسمي.
يبدو Application CRD
النموذجي باستخدام مصدر مستودع Git كما يلي:
توضيحات لتكوين أعلاه:
spec.project
: يخبر Argo CD أي مشروع يجب استخدامه للتطبيق (default
في هذا المثال).spec.source.repoURL
: عنوان مستودع Git المستخدم لمزامنة حالة العقدة.spec.source.targetRevision
: تنقيح مستودع Git المستخدم للمزامنة (يمكن أن يكون اسم فرع أو علامة أيضًا).spec.source.path
: مسار مستودع Git حيث يتم تخزين ملفات المصدر (توضيحات YAML).spec.destination.server
: عنوان عقدة Kubernetes المستهدفة. عادةً ما يشير إلىhttps://kubernetes.default.svc
، إذا كان Argo CD يستخدم نفس العقدة التي يتم نشرها فيها.spec.destination.namespace
: مساحة الأسماء في Kubernetes التي يجب استخدامها لتطبيقك.spec.syncPolicy.automated
: يمكّن المزامنة التلقائية للتطبيقات في مجموعتك مع مستودع Git.spec.syncPolicy.automated.prune
: يحدد ما إذا كان يجب حذف الموارد من المجموعة التي لم يتم العثور عليها في المصادر بعد الآن كجزء من المزامنة التلقائية.spec.syncPolicy.automated.selfHeal
: يحدد ما إذا كان يجب عكس الموارد إلى حالتها المطلوبة بمجرد التعديل اليدوي في المجموعة (على سبيل المثال ، عبرkubectl
).
يمكنك أيضًا استخدام مستودعات Helm كمصدر لتثبيت التطبيقات في مجموعتك. تبدو Application CRD
النموذجي باستخدام مصدر مستودع Helm كما يلي (مشابه لمثال مستودع Git ، باستثناء استخدام مستودع مخططات Helm بدلاً من ذلك):
تفسيرات للتكوين أعلاه:
spec.source.chart
: مخطط Helm الذي يجب استخدامه كمصدر للتطبيق.spec.source.repoURL
: عنوان URL لمستودع مخططات Helm.spec.source.targetRevision
: إصدار مخطط Helm لاستخدامه للتطبيق.spec.source.helm.releaseName
: اسم الإصدار Helm لإنشائه في مجموعة Kubernetes الخاصة بك.spec.source.helm.values
: يحدد القيم Helm التي يتعين تمريرها إلى قالب helm ، عادةً ما يتم تحديدها ككتلة.spec.destination.server
: عنوان مجموعة Kubernetes الهدف. عادةً ما يشير إلىhttps://kubernetes.default.svc
، إذا كان Argo CD يستخدم نفس المجموعة حيث تم نشره.spec.destination.namespace
: مساحة أسماء Kubernetes لاستخدام تطبيقك.
يرجى المتابعة وقراءة المزيد حول مفاهيم الأساسية في Argo CD على موقع الوثائق الرسمي. بعد ذلك، ستكتشف الخيارات المتاحة للتثبيت لنشر Argo CD في عنقود Kubernetes الخاص بك.
تثبيت Argo CD
يمكن تثبيت Argo CD إما باستخدام kubectl
أو Helm
:
- استخدام
kubectl
وملف تثبيت النموذج. هذه الطريقة لا توفر تحكمًا مباشرًا في مختلف معلمات التثبيت. إذا لم تكن مألوفًا جدًا بالتثبيتات القائمة على Helm، فهذا هو الخيار الأكثر مباشرة للبدء. - التثبيت القائم على Helm. يوفر تحكمًا أكثر تفصيلًا في نشر ودورة حياة تطبيق Argo CD. مُوصى به لتكوينات HA (High Availability) وإذا تم استخدام Argo CD في الإنتاج.
بعد ذلك، وتبعًا للميزات التي تريدها متاحة، لديك خياران:
- وضع
Multi-Tenant
. يتم استخدام هذا النوع من التثبيت عادة لخدمة فرق تطوير التطبيقات المتعددة في المنظمة ويتم الاعتناء بها من قبل فريق المنصة. يمكن للمستخدمين النهائيين الوصول إلى Argo CD عبر خادم API باستخدام واجهة المستخدم عبر الويب أو سطر الأوامرargocd
. النواة
فقط الوضع. هذا تثبيت مُقلَّل، بدون واجهة مستخدم رسومية، خادم API، SSO، إلخ، ويثبت الإصدار الخفيف (غير ذي توفر عالية) من كل مكون.
يستخدم مجموعة البداية الأوضاع متعدد المستأجرين
و التوفر العالي
لتثبيت Argo CD في مجموعة DOKS الخاصة بك. بهذه الطريقة، ستحصل على إعداد موثوق به وتستكشف جميع الميزات المتاحة، بما في ذلك واجهة المستخدم. يرجى زيارة صفحة أساليب التثبيت للوثائق، لمزيد من المعلومات حول الموضوع.
التثبيت بناءً على Kubectl
تتطلب هذه الطريقة kubectl
، وهي عملية مكونة من خطوتين:
- إنشاء
namespace
، لنشر Argo CD ذاته. - تشغيل التثبيت عالي التوفر، عبر
kubectl
.
يرجى تشغيل الأوامر أدناه بالترتيب:
الآن، يرجى المضي قدمًا والتحقق مما إذا كان التثبيت ناجحًا. أولاً، تحقق مما إذا كانت جميع عمليات نشر Argo CD صحية:
المخرج يبدو مشابهًا للآتي (تحقق من العمود READY
– يجب أن تكون جميع Pods
قيد التشغيل):
يجب أن يكون لخادم Argo CD قيمة حد أدنى لـ replicaset
تساوي 2
لوضع HA
. إذا لم تكن بعض عمليات النشر صحية لسبب ما، يرجى التحقق من أحداث Kubernetes وسجلات السجل لـ Pods المكونات المتأثرة.
تثبيت قائم على Helm
تتطلب هذه الطريقة تثبيت Helm على جهازك المحلي. يوفر مجموعة البداية ملف قيم Helm جاهز للاستخدام للبدء. ويقوم بتثبيت Argo CD بوضع HA (بدون توسيع تلقائي).
يرجى اتباع الخطوات أدناه لإكمال التثبيت القائم على Helm:
- أولاً، انسخ دليل Starter Kit (إذا لم يكن موجودًا بالفعل)، وغير الدليل إلى نسختك المحلية:
- بعد ذلك، أضف مستودع Helm الخاص بـ Argo CD:
- الآن، ابحث في مستودع Helm
argo
للرسوم البيانية المتاحة للتثبيت:
يبدو الإخراج مشابهًا للآتي:
- ثم، افتح وافحص ملف قيم Helm الخاص بـ Argo CD المقدم في مستودع Starter Kit باستخدام محرر النصوص الذي تفضله (مع دعم YAML lint مفضلًا). على سبيل المثال، يمكنك استخدام VS Code:
- أخيرًا، قم بنشر Argo CD إلى عنقود DOKS الخاص بك:
–create-namespace \
ملاحظة:يتم استخدام نسخة محددة
لرسم الـ Helm
في هذه الحالة تم اختيار 4.9.4
، والتي تتطابق مع الإصدار 2.4.0
من التطبيق. من الممارسات الجيدة بشكل عام، تثبيت نسخة محددة. يساعد ذلك في الحصول على نتائج متوقعة، ويتيح التحكم في الإصدارات عبر Git
.
الآن، تحقق مما إذا كانت عملية إصدار Helm ناجحة:
الناتج يبدو مشابهًا لقيمة العمود (STATUS
يجب أن تُعين إلى deployed
):
أخيرًا، تحقق من حالة نشر تطبيق Argo CD:
الناتج يبدو مشابهًا للتالي (تحقق من العمود READY
– يجب أن تكون جميع Pods
قيد التشغيل):
يجب أن يكون لخادم Argo CD قيمة دنمية لـ replicaset
بحد أدنى 2
لوضع HA
. إذا كانت بعض النشرات غير صحية لأي سبب من الأسباب، يرجى التحقق من أحداث Kubernetes وسجلات السجلات لأجزاء Pods المتضررة.
يمكنك أيضًا العثور على مزيد من المعلومات حول مخطط Argo CD Helm عن طريق الوصول إلى الـ مستودع المحتفظ به من قبل المجتمع.
بعد ذلك، ستتعلم كيفية الوصول إلى واستكشاف الميزات الرئيسية لواجهة المستخدم الرسومية المقدمة من قبل Argo CD.
الوصول واستكشاف واجهة المستخدم على الويب لـ Argo CD
واحدة من الميزات الرائعة التي يقدمها Argo CD هي واجهة الويب، المستخدمة لأداء مهام إدارية مختلفة وعرض حالة نشر التطبيقات. يمكنك إنشاء تطبيقات باستخدام واجهة المستخدم الرسومية والتفاعل مع Argo CD بطرق متعددة. ميزة أخرى مهمة هي القدرة على فحص حالة كل تطبيق والوصول إلى أحداث Kubernetes، بالإضافة إلى سجلات التطبيق الخاصة بك. بالإضافة إلى ذلك، يوفر Argo CD تمثيلًا بصريًا لجميع كائنات Kubernetes (replicasets، pods، إلخ) التي يستخدمها كل نشر تطبيق.
يمكن الوصول إلى واجهة الويب عن طريق توجيه المنفذ الخاص بخدمة Kubernetes argocd-server
. يرجى تشغيل الأمر أدناه في محطة الطرفية:
الآن، افتح متصفح الويب وانتقل إلى localhost:8080 (يرجى تجاهل شهادات TLS غير الصالحة في الوقت الحالي). سترحب بك صفحة تسجيل الدخول إلى Argo CD. اسم المستخدم الإداري الافتراضي هو admin
، وتم إنشاء كلمة المرور عشوائيًا عند وقت التثبيت. يمكنك استرجاعها عن طريق تشغيل الأمر أدناه:
بعد ذلك، سيتم توجيهك إلى صفحة لوحة تطبيقات. من هنا، يمكنك عرض، إنشاء، أو إدارة التطبيقات عبر واجهة المستخدم (هناك أيضًا محرر YAML متاح)، بالإضافة إلى إجراء عمليات مزامنة أو تحديث:
إذا قمت بالنقر على أي بلاطة تطبيق، سيتم عرض تمثيل بصري لجميع الكائنات المتورطة أيضًا:
في القسم التالي، يمكنك إدارة مشاريع التطبيقات الخاصة بك، مستودعاتك، وعقدك:
وأخيرًا، يعرض قسم معلومات المستخدم المستخدمين المتاحين ويسمح بتحديث كلمة مرور المسؤول:
يمكنك استكشاف واستعراض كل قسم وقسم فرعي بالتفصيل لرؤية جميع الميزات المتاحة. بعد ذلك، ستتعلم كيفية استخدام النسخة السطرية لواجهة سطر الأوامر CLI، المسماة argocd
.
التعرف على واجهة سطر الأوامر CLI لـ Argo CD
يسمح Argo CD باستخدام نفس مجموعة الميزات سواء عبر واجهة الويب أو عبر واجهة سطر الأوامر CLI. لاستخدام واجهة سطر الأوامر argocd
، تحتاج إلى فتح نافذة قابلة للتحريك منفصلة وكتابة argocd
بدون أي وسيطات. بشكل افتراضي، ستعرض الأوامر والخيارات المتاحة:
لأي أمر أو فرع فرعي، يمكنك استدعاء صفحة المساعدة المقابلة باستخدام النمط التالي: argocd <command/subcommand> --help
. على سبيل المثال، إذا كنت ترغب في التحقق من الخيارات المتاحة لأمر app
:
# الحصول على تفاصيل تطبيق
يرجى المتابعة واستكشاف الأوامر/الفرع الفرعي الآخرين أيضًا لرؤية جميع الخيارات المتاحة. بعد ذلك، ستتعلم كيفية إعداد تطبيق Argo CD الأول الخاص بك، الذي سينشئ تلقائيًا جميع مكونات مجموعة البداية.
في التثبيت الأولي ، لا يعرف Argo CD من أين يجب مزامنة تطبيقاتك ، أو ما هي مستودعات Git المتاحة للحصول على ملفات التعريف الخاصة بالتطبيق. لذا ، الخطوة الأولى هي القيام بعملية مرة واحدة تُسمى التشغيل. يمكنك تنفيذ جميع العمليات المقدمة في هذا القسم إما باستخدام واجهة سطر الأوامر argocd أو واجهة المستخدم الرسومية.
هناك طرق متعددة لتشغيل العمل الخاص بك (على سبيل المثال ، عبر النصوص) ، ولكن عادةً ما يستخدم مستخدمو Argo CD نمط “تطبيق التطبيقات”. يعني ذلك أنك ستبدأ بإنشاء تطبيق أبوي باستخدام واجهة سطر الأوامر good (أو الواجهة الويبية) ، والذي بدوره سيشير إلى ويشغل بقية التطبيقات في مجموعة Kubernetes الخاصة بك.
أولاً ، تحتاج إلى تجهيز مستودع Git الخاص بك لاستخدام تخطيط متسق. في المثال التالي ، ستقوم بإنشاء هيكل تخطيط مستودع Git مماثل للتالي:
- يرجى فتح الطرفية واتباع الخطوات التالية لإنشاء التخطيط لمستودع Git الخاص بك:
- أولاً، انسخ مستودع git الخاص بك المستخدم لاختبار Argo CD (تأكد من استبدال عناصر الاستبدال
<>
وفقًا لذلك):
- بعد ذلك، غير الدليل إلى النسخة المحلية لديك وأنشئ هيكل الدليل (تأكد من استبدال عناصر الاستبدال
<>
وفقًا لذلك):
- انسخ ملفات التطبيق المقدمة لكل مكون في مستودع Starter Kit (يمكنك أيضًا أن تلقي نظرة وترى كيفية بناء كل ملف تطبيق):
أخيرًا، قم بتأكيد التغييرات وقم بالضغط على الأصل.
بعد ذلك، ستقوم بإنشاء تطبيق النسخ الأبوي للتطبيق والسماح لـ Argo CD بمزامنة جميع تطبيقات Starter Kit تلقائيًا إلى عنقود DOKS الخاص بك.
استخدام نمط التطبيقات الأبوية عبر سطر الأوامر لـ Argo CD
في هذا القسم، ستتعلم كيفية استخدام سطر الأوامر argocd
لإنشاء واستخدام نمط تطبيقات الأباء
لنشر جميع مكونات Starter Kit في عنقود DOKS الخاص بك. الصورة أدناه توضح المفهوم الرئيسي:
أولاً، تحتاج إلى تحويل توجيه مخدم Argo CD الرئيسي على جهازك المحلي في نافذة الطرفية الفرعية:
ثم ، يُطلب الوصول إلى خادم Argo CD API لـ argocd
CLI للعمل. باستخدام نافذة الطرفية الأخرى ، تحتاج إلى المصادقة على عميل argocd
باستخدام مثيل خادم Argo CD الخاص بك:
الإخراج يبدو مماثلاً لـ:
ثم ، يُرجى تشغيل الأمر أدناه لإنشاء التطبيق الأصلي starter-kit-apps
(تأكد من استبدال العلامات <>
وفقًا لذلك):
- –dest-namespace argocd \
- –dest-server https://kubernetes.default.svc \
- سينشئ الأمر أعلاه تطبيقًا جديدًا
Argo CD application
يُسمىstarter-kit-apps
في مساحة الاسمargocd
، مُكونًا ل:
استهداف نفس عقدة Kubernetes حيث يتم نشر Argo CD ، لأن --dest-server
مُعين على https://kubernetes.default.svc
.
استخدام مستودع GitHub الذي حدده الوسيط --repo
لمزامنة عقدتك.
فحص وتطبيق جميع التواريخ التطبيقية التي تم العثور عليها في الدليل clusters/dev/helm
(--path
argument).
ثم ، تحتاج إلى مزامنة تطبيق starter-kit-apps
(تذكر أن Argo CD لا يقوم بمزامنة أي شيء افتراضيًا ما لم يُحدد):
الإخراج يبدو مماثلاً لـ:
بعد الانتهاء من الأمر أعلاه، يجب أن ترى تطبيقًا جديدًا موجودًا في لوحة تحكم Argo CD الرئيسية للخادم الخاص بك. يرجى فتح متصفح الويب والانتقال إلى http://localhost:8080. ثم حدد علامة التبويب Applications
، وانقر فوق عنصر starter-kit-apps
(لاحظ نمط تطبيق الـapps
عن طريق النظر إلى الرسم البياني للتكوين):
يمكنك أيضًا فحص التطبيقات الجديدة عبر واجهة سطر الأوامر (CLI):
الناتج يبدو مشابهًا لهذا:
سيظهر تطبيق الأب starter-kit-apps
كمتزامن ولكن التطبيقات الفرعية ستكون غير متزامنة. بعد ذلك، يمكنك مزامنة كل شيء إما باستخدام واجهة الويب أو عبر واجهة سطر الأوامر (CLI):
قد تستغرق عملية المزامنة بعض الوقت للانتهاء (حتى 5-10 دقائق)، اعتمادًا على تعقيد وعدد كائنات Kubernetes لجميع التطبيقات التي يتم نشرها.
بعد مرور بعض الوقت، يرجى إدراج جميع التطبيقات مرة أخرى:
- يبدو الناتج مشابهًا لهذا (لاحظ أن جميع التطبيقات متزامنة الآن):
سيفشل نشر تطبيق Velero ويترك بغرض في حالة SyncError
كتمرين للقارئ ليتعود ويتعلم كيفية تشخيص مشاكل التطبيق في Argo CD. يرجى الرجوع إلى القسم Hints أدناه لمعرفة كيفية تشخيص مشاكل تطبيق Argo CD.
تشغيل تطبيق الأب هو عملية مرة واحدة. في حالة التغييرات في Git لكل تطبيق بعد ذلك، ستكتشف Argo CD التحول وستطبق التغييرات المطلوبة. يستخدم Argo CD آلية الاستطلاع بشكل افتراضي لاكتشاف التغييرات في مستودع Git الخاص بك. تم تعيين فترة التحديث الافتراضية على 3 دقائق
. بدلاً من الاعتماد على آلية الاستطلاع، يمكنك أيضًا الاستفادة من قوة الخطافات الويب في Git. يرجى زيارة موقع الوثائق الرسمي لمعرفة كيفية إنشاء وتكوين Argo CD لاستخدام خطافات Git الويب.
Hints: إذا كنت ترغب في ذلك، يمكنك تكوين تطبيق الأب ليتم مزامنته تلقائيًا (وكذلك تمكين الشفاء الذاتي والتقليم التلقائي)، يمكنك استخدام الأمر التالي (لا تنسى استبدال العلامات <>
بالطريقة المناسبة):
–dest-namespace argocd \
–dest-server https://kubernetes.default.svc \
–sync-policy automated \
–auto-prune \
في حالة حدوث أي فشل في المزامنة، يمكنك دائمًا فحص أحداث Kubernetes للتطبيق المعني (عبر argocd app get <application_name>
):
يبدو الناتج مشابهًا لما يلي:
- بعد ذلك، ستتعلم كيفية استخدام
نمط التطبيقات الأساسية
وتنفيذ نفس الخطوات عبر واجهة المستخدم الرسومية لـ Argo CD. - استخدام نمط التطبيقات الأساسية عبر واجهة الويب لـ Argo CD
- في هذا القسم، ستتعلم كيفية استخدام واجهة Argo CD على الويب لإنشاء واستخدام
تطبيق التطبيقات الأساسية
لنشر جميع مكونات Starter Kit في عنقود DOKS الخاص بك. يوضح الصورة أدناه المفهوم الرئيسي: - كما يوضح الرسم البياني أعلاه، فإن إقلاع تطبيق جديد عبر واجهة الويب مشابه للغاية للنظير الخطوطي. الفارق الوحيد هو أنك ستتنقل بين لوحات / نوافذ مختلفة وستستخدم عمليات النقر والنقر. خلف الكواليس، سيقوم Argo CD بإنشاء CRDs التطبيقات المطلوبة وتطبيق التغييرات على عنقود Kubernetes الخاص بك.
- أولاً، يرجى فتح متصفح الويب وتسجيل الدخول إلى واجهة الويب لـ Argo CD. اسم المستخدم الافتراضي هو
admin
، وكلمة المرور الافتراضية يتم الحصول عليها عبر: - بمجرد تسجيل الدخول، سيتم توجيهك إلى صفحة لوحة تحكم التطبيقات (عند التثبيت الجديد، تكون اللوحة الرئيسية خالية). بعد ذلك، انقر فوق زر
إنشاء تطبيق
. ستظهر لك لوحة جديدة تطلب تفاصيل التطبيق: - يرجى ملء كل حقل بشكل مناسب:
اسم التطبيق
: اسم التطبيق الجديد (على سبيل المثال، starter-kit-apps
).
المشروع
: اسم المشروع الذي ينتمي إليه هذا التطبيق (عند استخدام Argo CD للمرة الأولى، يمكنك استخدام default
).
سياسة المزامنة
و خيارات المزامنة
: يكون ذلك لتكوين سياسة المزامنة والخيارات (على سبيل المثال، يدوي
، تلقائي
، عدد مرات إعادة المحاولة، الفاصل الزمني بين المحاولات، إلخ).
عنوان عنوان مستودع المصدر
: عنوان URL الخاص بمستودع GitHub الخاص بك – على سبيل المثال، https://github.com/<YOUR_GITHUB_USERNAME>/<YOUR_ARGOCD_GITHUB_REPO_NAME>.git
.
المسار
المصدر: مسار دليل مستودع GitHub حيث تُخزن ملفات التطبيق (على سبيل المثال، clusters/dev/helm
).
عنوان عنوان عنقود الوجهة
: عنوان عنقود Kubernetes الهدف للمزامنة مع مستودع GitHub الخاص بك (على سبيل المثال، https://kubernetes.default.svc
للعنقود المحلي حيث تم نشر Argo CD).
المساحة الاسمية
الوجهة: مساحة اسمية عنقود Kubernetes الهدف لاستخدامها في تطبيقات Argo CD (argocd
عادةً).
بعد ملء جميع تفاصيل التطبيق، انقر على زر الإنشاء في الأعلى. سيظهر مربع تطبيق جديد على صفحة اللوحة الرئيسية:
إذا قمت بالنقر على رمز التطبيق، يمكنك مراقبة نمط التطبيقات
، عن طريق النظر إلى رسم الرصد:
إذا نظرت إلى الصورة أعلاه، ستلاحظ أن جميع التطبيقات مُعلَّمة بـ OutOfSync
. الخطوة التالية هي تشغيل عملية مزامنة على التطبيق الرئيسي. بعد ذلك، ستتم مزامنة جميع التطبيقات الفرعية أيضًا. يرجى المتابعة والضغط على زر Sync
على رمز التطبيق الرئيسي. يظهر لوح جديد على الجانب الأيمن (لاحظ أن جميع التطبيقات الفرعية مُحدَّدة أسفله):
اترك القيم الافتراضية، ثم اضغط على زر Synchronize
في الأعلى وشاهد كيف ينقل Argo CD عملية المزامنة إلى جميع التطبيقات:
سيفشل نشر تطبيق Velero ويترك عمدًا في حالة SyncError
كتمرين للقارئ ليتعود ويتعلم كيفية تشخيص مشاكل التطبيق في Argo CD. يرجى الرجوع إلى القسم Hints أدناه لمعرفة كيفية تشخيص مشاكل التطبيق في Argo CD.
إذا كان كل شيء على ما يرام، يجب أن تكون لجميع التطبيقات حدود خضراء ويجب أن يكون الحالة سليم
و متزامن
. عملية الإعداد الأولي هي عملية مرة واحدة. في التغييرات اللاحقة في Git لكل تطبيق، سيكتشف Argo CD التحول ويطبق التغييرات المطلوبة. يستخدم Argo CD آلية الاستطلاع
افتراضيًا لاكتشاف التغييرات في مستودع Git الخاص بك. تم تعيين فاصل تحديث
الافتراضي إلى 3 دقائق
. بدلاً من الاعتماد على آلية الاستطلاع، يمكنك أيضًا الاستفادة من قوة Git webhooks. يرجى زيارة موقع الوثائق الرسمي لمعرفة كيفية إنشاء وتكوين Argo CD لاستخدام Git webhooks.
تلميحات:
إذا رغبت في ذلك، يمكنك تكوين التطبيق الأصلي ليتم مزامنته تلقائيًا عن طريق تعيين قيمة الحقل سياسة المزامنة
إلى تلقائي
. لتمكين الشفاء الذاتي والتنظيف التلقائي، حدد مربعات الاختيار مصادر القطع
و شفاء ذاتي
:
في حالة حدوث أي فشل في التزامن، يمكنك دائمًا فحص أحداث Kubernetes للتطبيق المعني. باستخدام واجهة الويب، يمكنك التنقل إلى بلاطة التطبيق المتأثرة:
ثم، انقر على رابط الرسالة Sync failed
المعلم باللون الأحمر، من قسم LAST SYNC RESULT
في رأس صفحة التطبيق. ستظهر لك لوحة جديدة، تعرض معلومات مفيدة حول سبب فشل عملية المزامنة:
- في القسم التالي، ستتعلم كيفية إدارة تطبيقات متعددة في وقت واحد باستخدام CRD واحد –
ApplicationSet
. - استخدام مجموعات تطبيقات Argo CD
مجموعات التطبيقات هي ميزة قوية أخرى تقدمها Argo CD. متحكم ApplicationSet هو مشروع فرعي في Argo CD، الذي يضيف التشغيل التلقائي للتطبيق عبر تعريفات قوالب. تساعدك هذه الميزة في تجنب التكرار في تصريحات تطبيقك (استخدام مبدأ DRY).
يتم تثبيت متحكم ApplicationSet بجانب Argo CD (Dentro del mismo espacio de nombres)، ويقوم تلقائيًا بإنشاء تطبيقات Argo CD استنادًا إلى محتويات مورد تخصيص جديد لـ ApplicationSet (CR).
ملاحظة:
بدءًا من الإصدار 2.3.x
من Argo CD، لم يعد هناك حاجة لتثبيت متحكم ApplicationSet
بشكل منفصل لأنه جزء من التثبيت الرئيسي لـ Argo CD. يستخدم Starter Kit الإصدار >= 2.3.1
، لذا لا داعي للتدخل في أي شيء.
الفكرة الرئيسية لـ ApplicationSet
مبنية على وجود قائمة من القيم تعمل كـ generator
، و template
يتم ملؤه بقيم القائمة المدخلة. لكل عنصر من القائمة، يتم إنشاء قالب تطبيق جديد بتسلسل. ببساطة، تعرّف معيار ApplicationSet CRD ومن ثم دعه يولد لك معايير تطبيق ArgoCD الأخرى بناءً على القيم المدخلة. بالتالي، بدلاً من إنشاء والتعامل مع العديد من Application manifests
، تدير كل شيء عبر single manifest
– الـ ApplicationSet
.
هذا المفهوم يبسط أيضًا إدارة الإعدادات multi-cluster
و multi-environment
باستخدام قوالب التطبيقات المعلمة. تتضمن مجموعات التطبيقات مولدات أخرى بالإضافة إلى List Generators:
Cluster generator: يستخدم أجهزة Argo CD المحددة مسبقًا لتوجيه تطبيقات القوالب.
Git generator: يستخدم ملفات/مجلدات مستودع Git لتوجيه تطبيقات القوالب.
الـ ApplicationSet CRD
النموذجي باستخدام List Generator
، يبدو على النحو التالي:
تطبيق المعيار ApplicationSet
أعلاه إلى عقدة Kubernetes الخاصة بك سيجعل ثلاث تطبيقات Argo CD. على سبيل المثال، يتم تقديم تطبيق البيئة dev
على النحو التالي:
المحركات النموذجية قوية للغاية من حيث الطبيعة وتقدم العديد من الإمكانيات. يرجى زيارة الموقع الرئيسي للتوثيق الخاص بـ ApplicationSet لمعرفة المزيد حول هذه الميزة.
تتم عملية إزالة (أو حذف) التطبيقات التي يديرها Argo CD عن طريق حذف التصريح المقابل من مصدر مستودع Git. في حالة التطبيقات التي تم إنشاؤها باستخدام نمط تطبيقات التطبيقات
، يجب حذف التطبيق الرئيسي فقط (سواء عبر واجهة CLI أو الويب). بعد ذلك، سيتم حذف جميع التطبيقات الفرعية أيضًا كجزء من العملية.
- كيفية حذف تطبيق الوالدين
starter-kit-apps
(بما في ذلك التطبيقات الفرعية) باستخدامargocd
CLI: - إذا كنت ترغب في التأكد من أن التطبيقات الفرعية وجميع مواردها تم حذفها عند حذف التطبيق الأصلي، يرجى التأكد من إضافة
finalizer
المناسب إلىتعريف التطبيق
الخاص بك:
Source:
https://www.digitalocean.com/community/developer-center/implementing-gitops-using-argo-cd