Argo CD و آکتوپوس: پروموشن حسابرسیپذیر
خلاصهٔ کاملتر
تو آرگو سیدی خالص، «پروموشن به پروداکشن» در عمل یعنی باز کردن overlay مربوط به پروداکشن، عوضکردن تگ ایمیج، کامیت و امید به اینکه همونی رو نوشتی که تو Development تست کرده بودی. نویسنده میگه مشکل دقیقاً همونجا خودشو نشون میده که بیشتر از همه بهش نیاز داری: وقتی حسابرس میپرسه کی و کِی این رو پروموت کرده، یا وسط یه incident دنبال این میگردی که چی عوض شده.
ریشهش اینه که آرگو سیدی هر Application رو یه واحد مستقل میبینه و اصلاً مفهومی به اسم ریلیز نداره؛ نسخهٔ dev و نسخهٔ production دوتا Application جدان بدون هیچ رابطهٔ کدشدهای. به گفتهٔ نویسنده دو راه دستساز باقی میمونه: ویرایش دستی تگ تو هر overlay، یا ساختن یه Pull Request بهازای هر محیط با اسکریپت. اولی سریعه ولی هیچ دروازهٔ تأیید و رد و نشونی نداره، دومی هم منطق پروموشن رو میبره تو YAML و اسکریپت CI و هر تیم از نو اختراعش میکنه.
راهکاری که مقاله نشون میده وصلکردن آرگو سیدی به Octopus Deploy از طریق یه gateway ـه که با Helm تو کلاستر نصب میشه و بهصورت outbound به آکتوپوس وصل میشه، پس نه ingress لازمه نه آدرس عمومی و کل دمو روی یه کلاستر kind محلی هم راه میافته.
نگاشت Applicationها به پروژه و محیط هم فقط با دوتا آنوتیشن روی خود منیفست انجام میشه و هیچ تنظیم جداگانهای تو آکتوپوس نمیخواد:
metadata:
name: web-dev
annotations:
argo.octopus.com/project: argo-web-promotion
argo.octopus.com/environment: developmentنسخهٔ پروداکشن دقیقاً همینه با نام web-production و محیط production. بعدش تو آکتوپوس یه پروژه با lifecycle دومرحلهای Development و Production میسازی و استپ آمادهٔ Update Argo CD Application Image Tags رو اضافه میکنی: محل Git رو از خود Application برمیداره، تگ ایمیج رو تو منیفستها عوض میکنه، کامیت میزنه و آرگو سیدی رو به sync وامیداره. یه استپ Manual intervention که فقط به Production اسکوپ شده هم میشه دروازهٔ تأیید.
نتیجه اینه که ریلیز مثلاً روی nginx:1.27.2 فریز میشه و همون اسنپشات از dev به پروداکشن میره؛ تا وقتی پروموت نشده، پروداکشن هنوز 1.27.0 رو اجرا میکنه. به گفتهٔ نویسنده چیزی که مجانی گیرت میاد حکمرانیه: یه کامیت گیت بهازای هر پروموشن، رد تأیید با اسم آدم مسئول، و یه داشبورد که نشون میده کدوم ریلیز کجا در حال اجراست.
نکات کلیدی:
- آرگو سیدی مفهوم ریلیز نداره؛ dev و production دوتا Application مستقلن
- gateway آکتوپوس با Helm نصب میشه و outbound وصل میشه، پس ingress لازم نیست
- دوتا آنوتیشن روی منیفست، هر Application رو به پروژه و محیط آکتوپوس وصل میکنه
- استپ Manual intervention اسکوپشده به Production همون گیت تأیید انسانیه
- ریلیز یه اسنپشات تغییرناپذیره، پس پروداکشن دقیقاً همونی رو میگیره که تو dev تأیید شده




