From 639be9133fffdf63ade3836c60ff035572b582b2 Mon Sep 17 00:00:00 2001 From: yue9944882 <291271447@qq.com> Date: Wed, 21 Aug 2019 11:46:06 +0800 Subject: [PATCH] ensure flow-control api enabled --- .../src/k8s.io/apiserver/pkg/server/options/BUILD | 1 + .../pkg/server/options/api_enablement.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+) 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)