فرض کن یه رستوران بزرگ داری تو به عنوان مدیر، یه دفتر داری که توش دقیق نوشتی هر غذا چطوری باید درست بشه
چه مواد اولیهای داره، چند تا آشپز لازمه، دمای فر چقدره، و حتی چند تا غذا همزمان باید آماده بشن.
اون دفتر در دنیای نرمافزار، همون مخزن Gitه. یعنی جایی که «دستور اصلی کار» نوشته شده.
حالا توی آشپزخونه (که در دنیای ما همون Kubernetesه) چند تا آشپز مشغول کارن.
قراره همه طبق دستور دفتر کار کنن، ولی خب، معمولاً یکی یه تغییری میده!
یکی میگه «بیاین یه کم فلفل بیشتر بریزیم»،
یکی تصمیم میگیره دمای فر رو زیاد کنه که کار زودتر تموم شه،
یا یکی برای تست یه دستور جدید، خودش دستی یه چیز رو عوض میکنه.
اینجا دقیقاً همون اتفاقیه که توی سرورهای واقعی میافته:
کسی ممکنه بره یه Deployment رو مستقیم ادیت کنه،
تعداد replicaها رو زیاد کنه،
یا نسخهی برنامه رو دستی عوض کنه.
در نتیجه، چیزی که واقعاً روی سرور در حال اجراست با اون چیزی که در Git نوشته شده فرق داره.
اینجاست که ArgoCD وارد ماجرا میشه.
ArgoCD توی این مثال نقش سرآشپز ارشد و منظم رستوران رو داره.
اون دفتر دستور پخت (Git) رو همیشه دستشه و مدام بین آشپزها میچرخه تا مطمئن بشه همه دقیق طبق دستور عمل میکنن.
هر چند دقیقه یه بار میره سر میز کار آشپزها (یعنی سراغ Kubernetes) و نگاه میکنه ببینه همهچیز با دفتر یکی هست یا نه.
اگه ببینه دستور پخت تغییر کرده، دو حالت داره:
یا فقط خبر میده که «این غذا با دفتر یکی نیست» (که بهش میگن manual sync)
یا خودش بدون حرف اضافه، دستور درست رو دوباره اعمال میکنه (این میشه auto-sync)
از دید فنی، ArgoCD یه GitOps Controllerـه.
یعنی چی؟ یعنی اون دائم داره وضعیت فعلی کلاستر Kubernetes رو با وضعیت تعریفشده در Git مقایسه میکنه.
به Git میگه “تو منبع حقیقتی (source of truth)”،
و هر چی اونجا تغییر کنه (مثلاً فایل YAML جدید یا یه commit تازه)، ArgoCD اون تغییر رو میفهمه، تفاوتش رو حساب میکنه و بعد تغییرات رو روی کلاستر اعمال میکنه.
پس دیگه کسی نباید مستقیم بره چیزی رو روی سرور تغییر بده.
هر کاری بخوای بکنی، باید از Git انجامش بدی.
ArgoCD خودش بقیه مسیر رو میره، Deploymentها رو update میکنه، نسخهها رو sync میکنه، و حتی اگه کسی چیزی رو اشتباه عوض کنه، خودش برش میگردونه به حالت درست.
خلاصهاش:
Git شده دفتر دستور پخت رسمی.
Kubernetes شده آشپزخونهای که غذاها اونجا درست میشن.
و ArgoCD شده سرآشپز وسواسی که نمیذاره هیچکس از دستور تخطی کنه.
به زبان خودمونی، ArgoCD تضمین میکنه اون چیزی که واقعاً روی سرور در حال اجراست، دقیقاً همون چیزیه که تو Git گفتی باید باشه.
نه کمتر، نه بیشتر.
#DevOps
#argocd
#cluster
#kubernetes
#byteforge
@byteforge_chan 🛸