From a552d5eaa080ef48d2687169156e4993733dd87e Mon Sep 17 00:00:00 2001 From: galal-hussein Date: Sat, 14 Sep 2024 01:09:02 +0300 Subject: [PATCH] Add the ability to add extra admission plugins Signed-off-by: galal-hussein --- pkg/controlplane/apiserver/options/options.go | 2 +- pkg/kubeapiserver/options/admission.go | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/controlplane/apiserver/options/options.go b/pkg/controlplane/apiserver/options/options.go index f21faca2a27..9e16cc36966 100644 --- a/pkg/controlplane/apiserver/options/options.go +++ b/pkg/controlplane/apiserver/options/options.go @@ -105,7 +105,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: //