تنفيذ GitOps باستخدام Argo CD

المقدمة

Argo CD هو تنفيذ مفتوح المصدر شهير لتنفيذ تسليم مستمر لـ GitOps على منصة Kubernetes. يجب أن تكون تطبيقاتك وتعريفاتك وتكويناتك وبيئاتك إعلانية ومُراقبة بالإصدار. كما يجب أن يكون نشر التطبيقات وإدارة دورة حياتها تلقائيًا وقابلة للتدقيق وسهلة الفهم. يمكن القيام بكل هذا باستخدام Argo.

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

كما هو الحال مع كل تطبيق يعمل في مجموعة 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 متمركزة، والتي ستقوم بـ:

نظرة عامة على DOKS و Argo CD لإصدارات Helm

يظهر الرسم البياني أدناه كيفية إدارة Argo CD لتطبيقات Helm المستضافة باستخدام مستودع Git:

جدول المحتويات

المتطلبات المسبقة

لإكمال هذا البرنامج التعليمي، ستحتاج:

  1. 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.
  2. A GitHub repository and branch, to store Argo CD and your applications manifests. Must be created beforehand.
  3. A Git client, for cloning the Starter Kit repository.
  4. أداة Kubectl لتفاعل مع Kubernetes. اتبع هذه التعليمات للاتصال بمجموعتك باستخدام kubectl و doctl.
  5. أداة Argo CLI للتفاعل مع Argo CD باستخدام واجهة سطر الأوامر.
  6. أداة Kubeseal لتشفير الأسرار والتفاعل مع متحكم Sealed Secrets.
  7. أداة 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 كما يلي:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-apps
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/myrepo/my-apps.git
    targetRevision: HEAD
    path: apps
  destination:
    server: https://kubernetes.default.svc
    namespace: my-apps
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

توضيحات لتكوين أعلاه:

  • 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 بدلاً من ذلك):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: sealed-secrets
  namespace: argocd
spec:
  project: default
  source:
    chart: sealed-secrets
    repoURL: https://bitnami-labs.github.io/sealed-secrets
    targetRevision: 2.4.0
    helm:
      releaseName: sealed-secrets
      values: |
        replicaCount: 2
  destination:
    server: "https://kubernetes.default.svc"
    namespace: kubeseal

تفسيرات للتكوين أعلاه:

  • 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:

  1. استخدام kubectl وملف تثبيت النموذج. هذه الطريقة لا توفر تحكمًا مباشرًا في مختلف معلمات التثبيت. إذا لم تكن مألوفًا جدًا بالتثبيتات القائمة على Helm، فهذا هو الخيار الأكثر مباشرة للبدء.
  2. التثبيت القائم على Helm. يوفر تحكمًا أكثر تفصيلًا في نشر ودورة حياة تطبيق Argo CD. مُوصى به لتكوينات HA (High Availability) وإذا تم استخدام Argo CD في الإنتاج.

بعد ذلك، وتبعًا للميزات التي تريدها متاحة، لديك خياران:

  • وضع Multi-Tenant. يتم استخدام هذا النوع من التثبيت عادة لخدمة فرق تطوير التطبيقات المتعددة في المنظمة ويتم الاعتناء بها من قبل فريق المنصة. يمكن للمستخدمين النهائيين الوصول إلى Argo CD عبر خادم API باستخدام واجهة المستخدم عبر الويب أو سطر الأوامر argocd.
  • النواة فقط الوضع. هذا تثبيت مُقلَّل، بدون واجهة مستخدم رسومية، خادم API، SSO، إلخ، ويثبت الإصدار الخفيف (غير ذي توفر عالية) من كل مكون.

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

التثبيت بناءً على Kubectl

تتطلب هذه الطريقة kubectl، وهي عملية مكونة من خطوتين:

  1. إنشاء namespace، لنشر Argo CD ذاته.
  2. تشغيل التثبيت عالي التوفر، عبر kubectl.

يرجى تشغيل الأوامر أدناه بالترتيب:

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

الآن، يرجى المضي قدمًا والتحقق مما إذا كان التثبيت ناجحًا. أولاً، تحقق مما إذا كانت جميع عمليات نشر Argo CD صحية:

kubectl get deployments -n argocd

المخرج يبدو مشابهًا للآتي (تحقق من العمود READY – يجب أن تكون جميع Pods قيد التشغيل):

Output
NAME READY UP-TO-DATE AVAILABLE AGE argocd-applicationset-controller 1/1 1 1 51s argocd-dex-server 1/1 1 1 50s argocd-notifications-controller 1/1 1 1 50s argocd-redis-ha-haproxy 3/3 3 3 50s argocd-repo-server 2/2 2 2 49s argocd-server 2/2 2 2 49s

يجب أن يكون لخادم Argo CD قيمة حد أدنى لـ replicaset تساوي 2 لوضع HA. إذا لم تكن بعض عمليات النشر صحية لسبب ما، يرجى التحقق من أحداث Kubernetes وسجلات السجل لـ Pods المكونات المتأثرة.

تثبيت قائم على Helm

تتطلب هذه الطريقة تثبيت Helm على جهازك المحلي. يوفر مجموعة البداية ملف قيم Helm جاهز للاستخدام للبدء. ويقوم بتثبيت Argo CD بوضع HA (بدون توسيع تلقائي).

يرجى اتباع الخطوات أدناه لإكمال التثبيت القائم على Helm:

  1. أولاً، انسخ دليل Starter Kit (إذا لم يكن موجودًا بالفعل)، وغير الدليل إلى نسختك المحلية:
git clone https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers.git
cd Kubernetes-Starter-Kit-Developers
  1. بعد ذلك، أضف مستودع Helm الخاص بـ Argo CD:
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update argo 
  1. الآن، ابحث في مستودع Helm argo للرسوم البيانية المتاحة للتثبيت:
helm search repo argo

يبدو الإخراج مشابهًا للآتي:

Output
NAME CHART VERSION APP VERSION DESCRIPTION argo/argo 1.0.0 v2.12.5 A Helm chart for Argo Workflows argo/argo-cd 4.9.4 v2.4.0 A Helm chart for Argo CD, a declarative, GitOps... ...
  1. ثم، افتح وافحص ملف قيم Helm الخاص بـ Argo CD المقدم في مستودع Starter Kit باستخدام محرر النصوص الذي تفضله (مع دعم YAML lint مفضلًا). على سبيل المثال، يمكنك استخدام VS Code:
code 14-continuous-delivery-using-gitops/assets/manifests/argocd/argocd-values-v4.9.4.yaml
  1. أخيرًا، قم بنشر Argo CD إلى عنقود DOKS الخاص بك:
HELM_CHART_VERSION="4.9.4"
helm install argocd argo/argo-cd --version "${HELM_CHART_VERSION}" \
  --namespace argocd \
  --create-namespace \
  -f "14-continuous-delivery-using-gitops/assets/manifests/argocd/argocd-values-v${HELM_CHART_VERSION}.yaml"

–create-namespace \

ملاحظة:يتم استخدام نسخة محددة لرسم الـ Helm في هذه الحالة تم اختيار 4.9.4، والتي تتطابق مع الإصدار 2.4.0 من التطبيق. من الممارسات الجيدة بشكل عام، تثبيت نسخة محددة. يساعد ذلك في الحصول على نتائج متوقعة، ويتيح التحكم في الإصدارات عبر Git.

helm ls -n argocd

الآن، تحقق مما إذا كانت عملية إصدار Helm ناجحة:

NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
argocd  argocd          1               2022-03-23 11:22:48.486199 +0200 EET    deployed        argo-cd-4.9.4   v2.4.0

الناتج يبدو مشابهًا لقيمة العمود (STATUS يجب أن تُعين إلى deployed):

kubectl get deployments -n argocd

أخيرًا، تحقق من حالة نشر تطبيق Argo CD:

Output
NAME READY UP-TO-DATE AVAILABLE AGE argocd-applicationset-controller 1/1 1 1 2m9s argocd-dex-server 1/1 1 1 2m9s argocd-notifications-controller 1/1 1 1 2m9s argocd-redis-ha-haproxy 3/3 3 3 2m9s argocd-repo-server 2/2 2 2 2m9s argocd-server 2/2 2 2 2m9s

الناتج يبدو مشابهًا للتالي (تحقق من العمود 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، إلخ) التي يستخدمها كل نشر تطبيق.

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

يمكن الوصول إلى واجهة الويب عن طريق توجيه المنفذ الخاص بخدمة Kubernetes argocd-server. يرجى تشغيل الأمر أدناه في محطة الطرفية:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

الآن، افتح متصفح الويب وانتقل إلى localhost:8080 (يرجى تجاهل شهادات TLS غير الصالحة في الوقت الحالي). سترحب بك صفحة تسجيل الدخول إلى Argo CD. اسم المستخدم الإداري الافتراضي هو admin، وتم إنشاء كلمة المرور عشوائيًا عند وقت التثبيت. يمكنك استرجاعها عن طريق تشغيل الأمر أدناه:

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

إذا قمت بالنقر على أي بلاطة تطبيق، سيتم عرض تمثيل بصري لجميع الكائنات المتورطة أيضًا:

في القسم التالي، يمكنك إدارة مشاريع التطبيقات الخاصة بك، مستودعاتك، وعقدك:

وأخيرًا، يعرض قسم معلومات المستخدم المستخدمين المتاحين ويسمح بتحديث كلمة مرور المسؤول:

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

التعرف على واجهة سطر الأوامر CLI لـ Argo CD

argocd
Usage:
  argocd [flags]
  argocd [command]

Available Commands:
  account     Manage account settings
  admin       Contains a set of commands useful for Argo CD administrators and requires direct Kubernetes access
  app         Manage applications
  cert        Manage repository certificates and SSH known hosts entries
  cluster     Manage cluster credentials
  completion  output shell completion code for the specified shell (bash or zsh)
  context     Switch between contexts
  gpg         Manage GPG keys used for signature verification
  help        Help about any command
...

يسمح Argo CD باستخدام نفس مجموعة الميزات سواء عبر واجهة الويب أو عبر واجهة سطر الأوامر CLI. لاستخدام واجهة سطر الأوامر argocd، تحتاج إلى فتح نافذة قابلة للتحريك منفصلة وكتابة argocd بدون أي وسيطات. بشكل افتراضي، ستعرض الأوامر والخيارات المتاحة:

argocd app --help

لأي أمر أو فرع فرعي، يمكنك استدعاء صفحة المساعدة المقابلة باستخدام النمط التالي: argocd <command/subcommand> --help. على سبيل المثال، إذا كنت ترغب في التحقق من الخيارات المتاحة لأمر app:

Manage Applications
Usage:
  argocd app [flags]
  argocd app [command]

Examples:
  يبدو الإخراج مشابهًا لما يلي:
  argocd app list
  
  # عرض كل التطبيقات.
  argocd app get my-app
...

# الحصول على تفاصيل تطبيق

يرجى المتابعة واستكشاف الأوامر/الفرع الفرعي الآخرين أيضًا لرؤية جميع الخيارات المتاحة. بعد ذلك، ستتعلم كيفية إعداد تطبيق Argo CD الأول الخاص بك، الذي سينشئ تلقائيًا جميع مكونات مجموعة البداية.

تشغيل تطبيقات Argo CD

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

هناك طرق متعددة لتشغيل العمل الخاص بك (على سبيل المثال ، عبر النصوص) ، ولكن عادةً ما يستخدم مستخدمو Argo CD نمط “تطبيق التطبيقات”. يعني ذلك أنك ستبدأ بإنشاء تطبيق أبوي باستخدام واجهة سطر الأوامر good (أو الواجهة الويبية) ، والذي بدوره سيشير إلى ويشغل بقية التطبيقات في مجموعة Kubernetes الخاصة بك.

تجهيز تخطيط مستودع Git

clusters
└── dev
    └── helm
        ├── cert-manager-v1.8.0.yaml
        ├── nginx-v4.1.3.yaml
        ├── prometheus-stack-v35.5.1.yaml
        ├── sealed-secrets-v2.4.0.yaml
        └── velero-v2.29.7.yaml

أولاً ، تحتاج إلى تجهيز مستودع Git الخاص بك لاستخدام تخطيط متسق. في المثال التالي ، ستقوم بإنشاء هيكل تخطيط مستودع Git مماثل للتالي:

  1. يرجى فتح الطرفية واتباع الخطوات التالية لإنشاء التخطيط لمستودع Git الخاص بك:
git clone <YOUR_ARGOCD_GIT_REPOSITORY_ADDRESS>
  1. أولاً، انسخ مستودع git الخاص بك المستخدم لاختبار Argo CD (تأكد من استبدال عناصر الاستبدال <> وفقًا لذلك):
cd <YOUR_GIT_REPO_LOCAL_COPY_DIRECTORY>
mkdir -p clusters/dev/helm
  1. بعد ذلك، غير الدليل إلى النسخة المحلية لديك وأنشئ هيكل الدليل (تأكد من استبدال عناصر الاستبدال <> وفقًا لذلك):
CERT_MANAGER_CHART_VERSION="1.8.0"
NGINX_CHART_VERSION="4.1.3"
PROMETHEUS_CHART_VERSION="35.5.1"
SEALED_SECRETS_CHART_VERSION="2.4.0"
VELERO_CHART_VERSION="2.29.7"

curl "https://raw.githubusercontent.com/digitalocean/Kubernetes-Starter-Kit-Developers/main/14-continuous-delivery-using-gitops/assets/manifests/argocd/applications/helm/cert-manager-v${CERT_MANAGER_CHART_VERSION}.yaml" > "clusters/dev/helm/cert-manager-v${CERT_MANAGER_CHART_VERSION}.yaml"

curl "https://raw.githubusercontent.com/digitalocean/Kubernetes-Starter-Kit-Developers/main/14-continuous-delivery-using-gitops/assets/manifests/argocd/applications/helm/nginx-v${NGINX_CHART_VERSION}.yaml" > "clusters/dev/helm/nginx-v${NGINX_CHART_VERSION}.yaml"

curl "https://raw.githubusercontent.com/digitalocean/Kubernetes-Starter-Kit-Developers/main/14-continuous-delivery-using-gitops/assets/manifests/argocd/applications/helm/prometheus-stack-v${PROMETHEUS_CHART_VERSION}.yaml" > "clusters/dev/helm/prometheus-stack-v${PROMETHEUS_CHART_VERSION}.yaml"

curl "https://raw.githubusercontent.com/digitalocean/Kubernetes-Starter-Kit-Developers/main/14-continuous-delivery-using-gitops/assets/manifests/argocd/applications/helm/sealed-secrets-v${SEALED_SECRETS_CHART_VERSION}.yaml" > "clusters/dev/helm/sealed-secrets-v${SEALED_SECRETS_CHART_VERSION}.yaml"

curl "https://raw.githubusercontent.com/digitalocean/Kubernetes-Starter-Kit-Developers/main/14-continuous-delivery-using-gitops/assets/manifests/argocd/applications/helm/velero-v${VELERO_CHART_VERSION}.yaml" > "clusters/dev/helm/velero-v${VELERO_CHART_VERSION}.yaml"
  1. انسخ ملفات التطبيق المقدمة لكل مكون في مستودع Starter Kit (يمكنك أيضًا أن تلقي نظرة وترى كيفية بناء كل ملف تطبيق):

أخيرًا، قم بتأكيد التغييرات وقم بالضغط على الأصل.

بعد ذلك، ستقوم بإنشاء تطبيق النسخ الأبوي للتطبيق والسماح لـ Argo CD بمزامنة جميع تطبيقات Starter Kit تلقائيًا إلى عنقود DOKS الخاص بك.

استخدام نمط التطبيقات الأبوية عبر سطر الأوامر لـ Argo CD

في هذا القسم، ستتعلم كيفية استخدام سطر الأوامر argocd لإنشاء واستخدام نمط تطبيقات الأباء لنشر جميع مكونات Starter Kit في عنقود DOKS الخاص بك. الصورة أدناه توضح المفهوم الرئيسي:

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

أولاً، تحتاج إلى تحويل توجيه مخدم Argo CD الرئيسي على جهازك المحلي في نافذة الطرفية الفرعية:

ADMIN_USER="admin"
ADMIN_PASSWD="$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d)"
argocd login localhost:8080 --username $ADMIN_USER --password $ADMIN_PASSWD --insecure

ثم ، يُطلب الوصول إلى خادم Argo CD API لـ argocd CLI للعمل. باستخدام نافذة الطرفية الأخرى ، تحتاج إلى المصادقة على عميل argocd باستخدام مثيل خادم Argo CD الخاص بك:

Output
'admin:login' logged in successfully Context 'localhost:8080' updated

الإخراج يبدو مماثلاً لـ:

argocd app create starter-kit-apps \
    --dest-namespace argocd \
    --dest-server https://kubernetes.default.svc \
    --repo https://github.com/<YOUR_GITHUB_USERNAME>/<YOUR_ARGOCD_GITHUB_REPO_NAME>.git \
    --path clusters/dev/helm

ثم ، يُرجى تشغيل الأمر أدناه لإنشاء التطبيق الأصلي 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.

argocd app sync starter-kit-apps 

استخدام مستودع GitHub الذي حدده الوسيط --repo لمزامنة عقدتك.

Output
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH ... 2022-03-23T17:39:38+02:00 argoproj.io Application argocd sealed-secrets-controller OutOfSync Missing ... 2022-03-23T17:39:38+02:00 argoproj.io Application argocd velero OutOfSync Missing ... 2022-03-23T17:39:38+02:00 argoproj.io Application argocd ingress-nginx OutOfSync Missing ... ... GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE argoproj.io Application argocd sealed-secrets-controller Synced application.argoproj.io/sealed-secrets-controller created argoproj.io Application argocd ingress-nginx Synced application.argoproj.io/ingress-nginx created argoproj.io Application argocd kube-prometheus-stack Synced application.argoproj.io/kube-prometheus-stack created argoproj.io Application argocd velero Synced application.argoproj.io/velero created argoproj.io Application argocd cert-manager Synced application.argoproj.io/cert-manager created

فحص وتطبيق جميع التواريخ التطبيقية التي تم العثور عليها في الدليل clusters/dev/helm (--path argument).

ثم ، تحتاج إلى مزامنة تطبيق starter-kit-apps (تذكر أن Argo CD لا يقوم بمزامنة أي شيء افتراضيًا ما لم يُحدد):

argocd app list

الإخراج يبدو مماثلاً لـ:

Output
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY ... ingress-nginx https://kubernetes.default.svc ingress-nginx default OutOfSync Missing Auto-Prune ... cert-manager https://kubernetes.default.svc cert-manager default OutOfSync Missing Auto-Prune ... kube-prometheus-stack https://kubernetes.default.svc monitoring default OutOfSync Missing Auto-Prune ... sealed-secrets-controller https://kubernetes.default.svc sealed-secrets default OutOfSync Missing Auto-Prune ... starter-kit-apps https://kubernetes.default.svc argocd default Synced Healthy <none> ... velero https://kubernetes.default.svc velero default OutOfSync Missing Auto-Prune ...

بعد الانتهاء من الأمر أعلاه، يجب أن ترى تطبيقًا جديدًا موجودًا في لوحة تحكم Argo CD الرئيسية للخادم الخاص بك. يرجى فتح متصفح الويب والانتقال إلى http://localhost:8080. ثم حدد علامة التبويب Applications، وانقر فوق عنصر starter-kit-apps (لاحظ نمط تطبيق الـapps عن طريق النظر إلى الرسم البياني للتكوين):

argocd app sync -l argocd.argoproj.io/instance=starter-kit-apps

يمكنك أيضًا فحص التطبيقات الجديدة عبر واجهة سطر الأوامر (CLI):

الناتج يبدو مشابهًا لهذا:

argocd app list

سيظهر تطبيق الأب starter-kit-apps كمتزامن ولكن التطبيقات الفرعية ستكون غير متزامنة. بعد ذلك، يمكنك مزامنة كل شيء إما باستخدام واجهة الويب أو عبر واجهة سطر الأوامر (CLI):

Output
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS ... ingress-nginx https://kubernetes.default.svc ingress-nginx default Synced Healthy Auto-Prune <none> ... cert-manager https://kubernetes.default.svc cert-manager default Synced Healthy Auto-Prune <none> ... kube-prometheus-stack https://kubernetes.default.svc monitoring default Synced Healthy Auto-Prune <none> ... sealed-secrets-controller https://kubernetes.default.svc sealed-secrets default Synced Healthy Auto-Prune <none> ... starter-kit-apps https://kubernetes.default.svc argocd default Synced Healthy <none> <none> ... velero https://kubernetes.default.svc velero default OutOfSync Missing Auto-Prune SyncError ...

قد تستغرق عملية المزامنة بعض الوقت للانتهاء (حتى 5-10 دقائق)، اعتمادًا على تعقيد وعدد كائنات Kubernetes لجميع التطبيقات التي يتم نشرها.

بعد مرور بعض الوقت، يرجى إدراج جميع التطبيقات مرة أخرى:

argocd app create starter-kit-apps \
  --dest-namespace argocd \
  --dest-server https://kubernetes.default.svc \
  -repo https://github.com/<YOUR_GITHUB_USERNAME>/<YOUR_ARGOCD_GITHUB_REPO_NAME>.git \
  --path clusters/dev/helm \
   --sync-policy automated \
  --auto-prune \
  --self-heal
  • يبدو الناتج مشابهًا لهذا (لاحظ أن جميع التطبيقات متزامنة الآن):
argocd app get velero

سيفشل نشر تطبيق Velero ويترك بغرض في حالة SyncError كتمرين للقارئ ليتعود ويتعلم كيفية تشخيص مشاكل التطبيق في Argo CD. يرجى الرجوع إلى القسم Hints أدناه لمعرفة كيفية تشخيص مشاكل تطبيق Argo CD.
تشغيل تطبيق الأب هو عملية مرة واحدة. في حالة التغييرات في Git لكل تطبيق بعد ذلك، ستكتشف Argo CD التحول وستطبق التغييرات المطلوبة. يستخدم Argo CD آلية الاستطلاع بشكل افتراضي لاكتشاف التغييرات في مستودع Git الخاص بك. تم تعيين فترة التحديث الافتراضية على 3 دقائق. بدلاً من الاعتماد على آلية الاستطلاع، يمكنك أيضًا الاستفادة من قوة الخطافات الويب في Git. يرجى زيارة موقع الوثائق الرسمي لمعرفة كيفية إنشاء وتكوين Argo CD لاستخدام خطافات Git الويب.

Output
Name: velero Project: default Server: https://kubernetes.default.svc Namespace: velero URL: https://argocd.example.com/applications/velero Repo: https://vmware-tanzu.github.io/helm-charts Target: 2.27.3 Path: SyncWindow: Sync Allowed Sync Policy: Automated (Prune) Sync Status: OutOfSync from 2.27.3 Health Status: Missing CONDITION MESSAGE LAST TRANSITION SyncError Failed sync attempt to 2.27.3: one or more objects failed to apply (dry run) (retried 5 times). 2022-03-24 12:14:21 +0200 EET GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE velero.io VolumeSnapshotLocation velero default Failed SyncFailed PostSync error validating data: ValidationError(VolumeSnapshotLocation.spec): missing required field "provider" in io.velero.v1.VolumeSnapshotLocation.spec velero.io BackupStorageLocation velero default Failed SyncFailed PostSync error validating data: [ValidationError(BackupStorageLocation.spec.objectStorage): missing required field "bucket" in io.velero.v1.BackupStorageLocation.spec.objectStorage, ValidationError(BackupStorageLocation.spec): missing required field "provider" in io.velero.v1.BackupStorageLocation.spec] ...

Hints: إذا كنت ترغب في ذلك، يمكنك تكوين تطبيق الأب ليتم مزامنته تلقائيًا (وكذلك تمكين الشفاء الذاتي والتقليم التلقائي)، يمكنك استخدام الأمر التالي (لا تنسى استبدال العلامات <> بالطريقة المناسبة):

–dest-namespace argocd \

–dest-server https://kubernetes.default.svc \

–sync-policy automated \

–auto-prune \

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

في حالة حدوث أي فشل في المزامنة، يمكنك دائمًا فحص أحداث 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 في رأس صفحة التطبيق. ستظهر لك لوحة جديدة، تعرض معلومات مفيدة حول سبب فشل عملية المزامنة:

مجموعات التطبيقات هي ميزة قوية أخرى تقدمها Argo CD. متحكم ApplicationSet هو مشروع فرعي في Argo CD، الذي يضيف التشغيل التلقائي للتطبيق عبر تعريفات قوالب. تساعدك هذه الميزة في تجنب التكرار في تصريحات تطبيقك (استخدام مبدأ DRY).

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: my-app
spec:
  generators:
    - list:
        elements:
          - cluster: dev
            url: https://kubernetes.dev.svc
          - cluster: qa
            url: https://kubernetes.qa.svc
          - cluster: prod
            url: https://kubernetes.prod.svc
  template:
    metadata:
      name: '{{cluster}}-app'
    spec:
      project: default
      source:
        repoURL: https://github.com/myrepo/my-applicationset.git
        targetRevision: HEAD
        path: clusters/{{cluster}}/my-apps
      destination:
        server: '{{url}}'
        namespace: argocd

يتم تثبيت متحكم ApplicationSet بجانب Argo CD (Dentro del mismo espacio de nombres)، ويقوم تلقائيًا بإنشاء تطبيقات Argo CD استنادًا إلى محتويات مورد تخصيص جديد لـ ApplicationSet (CR).

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: dev-app
spec:
  project: default
  source:
    repoURL: https://github.com/myrepo/my-applicationset.git
    targetRevision: HEAD
    path: clusters/dev/my-apps
  destination:
    server: https://kubernetes.dev.svc
    namespace: argocd

ملاحظة:
بدءًا من الإصدار 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 المحددة مسبقًا لتوجيه تطبيقات القوالب.

argocd app delete starter-kit-apps

Git generator: يستخدم ملفات/مجلدات مستودع Git لتوجيه تطبيقات القوالب.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: cert-manager
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
...

الـ ApplicationSet CRD النموذجي باستخدام List Generator، يبدو على النحو التالي:

تطبيق المعيار ApplicationSet أعلاه إلى عقدة Kubernetes الخاصة بك سيجعل ثلاث تطبيقات Argo CD. على سبيل المثال، يتم تقديم تطبيق البيئة dev على النحو التالي:

المحركات النموذجية قوية للغاية من حيث الطبيعة وتقدم العديد من الإمكانيات. يرجى زيارة الموقع الرئيسي للتوثيق الخاص بـ ApplicationSet لمعرفة المزيد حول هذه الميزة.

إزالة تطبيقات Argo CD

تتم عملية إزالة (أو حذف) التطبيقات التي يديرها Argo CD عن طريق حذف التصريح المقابل من مصدر مستودع Git. في حالة التطبيقات التي تم إنشاؤها باستخدام نمط تطبيقات التطبيقات، يجب حذف التطبيق الرئيسي فقط (سواء عبر واجهة CLI أو الويب). بعد ذلك، سيتم حذف جميع التطبيقات الفرعية أيضًا كجزء من العملية.

  • كيفية حذف تطبيق الوالدين starter-kit-apps (بما في ذلك التطبيقات الفرعية) باستخدام argocd CLI:
  • إذا كنت ترغب في التأكد من أن التطبيقات الفرعية وجميع مواردها تم حذفها عند حذف التطبيق الأصلي، يرجى التأكد من إضافة finalizer المناسب إلى تعريف التطبيق الخاص بك:

Source:
https://www.digitalocean.com/community/developer-center/implementing-gitops-using-argo-cd