Skip to content

Commit 701e5fc

Browse files
Add composition flags for emulation version and feature gate.
Signed-off-by: Siyuan Zhang <[email protected]>
1 parent 403301b commit 701e5fc

File tree

26 files changed

+521
-145
lines changed

26 files changed

+521
-145
lines changed

cmd/kube-apiserver/app/options/options_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/spf13/pflag"
2828
noopoteltrace "go.opentelemetry.io/otel/trace/noop"
2929

30+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3031
"k8s.io/apiserver/pkg/admission"
3132
apiserveroptions "k8s.io/apiserver/pkg/server/options"
3233
"k8s.io/apiserver/pkg/storage/etcd3"
@@ -50,13 +51,14 @@ func TestAddFlags(t *testing.T) {
5051
fs := pflag.NewFlagSet("addflagstest", pflag.PanicOnError)
5152

5253
featureGate := featuregate.NewFeatureGate()
54+
componentRegistry := utilversion.NewComponentGlobalsRegistry()
5355
effectiveVersion := utilversion.NewEffectiveVersion("1.32")
56+
_ = componentRegistry.Register("test", effectiveVersion, featureGate, true)
5457
s := NewServerRunOptions(featureGate, effectiveVersion)
5558
for _, f := range s.Flags().FlagSets {
5659
fs.AddFlagSet(f)
5760
}
58-
featureGate.AddFlag(fs, "")
59-
effectiveVersion.AddFlags(fs, "")
61+
componentRegistry.AddFlags(fs)
6062

6163
args := []string{
6264
"--enable-admission-plugins=AlwaysDeny",
@@ -128,9 +130,10 @@ func TestAddFlags(t *testing.T) {
128130
"--storage-backend=etcd3",
129131
"--service-cluster-ip-range=192.168.128.0/17",
130132
"--lease-reuse-duration-seconds=100",
131-
"--emulated-version=1.31",
133+
"--emulated-version=test=1.31",
132134
}
133135
fs.Parse(args)
136+
utilruntime.Must(componentRegistry.Set())
134137

135138
// This is a snapshot of expected options parsed by args.
136139
expected := &ServerRunOptions{

cmd/kube-apiserver/app/server.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func init() {
6565
// NewAPIServerCommand creates a *cobra.Command object with default parameters
6666
func NewAPIServerCommand() *cobra.Command {
6767
effectiveVersion, featureGate := utilversion.DefaultComponentGlobalsRegistry.ComponentGlobalsOrRegister(
68-
utilversion.ComponentGenericAPIServer, utilversion.DefaultBuildEffectiveVersion(), utilfeature.DefaultMutableFeatureGate)
68+
utilversion.DefaultKubeComponent, utilversion.DefaultBuildEffectiveVersion(), utilfeature.DefaultMutableFeatureGate)
6969
s := options.NewServerRunOptions(featureGate, effectiveVersion)
7070

7171
cmd := &cobra.Command{
@@ -78,6 +78,9 @@ cluster's shared state through which all other components interact.`,
7878
// stop printing usage when the command errors
7979
SilenceUsage: true,
8080
PersistentPreRunE: func(*cobra.Command, []string) error {
81+
if err := utilversion.DefaultComponentGlobalsRegistry.Set(); err != nil {
82+
return err
83+
}
8184
// silence client-go warnings.
8285
// kube-apiserver loopback clients should not log self-issued warnings.
8386
rest.SetDefaultWarningHandler(rest.NoWarnings{})
@@ -86,11 +89,6 @@ cluster's shared state through which all other components interact.`,
8689
RunE: func(cmd *cobra.Command, args []string) error {
8790
verflag.PrintAndExitIfRequested()
8891
fs := cmd.Flags()
89-
90-
if err := utilversion.DefaultComponentGlobalsRegistry.SetAllComponents(); err != nil {
91-
return err
92-
}
93-
9492
// Activate logging as soon as possible, after that
9593
// show flags with the final logging configuration.
9694
if err := logsapi.ValidateAndApply(s.Logs, featureGate); err != nil {
@@ -126,8 +124,7 @@ cluster's shared state through which all other components interact.`,
126124
fs := cmd.Flags()
127125
namedFlagSets := s.Flags()
128126
verflag.AddFlags(namedFlagSets.FlagSet("global"))
129-
featureGate.AddFlag(namedFlagSets.FlagSet("global"), "")
130-
effectiveVersion.AddFlags(namedFlagSets.FlagSet("global"), "")
127+
utilversion.DefaultComponentGlobalsRegistry.AddFlags(namedFlagSets.FlagSet("global"))
131128

132129
globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name(), logs.SkipLoggingConfigurationFlags())
133130
options.AddCustomGlobalFlags(namedFlagSets.FlagSet("generic"))

cmd/kube-apiserver/app/testing/testserver.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,15 +187,14 @@ func StartTestServer(t ktesting.TB, instanceOptions *TestServerInstanceOptions,
187187
binaryVersion = instanceOptions.BinaryVersion
188188
}
189189
effectiveVersion := utilversion.NewEffectiveVersion(binaryVersion)
190-
_ = utilversion.DefaultComponentGlobalsRegistry.Register(utilversion.ComponentGenericAPIServer, effectiveVersion, featureGate, true)
190+
_ = utilversion.DefaultComponentGlobalsRegistry.Register(utilversion.DefaultKubeComponent, effectiveVersion, featureGate, true)
191191

192192
s := options.NewServerRunOptions(featureGate, effectiveVersion)
193193

194194
for _, f := range s.Flags().FlagSets {
195195
fs.AddFlagSet(f)
196196
}
197-
featureGate.AddFlag(fs, "")
198-
effectiveVersion.AddFlags(fs, "")
197+
utilversion.DefaultComponentGlobalsRegistry.AddFlags(fs)
199198

200199
s.SecureServing.Listener, s.SecureServing.BindPort, err = createLocalhostListenerOnFreePort()
201200
if err != nil {
@@ -336,7 +335,7 @@ func StartTestServer(t ktesting.TB, instanceOptions *TestServerInstanceOptions,
336335
return result, err
337336
}
338337

339-
if err := utilversion.DefaultComponentGlobalsRegistry.SetAllComponents(); err != nil {
338+
if err := utilversion.DefaultComponentGlobalsRegistry.Set(); err != nil {
340339
return result, err
341340
}
342341

cmd/kube-controller-manager/app/options/options.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ func (s *KubeControllerManagerOptions) Flags(allControllers []string, disabledBy
273273
fs := fss.FlagSet("misc")
274274
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig).")
275275
fs.StringVar(&s.Generic.ClientConnection.Kubeconfig, "kubeconfig", s.Generic.ClientConnection.Kubeconfig, "Path to kubeconfig file with authorization and master location information (the master location can be overridden by the master flag).")
276-
utilfeature.DefaultMutableFeatureGate.AddFlag(fss.FlagSet("generic"), "")
276+
utilfeature.DefaultMutableFeatureGate.AddFlag(fss.FlagSet("generic"))
277277

278278
return fss
279279
}

cmd/kube-scheduler/app/options/options.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ func (o *Options) initFlags() {
189189
o.Authorization.AddFlags(nfs.FlagSet("authorization"))
190190
o.Deprecated.AddFlags(nfs.FlagSet("deprecated"))
191191
options.BindLeaderElectionFlags(o.LeaderElection, nfs.FlagSet("leader election"))
192-
utilfeature.DefaultMutableFeatureGate.AddFlag(nfs.FlagSet("feature gate"), "")
192+
utilfeature.DefaultMutableFeatureGate.AddFlag(nfs.FlagSet("feature gate"))
193193
o.Metrics.AddFlags(nfs.FlagSet("metrics"))
194194
logsapi.AddFlags(o.Logs, nfs.FlagSet("logs"))
195195

pkg/controlplane/apiserver/options/options_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/spf13/pflag"
2727
noopoteltrace "go.opentelemetry.io/otel/trace/noop"
2828

29+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2930
"k8s.io/apiserver/pkg/admission"
3031
apiserveroptions "k8s.io/apiserver/pkg/server/options"
3132
"k8s.io/apiserver/pkg/storage/etcd3"
@@ -46,14 +47,15 @@ func TestAddFlags(t *testing.T) {
4647
fs := pflag.NewFlagSet("addflagstest", pflag.PanicOnError)
4748
featureGate := featuregate.NewFeatureGate()
4849
effectiveVersion := utilversion.NewEffectiveVersion("1.32")
50+
componentRegistry := utilversion.NewComponentGlobalsRegistry()
51+
_ = componentRegistry.Register("test", effectiveVersion, featureGate, true)
4952
s := NewOptions(featureGate, effectiveVersion)
5053
var fss cliflag.NamedFlagSets
5154
s.AddFlags(&fss)
5255
for _, f := range fss.FlagSets {
5356
fs.AddFlagSet(f)
5457
}
55-
featureGate.AddFlag(fs, "")
56-
effectiveVersion.AddFlags(fs, "")
58+
componentRegistry.AddFlags(fs)
5759

5860
args := []string{
5961
"--enable-admission-plugins=AlwaysDeny",
@@ -114,9 +116,10 @@ func TestAddFlags(t *testing.T) {
114116
"--request-timeout=2m",
115117
"--storage-backend=etcd3",
116118
"--lease-reuse-duration-seconds=100",
117-
"--emulated-version=1.31",
119+
"--emulated-version=test=1.31",
118120
}
119121
fs.Parse(args)
122+
utilruntime.Must(componentRegistry.Set())
120123

121124
// This is a snapshot of expected options parsed by args.
122125
expected := &Options{

staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/server.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,16 @@ func NewServerCommand(ctx context.Context, out, errOut io.Writer) *cobra.Command
3333
// You can also have the flag setting the effectiveVersion of the apiextensions apiserver, and
3434
// having a mapping from the apiextensions apiserver version to generic apiserver version.
3535
effectiveVersion, featureGate := utilversion.DefaultComponentGlobalsRegistry.ComponentGlobalsOrRegister(
36-
utilversion.ComponentGenericAPIServer, utilversion.DefaultKubeEffectiveVersion(), utilfeature.DefaultMutableFeatureGate)
36+
utilversion.DefaultKubeComponent, utilversion.DefaultKubeEffectiveVersion(), utilfeature.DefaultMutableFeatureGate)
3737
o := options.NewCustomResourceDefinitionsServerOptions(out, errOut, featureGate, effectiveVersion)
3838

3939
cmd := &cobra.Command{
4040
Short: "Launch an API extensions API server",
4141
Long: "Launch an API extensions API server",
42+
PersistentPreRunE: func(*cobra.Command, []string) error {
43+
return utilversion.DefaultComponentGlobalsRegistry.Set()
44+
},
4245
RunE: func(c *cobra.Command, args []string) error {
43-
if err := utilversion.DefaultComponentGlobalsRegistry.SetAllComponents(); err != nil {
44-
return err
45-
}
46-
4746
if err := o.Complete(); err != nil {
4847
return err
4948
}
@@ -59,8 +58,7 @@ func NewServerCommand(ctx context.Context, out, errOut io.Writer) *cobra.Command
5958
cmd.SetContext(ctx)
6059

6160
fs := cmd.Flags()
62-
featureGate.AddFlag(fs, "")
63-
effectiveVersion.AddFlags(fs, "")
61+
utilversion.DefaultComponentGlobalsRegistry.AddFlags(fs)
6462
o.AddFlags(fs)
6563
return cmd
6664
}

staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,10 @@ func StartTestServer(t Logger, _ *TestServerInstanceOptions, customFlags []strin
124124

125125
featureGate := utilfeature.DefaultMutableFeatureGate
126126
effectiveVersion := utilversion.DefaultKubeEffectiveVersion()
127-
_ = utilversion.DefaultComponentGlobalsRegistry.Register(utilversion.ComponentGenericAPIServer, effectiveVersion, featureGate, true)
127+
_ = utilversion.DefaultComponentGlobalsRegistry.Register(utilversion.DefaultKubeComponent, effectiveVersion, featureGate, true)
128128
s := options.NewCustomResourceDefinitionsServerOptions(os.Stdout, os.Stderr, featureGate, effectiveVersion)
129129

130-
featureGate.AddFlag(fs, "")
131-
effectiveVersion.AddFlags(fs, "")
130+
utilversion.DefaultComponentGlobalsRegistry.AddFlags(fs)
132131
s.AddFlags(fs)
133132

134133
s.RecommendedOptions.SecureServing.Listener, s.RecommendedOptions.SecureServing.BindPort, err = createLocalhostListenerOnFreePort()
@@ -151,7 +150,7 @@ func StartTestServer(t Logger, _ *TestServerInstanceOptions, customFlags []strin
151150

152151
fs.Parse(customFlags)
153152

154-
if err := utilversion.DefaultComponentGlobalsRegistry.SetAllComponents(); err != nil {
153+
if err := utilversion.DefaultComponentGlobalsRegistry.Set(); err != nil {
155154
return result, err
156155
}
157156

staging/src/k8s.io/apiserver/pkg/cel/environment/base.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import (
4646
// A default version number equal to the current Kubernetes major.minor version
4747
// indicates fast forward CEL features that can be used when rollback is no longer needed.
4848
func DefaultCompatibilityVersion() *version.Version {
49-
effectiveVer := utilversion.DefaultComponentGlobalsRegistry.EffectiveVersionFor(utilversion.ComponentGenericAPIServer)
49+
effectiveVer := utilversion.DefaultComponentGlobalsRegistry.EffectiveVersionFor(utilversion.DefaultKubeComponent)
5050
if effectiveVer == nil {
5151
effectiveVer = utilversion.DefaultKubeEffectiveVersion()
5252
}

0 commit comments

Comments
 (0)