تخطَّ إلى المحتوى

Argo CD Environments و Rollback

ستتعلم كيف تنظم GitOps repo لعدة بيئات، وكيف تنفذ rollback عن طريق Git أو Argo CD history.

كل بيئة يجب أن يكون لها مسار واضح في Git. التغيير ينتقل من dev إلى staging ثم prod بمراجعة، وليس بنسخ أوامر يدوية.

gitops/
apps/web/
Chart.yaml
values.yaml
environments/dev/web/values.yaml
environments/staging/web/values.yaml
environments/prod/web/values.yaml
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: web-environments
namespace: argocd
spec:
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=true
flowchart LR
A[Alert بعد release] --> B[تحديد commit]
B --> C[Revert commit أو tag سابق]
C --> D[Argo Sync]
D --> E[Verify metrics]
E --> F[Postmortem]
Terminal window
argocd app list
argocd app get web-prod
argocd app diff web-prod
argocd app history web-prod
argocd app rollback web-prod <history-id>

Lab: تصميم بيئات Argo CD

المستوى: مبتدئ الوقت: 35 دقيقة الأدوات: argocd, git

الهدف: كتابة structure لثلاث بيئات وتحديد طريقة rollback.

  • فهم Helm و Argo CD Application.
  1. أنشئ folders للبيئات الثلاث.
  2. اجعل replicaCount مختلفا بين dev و prod.
  3. أنشئ Application أو ApplicationSet.
  4. وثق rollback:
Terminal window
git revert <bad-commit>
git push
argocd app sync web-prod
Sync Status: Synced
Health Status: Healthy

احذف Applications التجريبية من Argo CD إذا أنشأتها على cluster محلي.

الخطأالعلاج
prod يختلف كثيرا عن stagingاجعل الاختلاف في values فقط قدر الإمكان
rollback من cluster بدون Gitوثق التغيير في Git فورا
auto sync على prod بلا مراجعةاستخدم approvals أو sync windows حسب حاجة الفريق