از Kubernetes توسعه تا پروداکشن واقعی: چی باید عوض بشه؟
خلاصهٔ کاملتر
وقتی یه اپلیکیشن روی Kubernetes راهاندازی میشه، معمولاً از یه ستاپ توسعهمحور شروع میکنیم: دامنههای محلی مثل *.127.0.0.1.nip.io، سرتیفیکتهای تولیدشده با mkcert، کردنشیالهای پیشفرض، و دیپلوی دستی با Helm. این ستاپ برای یادگیری عالیه، ولی برای یه سرویس واقعی کافی نیست. این مقاله داستان تبدیل همین نوع ستاپ به یه پلتفرم قابل اعتماد رو روایت میکنه.
نویسنده این مسیر رو به چهار مرحله کلی تقسیم میکنه: اول بلوکهای پایه رو کار بنداز، بعد محصول رو سر تا ته وصل کن، کنترل تغییرات رو به Git منتقل کن، و در آخر قابلیتهای عملیاتی مثل بکاپ و مانیتورینگ رو جا بنداز. این ترتیب عمدی بود؛ اضافه کردن GitOps یا policy قبل از اینکه لاگین کار کنه یا مسیر آپلود فایل درست باشه، مشکلی رو حل نمیکرد.
یکی از مهمترین تغییرات، رفتن به سمت GitOps با ابزار Flux بود. در این مدل، Git به عنوان «deployment API» عمل میکنه: به جای اجرای یه سری دستور، یه تغییر کامیت میشه و کنترلر وظیفه همراستا کردن کلاستر با وضعیت مطلوب رو برعهده میگیره. سیکرتها هم با SOPS رمزگذاری شده و کنار کانفیگ محیط نگه داشته میشن، نه به صورت مقادیر خام.
بعد از GitOps، نوبت به گاردریلهای اعتبارسنجی رسید: چکهای CI برای YAML و Helm، pre-commit hookها، و policy با Kyverno. نکته مهم اینه که GitOps بدون validation فقط اشتباهات رو سریعتر اتوماتیک میکنه. هر لایه یه سوال مشخص جواب میده — از «آیا فرمت درسته؟» تا «آیا سیستم دیپلویشده درست رفتار میکنه؟»
بکاپ فقط «پیکربندیشده» بودن کافی نیست؛ باید «تمرینشده» هم باشه. تیم یه cron job روزانه راه انداخت که دیتابیس رو داخل یه کانتینر جداگانه ریستور میکنه و چکهای اولیه روش اجرا میکنه. این کار بکاپ رو از یه فرض خوشبینانه تبدیل به یه شواهد قابل تکرار میکنه.
در بخش observability هم داشبوردهای Grafana برای Flux، دیتابیس، identity، ingress و کش راهاندازی شد. اما مهمترین بخش، چکهای synthetic بود: هر چند ثانیه یه بار از بیرون کلاستر بررسی میشه که آیا endpoint عمومی قابل دسترسیه یا نه. این سادهترین و در عین حال مفیدترین سیگنال خارجیه.
نکات کلیدی:
- اجرا شدن روی Kubernetes ≠ آماده بودن برای پروداکشن
- ترتیب انجام تغییرات مهمه: اول یکپارچگی، بعد کنترل تغییر، بعد عملیات
- GitOps با Flux، Git رو به deployment API تبدیل میکنه و کارها قابل بازبینی و audit میشن
- سیکرتها باید با SOPS رمزگذاری بشن و داخل ریپو نگه داشته بشن
- بکاپی که ریستورش تست نشده، فقط یه فرضیهست نه یه تضمین
- Observability یعنی جواب دادن به سوالات عملیاتی واقعی، نه فقط داشتن داشبورد
- پروداکشن یه حالت نیست که بهش برسی؛ یه عادت مداوم از تست و بهبوده




