چند وقته دارم درباره ArgoCD مطالعه میکنم و واقعاً نگاه من به deployment رو عوض کرده. میخوام خیلی ساده براتون بگم چیه، بعد یه ترفند کمتر شناختهشدهش رو هم بهتون نشون بدم که خیلیا ازش استفاده نمیکنن ولی وقتی ببینن کف میکنن
ابزار ArgoCD چیه؟
یه ابزار GitOps برای Kubernetes
یعنی چی؟ یعنی به جای اینکه با kubectl apply دستی چیزی رو deploy کنی، فقط manifest هات رو توی یه Git repo نگه میداری و ArgoCD خودش مدام چک میکنه که وضعیت کلاستر با چیزی که توی Git نوشتی match باشه. اگه یکی نبود، خودش sync میکنه یا بهت خبر میده. یعنی Git تبدیل میشه به single source of truth، و هر تغییری تاریخچه و ردپا داره.
حالا ترفندی که خیلیا نمیدونن: Sync Waves
فرض کن چند تا manifest داری که باید به ترتیب خاصی اجرا بشن (مثلاً اول Database بالا بیاد، بعد Migration اجرا بشه، بعد Backend deploy بشه). خیلیا اینو یا دستی مدیریت میکنن یا با اسکریپت جدا.
ولی ArgoCD یه annotation ساده داره:
metadata:
annotations:
https://argocd.argoproj.io/sync-wave: "1"
هر عددی که بذاری، ترتیب اجرا رو مشخص میکنه (اعداد کوچیکتر زودتر اجرا میشن). میتونی حتی با PreSync، Sync و PostSync hook ترکیبش کنی تا مثلاً یه job قبل از deploy اصلی اجرا بشه (مثل migration) و بعدش خودکار پاک بشه.
یه annotation کوچیک، کل orchestration پیچیدهت رو نظم میده. من اولین بار که دیدمش واقعاً شوکه شدم که چقدر ساده و قدرتمنده.
@DevTwitter | <Erfan Ramezani/>