بازگردانی نسخه (Rollback)
سیستم بازگردانی نسخه (Rollback) به شما امکان میدهد در صورت بروز مشکل در یک استقرار جدید، اپلیکیشن را به نسخه پایدار قبلی بازگردانید.
مکانیزم کارکرد
۱. نگهداری تصاویر: ریجستری ابرکلیک تصاویر ۱۰ استقرار موفق اخیر را نگهداری میکند. ۲. تاریخچه: استقرارهای شما شامل image tag، متغیرهای محیطی، و وضعیت ثبت میشوند. ۳. Rolling Rollback: کوبرنتیز پادهای کانتینر را با نسخه قبلی بارگذاری کرده و ترافیک را هدایت میکند.
عملیات rollback فقط image را بازمیگرداند. متغیرهای محیطی فعلی تغییر نمیکنند. اگر نسخه قبلی به متغیری وابسته است که حذف شده، باید آن را دوباره تنظیم کنید.
روشهای بازگرداندن برنامه به نسخههای قبل
روش اول — از طریق داشبورد وب
۱. وارد صفحه جزئیات برنامه خود شوید. ۲. به زبانه تغییرات و استقرارها (Deployments) بروید. ۳. در جدول تاریخچه، نسخه پایدار قبلی (که با چراغ سبز مشخص شده است) را پیدا کنید. ۴. روی دکمه «بازگردانی» (Rollback) کلیک کنید. ۵. در پنجره باز شده، تایید نهایی را کلیک کنید.
روش دوم — از طریق ابزار CLI
برای بازگردانی برنامه به آخرین نسخه موفق پیشین:
abrclick rollback <app-id>
اگر میخواهید برنامه را به یک نسخه خاص و با شناسه مشخص (Deployment ID) بازگردانید:
abrclick rollback <app-id> --to-deployment <deployment-id>
روش سوم — از طریق وب سرویس API
برای توسعهدهندگانی که میخواهند فرآیندهای بازگردانی را در ابزارهای خارجی اتوماتیک کنند:
POST /v1/projects/:projectId/apps/:appId/rollbacks
Content-Type: application/json
{
"deploymentId": "deploy-abc123"
}
سیاست نگهداری کانتینرها (Retention Policy)
- حفظ ۱۰ تصویر موفق: ابرکلیک تصاویر مربوط به ۱۰ بیلد موفق آخر را روی ریجستری نگه میدارد.
- حذف خودکار کانتینرهای قدیمی: با بیلد شدن نسخههای جدیدتر، خود ریجستری کانتینرهای قدیمیتر از پنجره ۱۰ نسخه را هرس میکند تا فضای دیسک بیهوده اشغال نشود.
- بیلدهای ناموفق: فرآیندهای بیلدی که در مرحله کامپایل شکست خوردهاند، هیچ تصویری تولید نکرده و تاثیری بر تاریخچه بازگردانی ندارند.
خطاهای احتمالی در بازگردانی و نحوه رفع آنها
۱. خطای عدم یافتن تصویر کانتینر (IMAGE_NOT_FOUND)
این خطا زمانی رخ میدهد که تلاش کنید برنامه را به نسخهای قدیمیتر از ۱۰ استقرار گذشته بازگردانید که تصویر آن از ریجستری هرس شده است.
- راهحل: در این شرایط امکان بازگردانی خودکار کانتینر وجود ندارد. باید مجدداً کدهای آن نسخه را در سیستم گیت یا فولد محلی خود بالا آورده و فرآیند دیپلوی کامل (
abrclick deploy) را اجرا کنید.
۲. خطای کمبود منابع یا لود نشدن پادها (ROLLOUT_TIMEOUT)
این خطا در صورتی پیش میآید که کانتینر قبلی به دلیل تغییرات در زیرساخت (مانند عدم تخصیص رم کافی یا خطاهای استارتآپ) نتواند کارهای خود را در زمان مقرر شروع کند.
- راهحل: لاگهای مربوط به استارتآپ پادها را بررسی کنید و از سازگاری متغیرهای محیطی فعلی با نسخه قدیمیتر مطمئن شوید.
توصیهها
- پیامهای کامیت معنادار: از پیامهای کامیت یا تگهای نسخهگذاری واضح استفاده کنید تا تاریخچه استقرارها خواناتر باشد.
- تست در Staging: پیش از دیپلوی روی پروداکشن، تغییرات را در محیط Staging تست کنید تا نیازی به استفاده مکرر از rollback نباشد.