zeedumper: پیکربندی واقعی کلاستر کوبرنتیز رو نشونت میده
خلاصهٔ کاملتر
raesene ابزاری به اسم zeedumper منتشر کرده که با kubeconfig خودت به کلاستر وصل میشه و صفحههای تشخیصی معروف به z-pages — یعنی flagz (فلگهای اجرایی)، statusz (وضعیت) و configz (پیکربندی در حال اجرا) — رو از اجزای اصلی کوبرنتیز بیرون میکشه. تو مستندات پروژه اومده که ابزار کاملاً فقطخواندنیـه و چیزی رو تو کلاستر عوض نمیکنه، و خروجی رو به سه شکل متن، JSON یا یه صفحهٔ HTML مستقل میده.
جالبترین بخش ماجرا configz ـه. این endpoint پیکربندی در حال اجرا رو به شکل JSON برمیگردونه، ولی سریالسازی Go با omitempty هر فیلدی رو که مقدارش صفرِ زبونه (false، 0، رشتهٔ خالی) بیسروصدا میندازه دور. به گفتهٔ نویسنده برای kubelet این یعنی ۴۶ فیلد از ۱۲۵ فیلد اصلاً دیده نمیشه — از جمله تنظیمات امنیتی مثل readOnlyPort: 0، protectKernelDefaults: false و serverTLSBootstrap: false.
zeedumper نسخهٔ کوبرنتیز رو تشخیص میده و همین فیلدهای غایب رو با پیشفرض شناختهشدهشون پر میکنه تا پیکربندی مؤثرِ کامل رو ببینی؛ تو خروجی HTML هم فیلدهای پرشده با حالت ایتالیک و برچسب «(default)» از مقادیر واقعیِ endpoint جدا میشن. فعلاً این قابلیت فقط برای kubelet و kube-proxy روی کوبرنتیز v1.36 کار میکنه و برای بقیه، configz همونطور که هست نشون داده میشه.
یه مانع دیگه هم هست: kube-controller-manager، kube-scheduler و kube-proxy پورت سرویسشون رو فقط روی 127.0.0.1 باز میکنن، پس از راه پروکسی API server در دسترس نیستن. برای اینا zeedumper موقتاً یه ServiceAccount و نقشهای لازم میسازه و یه پاد کوتاهعمر با host-network روی نودها اجرا میکنه که همون endpointهای لوپبک رو میخونه، بعد همهٔ این منابع رو — حتی وقتی اجرا با خطا یا وقفه تموم بشه — پاک میکنه.
قبل از ساختن هر RBACـی یه بررسی pre-pull انجام میشه تا اگه ایمیج ایجنت قابل دریافت نیست، همون اول با دلیل واقعی شکست بخوره و هیچ نقشی ساخته نشه. اگه اصلاً نمیخوای ابزار چیزی تو کلاستر بسازه، --no-node-pods این استراتژی رو خاموش میکنه. ضمناً flagz و statusz endpointهای تازه و feature-gated (KEP-4827) هستن، پس ممکنه روی بعضی کلاسترها خاموش باشن و اون صفحه با خطا گزارش بشه.
نکات کلیدی:
- جمعآوری flagz، statusz و configz از apiserver، controller-manager، scheduler، kube-proxy و kubelet با خروجی متن/JSON/HTML
- پر کردن خودکار فیلدهایی که omitempty حذفشون کرده؛ برای kubelet ۴۶ فیلد از ۱۲۵ تا، شامل تنظیمات امنیتی
- پشتیبانی فعلی defaults-filling فقط برای kubelet و kube-proxy روی v1.36
- پادهای موقت host-network برای اجزای لوپبک، با پاکسازی کامل منابع و امکان خاموش کردن با --no-node-pods




