Argo CD ابزار قدرتمند استقرار مداوم (CD) برای کوبرنتیز است که از رویکرد گیتآپس استفاده میکند. در این مطلب، ضمن پاسخ به این پرسش که Argo CD چیست توضیح میدهیم که چگونه این ابزار فرآیند CI/CD را در محیطهای کوبرنتیز بهبود میبخشد. ما ویژگیهای کلیدی Argo CD، نحوه عملکرد آن در چارچوب گیتآپس و اجزای اصلی این سیستم را مورد بحث قرار خواهیم داد. همچنین، به این موضوع میپردازیم که چگونه Argo CD به تسهیل گیتآپس در کوبرنتیز کمک میکند و مزایای استفاده از آن را در فرآیند توسعه و استقرار نرمافزار بررسی خواهیم کرد.
Argo CD چیست؟
«آرگو سیدی» (Argo CD) ابزار «استقرار مداوم» (Continues Integration | CD) محسوب میشود که بهطور ویژه برای کوبرنتیز طراحی شده است. برخلاف ابزارهای استقرار مداوم خارجی که تنها از روشهای استقرار مبتنی بر فشار (Push-Based) استفاده میکنند، Argo CD میتواند کدهای بهروزشده را مستقیماً از مخازن گیت (Git) دریافت کرده و آنها را روی منابع کوبرنتیز مستقر کند. این ویژگی به توسعهدهندگان امکان میدهد تا هم پیکربندی زیرساخت و هم بهروزرسانیهای نرمافزار را در یک سیستم واحد مدیریت کنند. Argo CD ویژگیها و قابلیتهای کلیدی زیر را ارائه میدهد:
- استقرار دستی یا خودکار برنامهها روی خوشهٔ کوبرنتیز
- همگامسازی خودکار وضعیت برنامه با آخرین نسخهٔ پیکربندی اعلامی
- رابط کاربری تحت وب و رابط خط فرمان (CLI)
- توانایی نمایش مشکلات استقرار، تشخیص و رفع ناهماهنگیهای پیکربندی
- کنترل دسترسی مبتنی بر نقش (RBAC) که امکان مدیریت چند خوشه را فراهم میکند.
- ورود یکپارچه (SSO) با ارائهدهندگانی مانند گیتلب، گیتهاب، مایکروسافت، OAuth2 ،OIDC، لینکدین، LDAP و SAML 2.0
- پشتیبانی از وبهوکها برای راهاندازی اقدامات در گیتلب، گیتهاب و بیتباکت.
این ویژگیها به کاربران اجازه میدهند تا فرآیند استقرار و مدیریت برنامههای خود را در محیط کوبرنتیز به شکلی کارآمد و انعطافپذیر انجام دهند.
گیتآپس با Argo CD چیست؟
گیتآپس (GitOps) یک روش مهندسی نرمافزار است که از مخزن گیت بهعنوان تنها منبع حقیقت استفاده میکند. در این روش، تیمها پیکربندیهای اعلامی را در گیت ثبت میکنند و از این پیکربندیها برای ایجاد محیطهای مورد نیاز در فرآیند تحویل مداوم استفاده میشود. در گیتآپس، هیچ تنظیم دستی محیط یا استفاده از اسکریپتهای مجزا وجود ندارد، همه چیز از طریق مخزن گیت تعریف میشود.
یکی از بخشهای اساسی فرآیند گیتآپس، درخواست ادغام (Pull Request) است. نسخههای جدید پیکربندی از طریق درخواست ادغام معرفی میشوند، با شاخهٔ اصلی در مخزن گیت ترکیب میشوند و سپس نسخهٔ جدید بهطور خودکار مستقر میشود. مخزن گیت شامل سابقهٔ کاملی از تمام تغییرات، از جمله تمام جزئیات محیط در هر مرحله از فرآیند است.
آرگو سیدی مراحل پایانی فرآیند گیتآپس را مدیریت میکند و اطمینان حاصل میکند که پیکربندیهای جدید بهدرستی روی خوشهٔ کوبرنتیز مستقر میشوند. بهطور کلی، فرآیند Argo CD به این صورت عمل میکند:
- یک توسعهدهنده تغییراتی در برنامه ایجاد میکند و نسخهٔ جدیدی از تعاریف منابع کوبرنتیز را به مخزن گیت ارسال میکند.
- یکپارچهسازی مداوم (Continuous Integration | CI) فعال میشود که منجر به ذخیرهٔ تصویر کانتینر جدید در یک مخزن میگردد.
- توسعهدهنده درخواست ادغام (Pull Request) را صادر میکند که شامل تغییرات در مانیفستهای کوبرنتیز است. این مانیفستها میتوانند به صورت دستی یا خودکار ایجاد شده باشند.
- درخواست ادغام بررسی شده و تغییرات با شاخهٔ اصلی ترکیب میشوند. این عمل یک وبهوک را فعال میکند که به Argo CD اطلاع میدهد تغییری ایجاد شده است.
- آرگو سیدی مخزن را کلون و وضعیت برنامه را با وضعیت فعلی خوشهٔ کوبرنتیز مقایسه میکند. سپس تغییرات لازم را در پیکربندی خوشه اعمال میکند.
- کوبرنتیز از کنترلِرهای خود استفاده میکند تا تغییرات مورد نیاز در منابع خوشه را اعمال کند، تا زمانی که به پیکربندی مطلوب برسد.
- Argo CD پیشرفت کار را نظارت میکند و زمانی که خوشهٔ کوبرنتیز آماده شد، گزارش میدهد که برنامه همگام شده است.
- آرگو سیدی همچنین در جهت مخالف نیز کار میکند، یعنی تغییرات در خوشهٔ کوبرنتیز را نظارت میکند و اگر با پیکربندی فعلی در گیت مطابقت نداشته باشند، آنها را نادیده میگیرد.
Argo CD چطور به تسهیل گیتآپس با کوبرنتیز کمک میکند؟
- عامل گیتآپس (GitOps Agent): Argo CD مسئول دریافت کدهای بهروزشده از مخازن گیت و استقرار مستقیم آنها روی منابع کوبرنتیز است. این ابزار هم پیکربندی زیرساخت و هم بهروزرسانیهای برنامه را در سیستمی واحد مدیریت میکند.
- تعاریف منابع سفارشی (CRD | Custom Resource Definitions): آرگو سیدی در فضای نام اختصاصی خود درون خوشهٔ کوبرنتیز فعالیت میکند. این ابزار CRDهای خاص خود را ارائه میدهد که API کوبرنتیز را گسترش داده و امکان تعریف وضعیت مطلوب برنامه را به شکلی اعلامی (Declarative) فراهم میکند. Argo CD بر اساس دستورالعملهای موجود در مخزن گیت یا مخزن Helm، از CRDهای خود برای اعمال تغییرات در فضای نام اختصاصیاش استفاده میکند.
- رابط خط فرمان (CLI): آرگو سیدی CLI قدرتمندی ارائه میدهد که شما را قادر میسازد با چند دستور ساده، تعاریف منابع YAML را ایجاد کنید. برای مثال، دستور
Argo CD app create
به شما اجازه میدهد با مشخص کردن چند پرچم، یک شیء Application معتبر ایجاد کنید که برنامهٔ شما را بدون نیاز به نوشتن دستی YAML توصیف میکند. - رابط کاربری: Argo CD در این زمینه منحصر به فرد است که یک رابط کاربری تحت وب راحت ارائه میدهد که به شما امکان میدهد همان کار را انجام دهید، یعنی برنامه را تعریف کنید و از آرگو سیدی بخواهید پیکربندیهای YAML مربوطه را ایجاد کند. همچنین به شما امکان میدهد پیکربندی کوبرنتیز حاصل را از نظر پادها و کانتینرها مشاهده کنید. اگرچه برخی ممکن است فکر کنند استفاده از رابط کاربری «گیتاپس واقعی» نیست، این درست نیست، زیرا رابط کاربری برای کنترل مستقیم خوشه استفاده نمیشود، بلکه فقط راهی آسانتر برای ایجاد پیکربندی اعلامی است.
- چند مستأجری (Multi-tenancy): آرگو سیدی از همکاری چندین تیم روی پروژههای مختلف در یک محیط کوبرنتیز به خوبی پشتیبانی میکند. CRDهای Argo CD میتوانند محدود شوند تا فقط مخازن منبع متعلق به یک پروژهٔ خاص را بخوانند و میتوانند طوری تنظیم شوند که برنامهها را در خوشه و فضای نام خاصی مستقر کنند. هر نمونه CRD همچنین میتواند تنظیمات کنترل دسترسی مبتنی بر نقش (RBAC) خاص خود را داشته باشد.
- بهرهگیری از ابزارهای موجود: بسیاری از سازمانها قبلاً در پیکربندیهای اعلامی مبتنی بر YAML، چارتهای Helm ،Kustomize یا سایر سیستمها سرمایهگذاری کردهاند. Argo CD هدفش استفاده از این سرمایهگذاریهای موجود است، نه جایگزینی آنها. این ابزار میتواند از هر یک از این فرمتها برای ایجاد خودکار تعاریف CRD مربوطه استفاده کند.
Argo CD چطور کار میکند؟
هنگام استفاده از Argo CD، میتوانید پیکربندی برنامه را با استفاده از چندین نوع مانیفست کوبرنتیز مشخص کنید، از جمله:
- مانیفستهای ساده YAML یا JSON
- چارتهای Helm
- Kustomize
- برنامههای Ksonnet و Jsonnet
همچنین امکان استفاده از هر ابزار مدیریت پیکربندی سفارشی بهعنوان یک افزونه نیز وجود دارد. Argo CD بهطور خودکار وضعیت مطلوب یک برنامه را در محیط هدفِ مشخصشده مستقر میکند. بهروزرسانیها از طریق برچسبها (Tags)، شاخهها (Branches)، یا نسخههای خاص ثابتشده (Pinned Specific Versions) یک مانیفست در کامیتهای گیت قابل ردیابی هستند.
آرگو سیدی یک کنترلر کوبرنتیز است که وظیفهٔ نظارت مداوم بر تمام برنامههای در حال اجرا را بر عهده دارد. این ابزار، وضعیت فعلی برنامهها را با وضعیت مطلوبی که در مخزن گیت تعریف شده، مقایسه میکند. اگر وضعیت فعلی یک برنامهٔ مستقر شده با وضعیت مطلوب آن تفاوت داشته باشد، Argo CD آن را به عنوان «ناهمگام» (OutOfSync) شناسایی میکند.
آرگو سیدی این تفاوتها را گزارش میدهد و با ارائهٔ نمایشهای بصری، به توسعهدهندگان کمک میکند تا وضعیت فعلی را به صورت دستی یا خودکار با وضعیت مطلوب هماهنگ کنند. این ابزار قادر است هر تغییری که در وضعیت مطلوب (در مخزن گیت) ایجاد شود را به طور خودکار در محیط هدف اعمال کند. این قابلیت تضمین میکند که برنامهها همواره در حالت همگام باقی بمانند.
اجزای اساسی Argo CD چیست؟
در ادامه هر یک از اجزای اساسی Argo CD را معرفی میکنیم و آنها را شرح میدهیم.
API در Argo CD چیست؟
این سرویس، یک سرور API از نوع gRPC/REST است که رابط برنامهنویسی را برای اجزایی مانند رابط خط فرمان و رابط کاربری وب فراهم میکند. وظایف اصلی این سرویس عبارتند از:
- مدیریت برنامهها و گزارش وضعیت آنها
- اجرای عملیاتهای برنامه مانند اقدامات تعیینشده توسط کاربر، همگامسازی و بازگشت به نسخههای قبلی
- مدیریت اعتبارنامههای خوشه و مخزن که به صورت اسرار کوبرنتیز ذخیره میشوند
- احراز هویت و واگذاری مجوز به ارائهدهندگان هویت شخص ثالث
- اعمال سیاستهای کنترل دسترسی مبتنی بر نقش (RBAC)
- دریافت و ارسال رویدادهای وبهوک گیت
سرویس مخزن در Argo CD
این سرویس داخلی، مخزن گیت را به صورت محلی در حافظه پنهان ذخیره میکند و مانیفستهای برنامه را نگهداری میکند. سرویس مخزن، مانیفستهای کوبرنتیز را تولید میکند و بر اساس ورودیهایی مانند آدرس مخزن، مسیر برنامه، نسخهها (مانند کامیتها، برچسبها، شاخهها) و تنظیمات خاص قالب (مانند مقادیر Helm، محیطهای Ksonnet، پارامترها) آنها را برمیگرداند.
کنترلر برنامه
این جزء، یک کنترلر کوبرنتیز است که بهطور مداوم برنامهها را نظارت میکند و وضعیت هدف مشخصشده در مخزن گیت را با وضعیت فعلی هر برنامه مقایسه میکند. کنترلر برنامهها تشخیص میدهد که چه زمانی یک برنامه ناهمگام است و در صورت مشخص شدن، میتواند اصلاحات را اعمال کند. این کنترلر همچنین قلابهایی را که توسط کاربر برای رویدادهای چرخه حیات برنامه (مانند قبل از همگامسازی، همگامسازی و پس از همگامسازی) تعریف شدهاند، فراخوانی میکند.
جمعبندی
آرگو سیدی (Argo CD) یک ابزار قدرتمند استقرار مداوم برای کوبرنتیز است که با استفاده از رویکرد گیتآپس، فرآیند مدیریت و استقرار برنامهها را بهبود میبخشد. این ابزار با ارائه ویژگیهایی مانند همگامسازی خودکار، رابط کاربری تحت وب، کنترل دسترسی مبتنی بر نقش و پشتیبانی از انواع مختلف مانیفستها، به توسعهدهندگان امکان میدهد تا پیکربندی زیرساخت و بهروزرسانیهای نرمافزار را در یک سیستم واحد مدیریت کنند.
آرگو سیدی با استفاده از اجزای کلیدی خود مانند API، سرویس مخزن و کنترلر برنامه، اطمینان حاصل میکند که وضعیت برنامهها همواره با آخرین نسخه پیکربندی در مخزن گیت همگام باشد. این رویکرد نه تنها فرآیند استقرار را سادهتر میکند، بلکه قابلیت ردیابی، امنیت و ثبات بیشتری را در محیطهای کوبرنتیز فراهم میآورد.