Merge pull request #109072 from jiahuif-forks/feature/leader-migration/to-ga

Graduate Leader Migration to GA
This commit is contained in:
Kubernetes Prow Robot 2022-03-30 10:58:24 -07:00 committed by GitHub
commit d4ac0ebecb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 40 deletions

View File

@ -770,6 +770,7 @@ const (
// owner: @jiahuif
// alpha: v1.21
// beta: v1.22
// GA: v1.24
//
// Enables Leader Migration for kube-controller-manager and cloud-controller-manager
ControllerManagerLeaderMigration featuregate.Feature = "ControllerManagerLeaderMigration"
@ -993,7 +994,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
KubeletInUserNamespace: {Default: false, PreRelease: featuregate.Alpha},
MemoryQoS: {Default: false, PreRelease: featuregate.Alpha},
CPUManagerPolicyOptions: {Default: true, PreRelease: featuregate.Beta},
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.Beta},
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.26
CPUManagerPolicyAlphaOptions: {Default: false, PreRelease: featuregate.Alpha},
CPUManagerPolicyBetaOptions: {Default: true, PreRelease: featuregate.Beta},
JobMutableNodeSchedulingDirectives: {Default: true, PreRelease: featuregate.Beta},

View File

@ -37,6 +37,7 @@ const (
// owner: @jiahuif
// alpha: v1.21
// beta: v1.22
// GA: v1.24
//
// Enables Leader Migration for kube-controller-manager and cloud-controller-manager
// copied and sync'ed from k8s.io/kubernetes/pkg/features/kube_features.go
@ -51,5 +52,5 @@ func SetupCurrentKubernetesSpecificFeatureGates(featuregates featuregate.Mutable
// To add a new feature, define a key for it at k8s.io/api/pkg/features and add it here.
var cloudPublicFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
IPv6DualStack: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.Beta},
ControllerManagerLeaderMigration: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.26
}

View File

@ -23,49 +23,30 @@ import (
"testing"
"github.com/spf13/pflag"
utilfeature "k8s.io/apiserver/pkg/util/feature"
featuregatetesting "k8s.io/component-base/featuregate/testing"
"k8s.io/controller-manager/config"
"k8s.io/controller-manager/pkg/features"
migrationconfig "k8s.io/controller-manager/pkg/leadermigration/config"
)
func TestLeaderMigrationOptions(t *testing.T) {
testCases := []struct {
name string
flags []string
configContent string
expectEnabled bool
expectErr bool
enableFeatureGate bool
expectConfig *config.LeaderMigrationConfiguration
name string
flags []string
configContent string
expectEnabled bool
expectErr bool
expectConfig *config.LeaderMigrationConfiguration
}{
{
name: "default (disabled), with feature gate disabled",
flags: []string{},
enableFeatureGate: false,
expectEnabled: false,
expectErr: false,
name: "enabled, with default configuration",
flags: []string{"--enable-leader-migration"},
expectEnabled: true,
expectErr: false,
expectConfig: migrationconfig.DefaultLeaderMigrationConfiguration(),
},
{
name: "enabled, with feature gate disabled",
flags: []string{"--enable-leader-migration"},
enableFeatureGate: false,
expectErr: true,
},
{
name: "enabled, with default configuration",
flags: []string{"--enable-leader-migration"},
enableFeatureGate: true,
expectEnabled: true,
expectErr: false,
expectConfig: migrationconfig.DefaultLeaderMigrationConfiguration(),
},
{
name: "enabled, with custom configuration file",
flags: []string{"--enable-leader-migration"},
enableFeatureGate: true,
expectEnabled: true,
name: "enabled, with custom configuration file",
flags: []string{"--enable-leader-migration"},
expectEnabled: true,
configContent: `
apiVersion: controllermanager.config.k8s.io/v1alpha1
kind: LeaderMigrationConfiguration
@ -81,10 +62,9 @@ controllerLeaders: []
},
},
{
name: "enabled, with custom configuration file (version v1beta1)",
flags: []string{"--enable-leader-migration"},
enableFeatureGate: true,
expectEnabled: true,
name: "enabled, with custom configuration file (version v1beta1)",
flags: []string{"--enable-leader-migration"},
expectEnabled: true,
configContent: `
apiVersion: controllermanager.config.k8s.io/v1beta1
kind: LeaderMigrationConfiguration
@ -102,7 +82,6 @@ controllerLeaders: []
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ControllerManagerLeaderMigration, tc.enableFeatureGate)()
flags := tc.flags
if tc.configContent != "" {
configFile, err := ioutil.TempFile("", tc.name)