diff --git a/cmd/kube-apiserver/app/options/validation.go b/cmd/kube-apiserver/app/options/validation.go index fb937bdf7db..481552d3b29 100644 --- a/cmd/kube-apiserver/app/options/validation.go +++ b/cmd/kube-apiserver/app/options/validation.go @@ -66,6 +66,9 @@ func (options *ServerRunOptions) Validate() []error { if errs := options.Audit.Validate(); len(errs) > 0 { errors = append(errors, errs...) } + if errs := options.Admission.Validate(); len(errs) > 0 { + errors = append(errors, errs...) + } if errs := options.InsecureServing.Validate("insecure-port"); len(errs) > 0 { errors = append(errors, errs...) } diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/admission.go b/staging/src/k8s.io/apiserver/pkg/server/options/admission.go index 6232567f7a4..9466254b4d6 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/options/admission.go +++ b/staging/src/k8s.io/apiserver/pkg/server/options/admission.go @@ -22,6 +22,7 @@ import ( "github.com/spf13/pflag" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/admission" "k8s.io/apiserver/pkg/admission/initializer" admissionmetrics "k8s.io/apiserver/pkg/admission/metrics" @@ -129,7 +130,19 @@ func (a *AdmissionOptions) ApplyTo( } func (a *AdmissionOptions) Validate() []error { + if a == nil { + return nil + } + errs := []error{} + + registeredPlugins := sets.NewString(a.Plugins.Registered()...) + for _, name := range a.PluginNames { + if !registeredPlugins.Has(name) { + errs = append(errs, fmt.Errorf("admission-control plugin %q is invalid", name)) + } + } + return errs }