کنترل آمادگی ارتقا به Crossplane v2
خلاصهٔ کاملتر
به گفتهٔ تیم Crossplane، موقع طراحی نسخهٔ v2 سازگاری با عقب یکی از اهداف اصلی بوده و بیشتر کنترلپلینهای v1.x میتونن بدون هیچ تغییری ارتقا پیدا کنن؛ Claimها، composite resourceها (XR)، Compositionها و managed resourceهای cluster-scoped همگی تو v2 کار میکنن. ولی «بیشتر» یعنی «همه» نیست و یه مجموعهٔ کوچیک از قابلیتهای v1 تو v2 حذف یا تغییر کرده.
تا حالا برای پیدا کردن این موارد آدم باید یادداشتهای سازگاری رو میخوند و بعد دونهدونه تو هر Composition و package و resource دنبال چیزی که داره حذف میشه میگشت — کاری خستهکننده و مستعد خطا. نویسنده میگه همین عدمقطعیت باعث شده بعضیها از رفتن به v2 جا بزنن.
دستور crossplane beta upgrade check به این ماجرا جواب قطعی میده. به یه کلاستر زندهٔ v1.x وصل میشه و کامل دنبال هر چیزی که v2 بهصورت breaking حذف یا عوض میکنه میگرده، و مستقیم میبردت سراغ resourceهایی که باید درست بشن، با راهحل دقیق هر کدوم. این دستور حواسش به false positive هم هست و فقط چیزایی رو که خودت واقعاً فعال کردی علامت میزنه، نه defaultهایی که خود کنترلرها و API server تزریق میکنن.
مواردی که چک میکنه اینان: Compositionهای native patch-and-transform که حذف شدن و باید به function pipeline منتقل بشن (محتملترین موردی که گریبونتو میگیره)؛ استفاده از ControllerConfig که جاش رو به DeploymentRuntimeConfig داده؛ external secret stores که این فیچر alpha کلاً حذف شده؛ package sourceهای بدون hostname که حالا باید کامل qualified باشن؛ و connection detailهای composite resource که فقط جنبهٔ اطلاعرسانی داره.
اجراش سادهست — با kubeconfig فعلیت کل کنترلپلین رو جارو میکنه. اگه همهچی تمیز باشه با exit code صفر بهت میگه آمادهٔ ارتقایی، و اگه blocker پیدا کنه با کد غیرصفر خارج میشه. هر finding خودکفاست: یه خط خلاصهٔ تغییر، یه خط Fix: که اغلب دقیقاً همون دستور crossplane beta convert رو که resource رو برات migrate میکنه نام میبره، و یه خط Docs: با لینک به بخش مربوطه. خروجی -o json هم همین دادهها رو ساختارمند میده تا بشه تو pipeline اتومات کرد.
برای کنترلپلینهای شلوغ هم دو تا فلگ تنظیم بار هست: --skip-managed-resources که اسکن managed resourceها (سنگینترین بخش) رو رد میکنه، و --concurrency (پیشفرض ۱۰) که تعداد resourceهای موازی رو محدود میکنه تا API server زیر فشار نره. نکتهٔ مهم اینه که این ابزار فقط قبل از ارتقا به درد میخوره، برای همین انحصاراً تو CLI نسخهٔ v1.20 (از پچ v1.20.9) عرضه شده.
نکات کلیدی:
- دستور crossplane beta upgrade check یه ابزار read-only برای سنجش آمادگی ارتقا از v1.x به v2 هست
- بیشتر کنترلپلینهای v1.x بدون تغییر به v2 میرن؛ این دستور موارد breaking رو پیدا میکنه
- مهمترین تغییرها: حذف native patch-and-transform، حذف ControllerConfig و external secret stores، اجباری شدن package sourceهای qualified
- exit code و خروجی -o json اجازه میده تو CD pipeline بهعنوان readiness gate اتومات بشه
- فلگهای --skip-managed-resources و --concurrency بار روی API server رو کنترل میکنن
- این ابزار فقط تو CLI نسخهٔ v1.20 (پچ v1.20.9) هست، چون یه کنترلپلین v2 چیزی برای چک کردن نداره




