diff --git a/pkg/controlplane/apiserver/options/options.go b/pkg/controlplane/apiserver/options/options.go index e5c4daf376f..b53c8403cc6 100644 --- a/pkg/controlplane/apiserver/options/options.go +++ b/pkg/controlplane/apiserver/options/options.go @@ -112,7 +112,7 @@ func NewOptions() *Options { SecureServing: kubeoptions.NewSecureServingOptions(), Audit: genericoptions.NewAuditOptions(), Features: genericoptions.NewFeatureOptions(), - Admission: kubeoptions.NewAdmissionOptions(), + Admission: kubeoptions.NewAdmissionOptions().WithPlugins(kubeoptions.AdmissionPlugins), Authentication: kubeoptions.NewBuiltInAuthenticationOptions().WithAll(), Authorization: kubeoptions.NewBuiltInAuthorizationOptions(), APIEnablement: genericoptions.NewAPIEnablementOptions(), diff --git a/pkg/kubeapiserver/options/admission.go b/pkg/kubeapiserver/options/admission.go index c58c2e9080a..19668348acb 100644 --- a/pkg/kubeapiserver/options/admission.go +++ b/pkg/kubeapiserver/options/admission.go @@ -42,6 +42,17 @@ type AdmissionOptions struct { PluginNames []string } +var AdmissionPlugins map[string]func(*admission.Plugins) + +func (a *AdmissionOptions) WithPlugins(plugins map[string]func(*admission.Plugins)) *AdmissionOptions { + for pluginName, register := range plugins { + a.GenericAdmission.RecommendedPluginOrder = append(a.GenericAdmission.RecommendedPluginOrder, pluginName) + a.GenericAdmission.DefaultOffPlugins = a.GenericAdmission.DefaultOffPlugins.Insert(pluginName) + register(a.GenericAdmission.Plugins) + } + return a +} + // NewAdmissionOptions creates a new instance of AdmissionOptions // Note: //