Admission Plugins Configuration
This page explains how to configure Admission Controllers in the Kubermatic Kubernetes Platform.
Default Admission Controllers
The Kubermatic Kubernetes Platform manages the Kubernetes API server by setting the
enable-admission-plugins flag with a comma-delimited
list of admission control plugins to be enabled during cluster creation.
In the current version, the default ones are:
Supported Additional Admission Plugins
The Kubermatic Kubernetes Platform also provides support for three additional plugins that can be enabled if needed:
PodSecurityPolicy (not supported anymore on Kubernetes 1.25 or higher)
They can be selected in the UI wizard.
PodNodeSelector plugin expands an additional view for the plugin-specific configuration.
In this view you can define selector for namespaces that have no label selector specified. This example defines the default
NodeSelector for the cluster, as well as whitelist for each namespace.
Every pod created in the
production namespace will be injected the NodeSelector
Every pod in the
development namespace will inherit the
clusterDefaultNodeSelector, in this case
EventRateLimit is an admission plugin that sets up limits for
Events being published to the Kubernetes API. KKP supports setting up limits on a per-namespace basis so no namespace can overwhelm the Kubernetes API with a high number of events.
EventRateLimit plugin expands an additional view for the plugin-specific configuration.
The available fields for the configuration are:
- QPS: The allowed “queries per second”. This determines whether an incoming
Event request is allowed or not for the respective bucket (in this case, buckets are created per namespace) within one second if the burst budget is exhausted. Unused QPS are added to the burst budget. Defaults to
- Burst: The maximum allowed events created within a second. Once the burst budget is exhausted, the QPS determine whether an
Event is accepted or not. Each second, the unused QPS are added back to the budget, up to the limit set by this field. Defaults to
- Cache Size: The number of buckets that are stored in an LRU cache. If a bucket is removed from the cache because it is not used for any request, the next request for it will reset the bucket’s burst budget and add it back to the LRU cache. Defaults to
Custom Admission Plugins
In addition to the admission plugins enabled by default or enabled as a managed KKP feature, KKP supports adding a list of admission plugins through the KKP API. This is limited to admission plugins that do not need additional configuration files or flags passed to the Kubernetes API server, for example
SecurityContextDeny (which is recommended if there is no security policy enforcement (PSPs or OPA Gatekeeper) in the cluster).
Custom admission plugins cannot be validated by KKP and there is a risk of unintended consequences when enabling some admission plugins. Make sure you test and validate your list of admission plugins on test user clusters before enabling them on production environments.
This can achieved by setting or updating the field
spec.admissionPlugins in the API for cluster resources. This field is a list, so it would look something like this: