diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/BUILD b/staging/src/k8s.io/apiserver/pkg/server/options/BUILD index 61029e3ea5d..555cc37b308 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/options/BUILD +++ b/staging/src/k8s.io/apiserver/pkg/server/options/BUILD @@ -26,6 +26,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/flowcontrol/v1alpha1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/api_enablement.go b/staging/src/k8s.io/apiserver/pkg/server/options/api_enablement.go index 65f143bf0d7..177351bd6cd 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/options/api_enablement.go +++ b/staging/src/k8s.io/apiserver/pkg/server/options/api_enablement.go @@ -22,9 +22,12 @@ import ( "github.com/spf13/pflag" + flowcontrolv1alpha1 "k8s.io/api/flowcontrol/v1alpha1" + "k8s.io/apiserver/pkg/features" "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/resourceconfig" serverstore "k8s.io/apiserver/pkg/server/storage" + "k8s.io/apiserver/pkg/util/feature" cliflag "k8s.io/component-base/cli/flag" ) @@ -71,6 +74,18 @@ func (s *APIEnablementOptions) Validate(registries ...GroupRegisty) []error { return append(errors, err) } + if feature.DefaultFeatureGate.Enabled(features.RequestManagement) { + flowcontrolRegistered := false + for _, g := range groups { + if g == flowcontrolv1alpha1.SchemeGroupVersion.Group { + flowcontrolRegistered = true + } + } + if !flowcontrolRegistered { + return append(errors, fmt.Errorf("flowcontrol.apiserver.k8s.io has to be enabled with RequestManagement feature gate on")) + } + } + for _, registry := range registries { // filter out known groups groups = unknownGroups(groups, registry)