به گزارش از وبسایت cncf

نسخه Kyverno 1.17 یک عرضه مهم است که تثبیت موتور سیاست‌گذاری نسل بعدی مبتنی بر Common Expression Language (CEL) را رقم می‌زند. 🚀

در حالی که نسخه 1.16 چشم‌انداز «CEL-first» را در حالت بتا معرفی کرد، 1.17 این امکانات را به سطح v1 ارتقاء می‌دهد و مسیر پر‌عملکرد و آینده‌پذیری برای policy as code فراهم می‌آورد.

تمرکز این انتشار بر «تکمیل چرخه» برای سیاست‌های CEL است: افزودن mutation و generation در سطح namespace، گسترش کتابخانه توابع برای منطق‌های پیچیده‌تر، و تقویت امنیت زنجیره تأمین با پشتیبانی آینده از Cosign v3.

یک ظاهر جدید برای kyverno.io ✨

اولین چیزی که در 1.17 متوجه خواهید شد، بازطراحی کامل وب‌سایت است. ما از یک سایت مستندات ساده عبور کرده و یک درگاه مدرن و با کارایی بالا برای platform engineers ساختیم.

صادقانه بگوییم: بازطراحی سایت kyverno دیر انجام شده بود. با رشد پروژه به استاندارد صنعتی برای unified policy as code، مستندات نیز باید این بلوغ را نشان دهد. با افتخار تجربه جدید در https://kyverno.io را معرفی می‌کنیم.

Modern redesign: سایت جدید که بر پایه Starlight framework ساخته شده، سریع‌تر، کاملاً responsive و دارای ظاهری مینیمال و حرفه‌ای است که خواندن متن‌های طولانی را آسان‌تر می‌کند.

Enhanced documentation structure: مستندات را از پایه بازسازمان‌دهی کرده‌ایم. اطلاعات اکنون بر اساس «User Journey» سطح‌بندی شده‌اند — از Quick Start ساده برای مبتدیان تا Reference عمیق برای نویسندگان پیشرفته سیاست.

Fully redesigned policy catalog: کتابخانه بیش از 300 نمونه policy اکنون با رابط جدید ارائه می‌شود. فیلترها و جستجوی جداگانه به شما امکان می‌دهد تا Policies را بر اساس Category (Best Practices, Security و غیره) یا Type (CEL vs. JMESPath) سریع پیدا کنید.

Enhanced search capabilities: موتور جستجوی هوشمندتری ادغام شده که مستندات و کدهای policy را فهرست می‌کند تا پاسخ درست را در اولین تلاش بیابید.

Brand new blog: بلاگ Kyverno بازطراحی شده تا عمیق‌ترهای فنی، مطالعات موردی جامعه و اعلان‌های انتشار مانند این مطلب را بهتر نمایش دهد.

Namespaced mutating and generating policies

در 1.16 ما انواع namespaced برای validation، cleanup و image verification را معرفی کردیم.

Kyverno 1.17 این مسیر را تکمیل می‌کند و موارد زیر را اضافه می‌کند:

NamespacedMutatingPolicy

NamespacedGeneratingPolicy

این امکان multi-tenancy واقعی را فراهم می‌آورد. مالکان namespace اکنون می‌توانند منطق mutation و generation خود (مثلاً تزریق خودکار sidecars یا ایجاد ConfigMap پیش‌فرض) را بدون نیاز به مجوزهای سراسری یا تأثیر روی دیگر tenants تعریف کنند.

CEL policy types به v1 (GA) ارتقاء یافتند

عنوان اصلی 1.17، ارتقاء انواع سیاست بر پایه CEL به v1 است. این بدان معنی است که API اکنون پایدار و مناسب محیط‌های production است.

این ارتقاء شامل موارد زیر می‌شود:

ValidatingPolicy و NamespacedValidatingPolicy

MutatingPolicy و NamespacedMutatingPolicy

GeneratingPolicy و NamespacedGeneratingPolicy

ImageValidatingPolicy و NamespacedImageValidatingPolicy

DeletingPolicy و NamespacedDeletingPolicy

PolicyException

با این ارتقاء، تیم‌های پلتفرم می‌توانند با اطمینان از JMESPath به CEL مهاجرت کنند تا از بهبود قابل توجه در عملکرد ارزیابی و هم‌راستایی بهتر با upstream Kubernetes ValidatingAdmissionPolicies / MutatingAdmissionPolicies بهره‌مند شوند.

قابلیت‌ها و توابع جدید CEL

برای اینکه سیاست‌های CEL توانایی‌های موتور اولیه Kyverno را داشته باشند، 1.17 چندین کتابخانه تابع جدید معرفی می‌کند:

Hash Functions: پشتیبانی داخلی از md5(value)، sha1(value) و sha256(value).

Math Functions: از math.round(value, precision) برای گرد کردن اعداد به دقت دلخواه استفاده کنید.

X509 Decoding: سیاست‌ها می‌توانند محتوای x509 certificates را مستقیماً داخل یک عبارت CEL با x509.decode(pem) بازرسی و اعتبارسنجی کنند.

Random String Generation: تولید رشته‌های تصادفی با random() (الگوی پیش‌فرض) یا random(pattern) برای الگوهای سفارشی مبتنی بر regex.

Transform Utilities: استفاده از listObjToMap(list1, list2, keyField, valueField) برای ادغام دو لیست شیء به یک map.

JSON Parsing: تبدیل رشته‌های JSON به داده ساختارمند با json.unmarshal(jsonString).

YAML Parsing: تبدیل رشته‌های YAML به داده ساختارمند با yaml.parse(yamlString).

Time-based Logic: توابع جدید time.now(), time.truncate(timestamp, duration), و time.toCron(timestamp) امکان سیاست‌های مبتنی بر زمان یا “maintenance window” را فراهم می‌کنند.

مرکزیت زدایی از APIهای قدیمی (deprecation)

با بلوغ Kyverno و همسویی بیشتر با استانداردهای upstream Kubernetes، تصمیم استراتژیک به سمت معماری CEL-first اتخاذ شده است. این بدان معناست که انواع قدیمی Policy و ClusterPolicy (که سال‌ها با JMESPath خدمت کرده‌اند) وارد مرحله sunset می‌شوند.

برنامه زمانی deprecation

Kyverno 1.17 رسماً ClusterPolicy و CleanupPolicy را Deprecated اعلام می‌کند. در حالی که این‌ها در این نسخه هنوز کار می‌کنند، زمان حذف آن‌ها شروع شده است تا راه برای موتورهای CEL با عملکرد بالاتر و استاندارد باز شود.

v1.17 — Jan 2026 — Marked for deprecation

v1.18 — Apr 2026 — Critical fixes only

v1.19 — Jul 2026 — Critical fixes only

v1.20 — Oct 2026 — Planned for removal

چرا این تغییر؟

با استانداردسازی بر Common Expression Language (CEL)، Kyverno به‌طور قابل توجهی عملکرد را بهبود می‌بخشد و با منطق اعتبارسنجی بومی مورد استفاده توسط Kubernetes API server هم‌راستا می‌شود.

برای تیم‌های پلتفرم، این به معنای یک زبان کمتر برای یادگیری و تجربه‌ای پیش‌بینی‌پذیرتر و مقیاس‌پذیرتر از policy-as-code است.

نکته برای نویسندگان

از این پس قویاً توصیه می‌کنیم هر policy جدیدی که می‌نویسید بر اساس CEL APIs جدید باشد. انتخاب APIهای legacy برای کار جدید فقط بار مهاجرت شما را در ادامه سال افزایش می‌دهد.

نکات مهاجرت

می‌دانیم بسیاری از شما صدها policy موجود دارید. برای تسهیل انتقال، منابع جامعی فراهم کرده‌ایم:

The Migration Guide: راهنمای Migration to CEL نقشه‌ای روبه‌رو (side-by-side) از فیلدهای legacy ClusterPolicy به معادل‌های جدید (مثلاً نگاشت validate.pattern به عبارت‌های ValidatingPolicy) ارائه می‌دهد.

New Policy Types: اکنون می‌توانید قوانین خود را به انواع تخصصی مانند ValidatingPolicy، MutatingPolicy و GeneratingPolicy منتقل کنید. جزئیات کامل این v1 APIs در Policy Types Overview آمده است.

تقویت امنیت زنجیره تأمین

امنیت زنجیره تأمین همچنان یکی از ستون‌های اصلی Kyverno است.

Cosign v3 Support: 1.17 پشتیبانی از ویژگی‌های جدید Cosign را اضافه می‌کند تا image verification با اکوسیستم Sigstore سازگار بماند. 🔒

Expanded Attestation Parsing: قابلیت‌های جدید برای deserialize کردن رشته‌های YAML و JSON درون سیاست‌های CEL، بررسی metadata پیچیده و SBOMها را ساده‌تر می‌کند.

ارتقاهای مانیتورینگ و گزارش‌دهی

نحوه گزارش‌دهی نتایج سیاست در Kyverno بهینه شده است:

Granular Reporting Control: فلگ جدید –allowedResults به شما امکان فیلتر کردن نتایج (مثلاً فقط “Fail”) برای ذخیره در گزارش‌ها را می‌دهد و فشار روی ETCD در کلاسترهای بزرگ را به‌طور قابل توجهی کاهش می‌دهد.

Enhanced Metrics: متریک‌های دقیق‌تری از latency و اجرای سیاست‌های CEL به‌صورت پیش‌فرض اضافه شده تا هزینه پنهان enforcement قابل رصد شدن باشد.

برای توسعه‌دهندگان و یکپارچه‌سازان

برای پشتیبانی از اکوسیستم گسترده‌تر و ساده‌تر کردن ساخت یکپارچه‌سازی‌ها، مؤلفه‌های اصلی را جدا کرده‌ایم:

New API Repository: APIهای مبتنی بر CEL اکنون در مخزن مجزا kyverno/api قرار دارند تا وارد کردن انواع Kyverno در پروژه‌های Go شما سبک‌تر شود.

Kyverno SDK: برای توسعه‌دهندگانی که کنترلرهای سفارشی یا ابزارهایی که با Kyverno تعامل دارند می‌سازند، پروژه SDK اکنون در kyverno/sdk قرار دارد.

شروع به کار و سازگاریِ عقب‌رو

ارتقا از 1.16 ساده است. اما از آنجا که انواع سیاست CEL به v1 منتقل شده‌اند، توصیه می‌کنیم manifests خود را به نسخه API جدید به‌روزرسانی کنید. Kyverno برای دورهٔ انتقال از v1beta1 پشتیبانی خواهد کرد.

helm repo update
helm upgrade --install kyverno kyverno/kyverno -n kyverno --version 3.7.0

چشم‌انداز: نقشه راه Kyverno

پس از عبور از نقطه عطف 1.17، تمرکز ما به پایداری بلندمدت و تجربه «Kyverno Platform» منتقل می‌شود. هدف ما این است که Kyverno همچنان کاربرپسندترین و با عملکردترین ابزار governance در اکوسیستم cloud-native باقی بماند.

افزایش حضور جامعه: تعهد ما به جامعه دوچندان می‌شود؛ انتظار جلسات بیشتر، بهبود onboarding مشارکت‌کنندگان و تمرکز مجدد روی ایجاد فضای خوش‌آمدگو در CNCF را داشته باشید.

تجربه یکپارچه ابزارها: هدف نقشه راه ما یکپارچه‌سازی زیرپروژه‌های قوی (CLI، Policy Reporter، Kyverno-Authz و غیره) به یک تجربه‌ متحد است تا fragmentation کاهش یابد و مدیریت lifecycle policy ساده‌تر شود.

خط‌مشی‌های عملکرد و مقیاس‌پذیری: با رشد کلاسترها، عملکرد حیاتی می‌شود. ما روی تست‌های خودکار عملکردی دقیق و ارائه متریک‌های بیشتر درباره throughput و latency تمرکز خواهیم کرد تا تیم‌های پلتفرم داده‌های لازم برای تصمیم‌گیری در محیط‌های production در مقیاس بالا را در اختیار داشته باشند.

بهبود مداوم UX: بازطراحی سایت فقط اولین گام بود. ما به تکرار روی رابط‌های کاربری، مستندات و پیام‌های خطا ادامه می‌دهیم تا Kyverno نه فقط در نام بلکه در عمل «ساده‌سازی‌شده» باقی بماند. 🙂

نتیجه‌گیری

Kyverno 1.17 محکم‌ترین نسخه تا امروز است که انعطاف‌پذیری موتور اصلی را با عملکرد و استانداردسازی CEL ترکیب می‌کند.

اما این انتشار فراتر از کد است — هدف بهبود تجربه کلی کاربر است. چه در حال مرور کاتالوگ جدید policy باشید و چه مقیاس‌دهی هزاران قانون مبتنی بر CEL، امیدواریم این نسخه تجربه کار با Kubernetes را برای شما ساده‌تر و قابل‌اطمینان‌تر کند. 🎯