From a5641b33c978aea730a224d27efd1f3b9e1ee536 Mon Sep 17 00:00:00 2001 From: Jefftree Date: Thu, 5 Sep 2024 19:53:33 +0000 Subject: [PATCH 1/2] Reorder features alphabetical and add comments for adding features --- pkg/features/kube_features.go | 27 ++++++++++++------------- pkg/features/versioned_kube_features.go | 12 +++++------ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 8fbe2673c26..11fb8d88055 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -38,13 +38,6 @@ const ( // of code conflicts because changes are more likely to be scattered // across the file. - // owner: @ttakahashi21 @mkimuram - // kep: https://kep.k8s.io/3294 - // alpha: v1.26 - // - // Enable usage of Provision of PVCs from snapshots in other namespaces - CrossNamespaceVolumeDataSource featuregate.Feature = "CrossNamespaceVolumeDataSource" - // owner: @aojea // Deprecated: v1.31 // @@ -178,6 +171,13 @@ const ( // Set the scheduled time as an annotation in the job. CronJobsScheduledAnnotation featuregate.Feature = "CronJobsScheduledAnnotation" + // owner: @ttakahashi21 @mkimuram + // kep: https://kep.k8s.io/3294 + // alpha: v1.26 + // + // Enable usage of Provision of PVCs from snapshots in other namespaces + CrossNamespaceVolumeDataSource featuregate.Feature = "CrossNamespaceVolumeDataSource" + // owner: @elezar // kep: http://kep.k8s.io/4009 // alpha: v1.28 @@ -954,17 +954,12 @@ func init() { clientfeatures.ReplaceFeatureGates(ca) } -// defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys. -// To add a new feature, define a key for it above and add it here. The features will be -// available throughout Kubernetes binaries. +// defaultKubernetesFeatureGates consists of legacy unversioned Kubernetes-specific feature keys. +// Please do not add to this file and use pkg/features/versioned_kube_features.go instead. // // Entries are separated from each other with blank lines to avoid sweeping gofmt changes // when adding or removing one entry. var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{ - AllowDNSOnlyNodeCSR: {Default: false, PreRelease: featuregate.Deprecated}, // remove after 1.33 - - DisableNodeKubeProxyVersion: {Default: false, PreRelease: featuregate.Deprecated}, // default on in 1.33 - // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: @@ -1047,8 +1042,12 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS // ... HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha}, + AllowDNSOnlyNodeCSR: {Default: false, PreRelease: featuregate.Deprecated}, // remove after 1.33 + AllowInsecureKubeletCertificateSigningRequests: {Default: false, PreRelease: featuregate.Deprecated}, // remove in 1.33 + DisableNodeKubeProxyVersion: {Default: false, PreRelease: featuregate.Deprecated}, // default on in 1.33 + StorageNamespaceIndex: {Default: true, PreRelease: featuregate.Beta}, RecursiveReadOnlyMounts: {Default: true, PreRelease: featuregate.Beta}, diff --git a/pkg/features/versioned_kube_features.go b/pkg/features/versioned_kube_features.go index 048474947c6..0c93b35d08d 100644 --- a/pkg/features/versioned_kube_features.go +++ b/pkg/features/versioned_kube_features.go @@ -23,15 +23,12 @@ import ( ) // defaultVersionedKubernetesFeatureGates consists of all known Kubernetes-specific feature keys with VersionedSpecs. -// To add a new feature, define a key for it and add it here. The features will be +// To add a new feature, define a key for it in pkg/features/kube_features.go and add it here. The features will be // available throughout Kubernetes binaries. +// To support n-3 compatibility version, features may only be removed 3 releases after graduation. // -// Entries are alphabetized and separated from each other with blank lines to avoid sweeping gofmt changes -// when adding or removing one entry. +// Entries are alphabetized. var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{ - CrossNamespaceVolumeDataSource: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - }, AnyVolumeDataSource: { {Version: version.MustParse("1.18"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, @@ -86,6 +83,9 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate CronJobsScheduledAnnotation: { {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, }, + CrossNamespaceVolumeDataSource: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + }, DevicePluginCDIDevices: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, From da308ea4a407178a4692932afa48a20c4d6ac86c Mon Sep 17 00:00:00 2001 From: Jefftree Date: Thu, 19 Sep 2024 17:25:11 +0000 Subject: [PATCH 2/2] Update feature gate comment on referenced features --- pkg/features/versioned_kube_features.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/features/versioned_kube_features.go b/pkg/features/versioned_kube_features.go index 0c93b35d08d..6398233b835 100644 --- a/pkg/features/versioned_kube_features.go +++ b/pkg/features/versioned_kube_features.go @@ -25,6 +25,10 @@ import ( // defaultVersionedKubernetesFeatureGates consists of all known Kubernetes-specific feature keys with VersionedSpecs. // To add a new feature, define a key for it in pkg/features/kube_features.go and add it here. The features will be // available throughout Kubernetes binaries. +// For features available via specific kubernetes components like apiserver, +// cloud-controller-manager, etc find the respective kube_features.go file +// (eg:staging/src/apiserver/pkg/features/kube_features.go), define the versioned +// feature gate there, and reference it in this file. // To support n-3 compatibility version, features may only be removed 3 releases after graduation. // // Entries are alphabetized.