mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 07:20:13 +00:00
Merge pull request #109072 from jiahuif-forks/feature/leader-migration/to-ga
Graduate Leader Migration to GA
This commit is contained in:
commit
d4ac0ebecb
@ -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},
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user