Argo CD Environments و Rollback
الهدف من الدرس
Section titled “الهدف من الدرس”ستتعلم كيف تنظم GitOps repo لعدة بيئات، وكيف تنفذ rollback عن طريق Git أو Argo CD history.
الفكرة ببساطة
Section titled “الفكرة ببساطة”كل بيئة يجب أن يكون لها مسار واضح في Git. التغيير ينتقل من dev إلى staging ثم prod بمراجعة، وليس بنسخ أوامر يدوية.
هيكلة repo
Section titled “هيكلة repo”gitops/ apps/web/ Chart.yaml values.yaml environments/dev/web/values.yaml environments/staging/web/values.yaml environments/prod/web/values.yamlApplicationSet مختصر
Section titled “ApplicationSet مختصر”apiVersion: argoproj.io/v1alpha1kind: ApplicationSetmetadata: name: web-environments namespace: argocdspec: generators: - list: elements: - env: dev - env: staging - env: prod template: metadata: name: "web-{{env}}" spec: project: default source: repoURL: https://github.com/example/gitops.git targetRevision: main path: apps/web helm: valueFiles: - "../../environments/{{env}}/web/values.yaml" destination: server: https://kubernetes.default.svc namespace: "web-{{env}}" syncPolicy: syncOptions: - CreateNamespace=trueRollback workflow
Section titled “Rollback workflow”flowchart LR A[Alert بعد release] --> B[تحديد commit] B --> C[Revert commit أو tag سابق] C --> D[Argo Sync] D --> E[Verify metrics] E --> F[Postmortem]أوامر مهمة
Section titled “أوامر مهمة”argocd app listargocd app get web-prodargocd app diff web-prodargocd app history web-prodargocd app rollback web-prod <history-id>Lab: تصميم بيئات Argo CD
الهدف: كتابة structure لثلاث بيئات وتحديد طريقة rollback.
Prerequisites
Section titled “Prerequisites”- فهم Helm و Argo CD Application.
- أنشئ folders للبيئات الثلاث.
- اجعل
replicaCountمختلفا بين dev و prod. - أنشئ Application أو ApplicationSet.
- وثق rollback:
git revert <bad-commit>git pushargocd app sync web-prodExpected output
Section titled “Expected output”Sync Status: SyncedHealth Status: HealthyCleanup
Section titled “Cleanup”احذف Applications التجريبية من Argo CD إذا أنشأتها على cluster محلي.
أخطاء شائعة
Section titled “أخطاء شائعة”| الخطأ | العلاج |
|---|---|
| prod يختلف كثيرا عن staging | اجعل الاختلاف في values فقط قدر الإمكان |
| rollback من cluster بدون Git | وثق التغيير في Git فورا |
| auto sync على prod بلا مراجعة | استخدم approvals أو sync windows حسب حاجة الفريق |