Kubewarden 1.11 release
Author:
Published:
Updated:
Today we’re glad to announce the release of Kubewarden 1.11.
This release focuses on performance improvements, especially when running on big Kubernetes clusters.
Audit Scanner
A lot of work has been done on the audit scanner. The auditing of resources is now done in parallel, which means less time is required on big clusters to scan all the available resources.
We’ve also changed how we handle Policy Reports. Kubewarden is still using the Policy Report format being defined inside the Kubernetes’s wg-policy
group. However, prior to this release,
we used to create one PolicyReport
per Namespace
and one ClusterPolicyReport
per cluster.
This solution proved to not scale inside clusters with many audited resources. Depending on the number of policies and audited resources, the size of the final report objects could be too big to fit into etcd.
Moreover, the amount of memory required by the audit scanner could be significant.
That’s why, starting from Kubewarden 1.11, the audit scanner creates one PolicyReport
per namespaced resource and one ClusterPolicyReport
per cluster-wide resource being scanned.
That ensures the reports can always fit etcd’s size requirement. On top of that, now the audit scanner process always consumes the same amount of memory, regardless of the number of
policies and resources being audited.
Getting the auditing results of the resources defined inside a namespace can be done in this way:
kubectl get polr -o wide
NAME KIND NAME PASS FAIL WARN ERROR SKIP AGE
009805e4-6e16-4b70-80c9-cb33b6734c82 Deployment deployment1 5 1 0 0 0 1h
011e8ca7-40d5-4e76-8c89-6f820e24f895 Deployment deployment2 2 4 0 0 0 1h
02c28ab7-e332-47a2-9cc2-fe0fad5cd9ad Pod pod1 10 0 0 0 0 1h
04937b2b-e68b-47d5-909d-d0ae75527f07 Pod pod2 9 1 0 0 0 1h
...
While the auditing results of cluster-wide resources can be obtained in this way:
kubectl get cpolr -o wide
NAME KIND NAME PASS FAIL WARN ERROR SKIP AGE
261c9492-deec-4a09-8aa9-cd464bb4b8d1 Namespace namespace1 3 1 0 0 0 1h
35ca342f-685b-4162-a342-8d7a52a61749 Namespace namespace2 0 4 0 0 0 1h
3a8f8a88-338b-4905-b9e4-f13397a0d7b5 Namespace namespace3 4 0 0 0 0 15h
Take a look at the official documentation to learn more about policy reports.
New host capability available
Kubewarden provides a set of host capabilities that allow policy authors to access external data during policy evaluation.
Kubewarden 1.11 expands the operations that can be done against a container registry by making it possible to fetch OCI manifests. This addition was requested by our community as a way to write policies that make use of the platform and architecture information found inside the OCI manifest to make mutations.
The Kubewarden SDKs have been updated to expose this new functionality. We will also publish a dedicated blog post explaining what policy authors can achieve with this new capability.
Context aware policies optimization
As part of our host capabilities, Kubewarden provides a way to query the Kubernetes API server. This is used to create context aware policies. These are policies that use information about the state of Kubernetes cluster to make validating/mutating decisions.
Starting from the 1.11 release, Kubewarden uses a different way to fetch information from the Kubernetes API server and keep this data up to date. That brings two major improvements. Firstly, the load on the Kubernetes API server is reduced. Secondly, the information shared with the policies is significantly fresher than before. That means changes done inside Kubernetes are propagated faster to the policies.
Reduce latency of policies that make use of host capabilities
Thanks to a report coming from our community, we learnt that policies making use of host capabilities had too much latency when ran on big clusters.
We started an investigation that led to several performance improvements that are now part of the Kubewarden 1.11 release.
Traditional Kubernetes policies (the ones written using Rust and Go) got a 81% performance boost. Rego policies got a 27% performance improvement. We also have more optimization for Gatekeeper policies inside of our future pipeline, these changes will bring an extra 55% boost.
Known bugs
Since the TUF spec v1.0.32 (released 2023-03-02), there is an incomaptibility
when defining ECDSA keys. This means that signature verification in kwctl
and
policy-server
will fail-closed, meaning that even if images are correctly
signed, Kubewarden will fail the image verification and report “Image
verification failed: missing signatures”.
The change done inside of Sigstore’s TUF repository broke the sigstore-rs
rust library used by Kubewarden, causing also previous versions of Kubewarden to exhibit this behavior.
The issue is currently being worked upstream, we will issue patch releases as soon as possible.
Stay tuned!
As always, we are curious about what features you would like next and how you are enjoying Kubewarden. Reach out on Slack or join our monthly community meeting to talk Kubewarden!