اگر می‌خواهید Knative را بهتر و شفاف‌تر ببینید، افزونه جدید Headlamp برای این کار طراحی شده است 👀

Headlamp یک پروژه متن‌باز و قابل توسعه در اکوسیستم Kubernetes است که کمک می‌کند منابع خوشه را راحت‌تر بررسی، مدیریت و عیب‌یابی کنید. از طرف دیگر، Knative بارهای کاری serverless را به Kubernetes می‌آورد و کارهایی مثل routing ترافیک، auto-scaling و مدیریت revisionها را بر عهده می‌گیرد تا تیم‌ها بتوانند زیرساخت را سریع‌تر و با دردسر کمتر deploy و iterate کنند.

با این حال، کار روزمره با workloadهای Knative همیشه ساده نیست. هنوز هم بین kn CLI، kubectl و رابط کاربری Kubernetes فاصله‌ای وجود دارد که باعث می‌شود دید کامل و یکپارچه‌ای از وضعیت سرویس‌ها نداشته باشید. افزونه Headlamp Knative دقیقا برای پر کردن همین شکاف ساخته شده است تا operatorها بتوانند workloadهای خود را بررسی کنند، بهتر بفهمند و سریع‌تر روی آن‌ها اقدام کنند. این افزونه در قالب بخشی از LFX mentoring توسعه داده شده است 🚀

در ادامه، نگاهی کاربردی به قابلیت‌های این افزونه داریم.

یکی از مهم‌ترین بخش‌ها، ادغام منابع Knative با resource map در Headlamp است. این بخش برای Knative CRDها هم کار می‌کند و اجازه می‌دهد ارتباط بین KService، Revision و DomainMapping را در قالب یک نمودار واضح ببینید. برای تیم‌های devops – sre این نمای بصری خیلی مهم است، چون وابستگی‌ها و مسیر جریان ترافیک را سریع‌تر روشن می‌کند.

KService در Knative منبع سطح‌بالا محسوب می‌شود و چرخه عمر route، configuration و revision را مدیریت می‌کند. در صفحه جزئیات این منبع، یک حالت edit هم وجود دارد که به شما اجازه می‌دهد تغییرات زنده روی traffic split، auto-scaling annotations و موارد مشابه انجام دهید. علاوه بر این، کارهای رایجی مثل مشاهده YAML، باز کردن logs، restart و حتی restart کردن پادهای backend هم از همان‌جا در دسترس هستند؛ البته همه چیز طبق RBAC فعلی شما محدود می‌شود 🔐

بخش traffic split هم برای سناریوهایی مثل canary release، rollout تدریجی، preview URLهای برچسب‌دار و A/B testing خیلی مفید است. این افزونه نشان می‌دهد هر revision چه مقدار ترافیک گرفته، آخرین revision آماده کدام است، وضعیت readiness چیست، چه سنی دارد و چه labelهایی روی آن تنظیم شده‌اند. در حالت ویرایش هم می‌توانید درصدها و labelها را مستقیم تغییر دهید. افزونه همچنین بررسی می‌کند مجموع ترافیک دقیقا به 100٪ برسد و labelها قبل از ذخیره‌سازی تکراری نباشند. مسیرهای برچسب‌دار هم با URL ثبت‌شده به صورت لینک قابل کلیک نمایش داده می‌شوند.

در بخش auto-scaling هم افزونه خیلی مفید عمل می‌کند. Knative autoscaler از تنظیمات مختلفی مثل concurrency target، target utilization، RPS target، حداقل و حداکثر scale، initial scale، stable window، scale-down delay و موارد دیگر پشتیبانی می‌کند. مقدار واقعی هر workload از ترکیب annotationهای سطح KService و ConfigMapهای سراسری cluster به دست می‌آید. افزونه هم تنظیمات autoscaling و هم defaultهای cluster را می‌خواند و config مؤثر را در همان context هر KService نمایش می‌دهد تا خیلی سریع بفهمید یک مقدار صراحتا تنظیم شده یا از مقدار پیش‌فرض آمده است 📊

اگر این افزونه را با افزونه Prometheus برای Headlamp ترکیب کنید، نمودارهای نرخ درخواست، latency و resource usage را هم در صفحه جزئیات KService و Revision می‌بینید. نمایش نرخ درخواست به تفکیک revision، به‌خصوص وقتی می‌خواهید rollout یا تقسیم ترافیک را بررسی کنید، بسیار کاربردی است.

این افزونه فقط به KService محدود نمی‌شود. برای Revision، DomainMappings، ClusterDomainClaims و حتی یک نمای کلی شبکه در سطح cluster هم صفحه‌های فهرست و جزئیات دارد. در نمای شبکه، پیکربندی network و تنظیمات مؤثر کلاس‌ها خوانده می‌شود و سرویس‌های gateway مرتبط هم نشان داده می‌شوند. نتیجه این است که اپراتور بدون خروج از Headlamp، یک تصویر کامل‌تر و عملی‌تر از وضعیت Knative دارد 🧭

برای نصب افزونه Knative در Headlamp کافی است مطمئن شوید Knative روی cluster شما نصب شده باشد. سپس در Headlamp Desktop، کاتالوگ افزونه‌ها را باز کنید، Knative را جستجو کنید و روی Install بزنید. بعد از reload کردن Headlamp، یک گزینه جدید Knative در نوار کناری ظاهر می‌شود. اگر قصد توسعه یا تنظیم سطح منبع را دارید، README افزونه راهنمای خوبی برای شروع است.

نسخه فعلی این افزونه 0.3.0-beta است. اگر آن را امتحان کردید و بازخوردی داشتید، تیم توسعه از شنیدن تجربه شما استقبال می‌کند. اگر با مشکلی روبه‌رو شدید یا دوست دارید قابلیت خاصی برای workflow شما اضافه شود، ثبت issue بهترین راه است. همچنین می‌توانید در کانال #هدللامپ در Kubernetes Slack هم آن‌ها را پیدا کنید 💬