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

CI/CD و Argo CD

ستفهم الفرق بين CI و CD و GitOps، وكيف تنشئ Argo CD Application يراقب repo ويطبق manifests على cluster.

CI يبني image ويشغل tests. GitOps يجعل Git هو مصدر الحقيقة للـ manifests. Argo CD يراقب Git ويجعل cluster يطابق ما في Git.

flowchart LR
Dev[Developer] --> AppRepo[App Repo]
AppRepo --> CI[CI Pipeline]
CI --> Registry[Container Registry]
CI --> ConfigRepo[GitOps Repo]
ConfigRepo --> Argo[Argo CD]
Argo --> Cluster[Kubernetes Cluster]

application.yaml:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: web-dev
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/example/kubernetes-course-gitops.git
targetRevision: main
path: environments/dev/web
destination:
server: https://kubernetes.default.svc
namespace: web-dev
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

شرح سريع:

الحقلالمعنى
repoURLrepo الذي يحتوي manifests أو Helm chart
pathالمسار داخل repo للبيئة المطلوبة
destination.namespaceأين يطبق Argo الموارد
pruneحذف الموارد التي حذفت من Git
selfHealإعادة cluster إلى Git لو حصل drift
kubernetes-course-gitops/
apps/
web/
Chart.yaml
values.yaml
templates/
environments/
dev/
web/
values.yaml
staging/
web/
values.yaml
prod/
web/
values.yaml
Terminal window
kubectl apply -f application.yaml
argocd app get web-dev
argocd app sync web-dev
argocd app history web-dev
argocd app rollback web-dev <history-id>

Expected output:

Name: argocd/web-dev
Health Status: Healthy
Sync Status: Synced to main
البيئةالسياسة المقترحة
devsync تلقائي، موارد صغيرة، image tag سريع
stagingsync بعد مراجعة، يشبه prod
prodsync مضبوط، approvals، rollback plan
المشكلةالتشخيصالحل
App OutOfSyncargocd app diff web-devراجع الفرق وطبق sync أو عدل Git
App Degradedargocd app get web-devافحص resource المكسور في Kubernetes
Argo لا يستطيع إنشاء namespaceevents داخل appأضف CreateNamespace=true أو أنشئ namespace
CI يعدل cluster مباشرةمراجعة pipelineاجعل CI يحدث Git فقط

Lab: GitOps Application أولى

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

الهدف: إنشاء Argo CD Application تربط repo ببيئة dev ومراجعة sync status.

  • Argo CD مثبت على cluster.
  • Repo يحتوي manifests أو Helm chart.
  1. عدل repoURL و path في application.yaml.
  2. طبق Application:
Terminal window
kubectl apply -f application.yaml
  1. افحص الحالة:
Terminal window
argocd app get web-dev
argocd app sync web-dev
  1. غير عدد replicas من Git، ثم راقب Argo:
Terminal window
argocd app diff web-dev
argocd app sync web-dev
Sync Status: Synced
Health Status: Healthy
Terminal window
kubectl delete -f application.yaml

الربط بالمشروع النهائي

Section titled “الربط بالمشروع النهائي”

Project 6 سيطلب منك تشغيل مشروعك عبر Argo CD، مع مسارات منفصلة للبيئات وخطة rollback موثقة.