From 7b5cbbb9618ae369fc5d5379703b3c2bda3f9d73 Mon Sep 17 00:00:00 2001 From: yongruilin Date: Wed, 12 Feb 2025 13:41:01 -0800 Subject: [PATCH] chore: Remove unused unversioned feature gate map by consolidating feature gate files --- hack/verify-test-featuregates.sh | 2 +- pkg/features/kube_features.go | 876 ++++++++++++++++- pkg/features/kube_features_test.go | 8 +- pkg/features/versioned_kube_features.go | 890 ------------------ .../apiserver/pkg/features/kube_features.go | 5 - 5 files changed, 870 insertions(+), 911 deletions(-) delete mode 100644 pkg/features/versioned_kube_features.go diff --git a/hack/verify-test-featuregates.sh b/hack/verify-test-featuregates.sh index b0f76c0250b..bd1f1b12375 100755 --- a/hack/verify-test-featuregates.sh +++ b/hack/verify-test-featuregates.sh @@ -43,7 +43,7 @@ fi # ensure all generic features are added in alphabetic order -lines=$(git grep 'genericfeatures[.].*:' -- pkg/features/versioned_kube_features.go) +lines=$(git grep 'genericfeatures[.].*:' -- pkg/features/kube_features.go) sorted_lines=$(echo "$lines" | sort -f) if [[ "$lines" != "$sorted_lines" ]]; then echo "Generic features in pkg/features/kube_features.go not sorted" >&2 diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index ccc465da359..d66c22ef71c 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -17,11 +17,15 @@ limitations under the License. package features import ( + apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features" "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/version" + genericfeatures "k8s.io/apiserver/pkg/features" utilfeature "k8s.io/apiserver/pkg/util/feature" clientfeatures "k8s.io/client-go/features" "k8s.io/component-base/featuregate" zpagesfeatures "k8s.io/component-base/zpages/features" + kcmfeatures "k8s.io/controller-manager/pkg/features" ) const ( @@ -953,8 +957,871 @@ const ( DisableCPUQuotaWithExclusiveCPUs featuregate.Feature = "DisableCPUQuotaWithExclusiveCPUs" ) +// 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. +var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{ + AllowDNSOnlyNodeCSR: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + AllowInsecureKubeletCertificateSigningRequests: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + AllowOverwriteTerminationGracePeriodSeconds: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + AllowServiceLBStatusOnNonLB: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Deprecated}, + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated, LockToDefault: true}, // remove in 1.35 + }, + + AnyVolumeDataSource: { + {Version: version.MustParse("1.18"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.33 -> remove in 1.36 + }, + + AuthorizeNodeWithSelectors: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + kcmfeatures.CloudControllerManagerWebhook: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ClusterTrustBundle: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, + }, + + ClusterTrustBundleProjection: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, + }, + + ContainerCheckpoint: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + CPUCFSQuotaPeriod: { + {Version: version.MustParse("1.12"), Default: false, PreRelease: featuregate.Alpha}, + }, + + CPUManager: { + {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.10"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26 + }, + + CPUManagerPolicyAlphaOptions: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + }, + + CPUManagerPolicyBetaOptions: { + {Version: version.MustParse("1.23"), Default: true, PreRelease: featuregate.Beta}, + }, + + CPUManagerPolicyOptions: { + {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.23"), Default: true, PreRelease: featuregate.Beta}, + }, + + CronJobsScheduledAnnotation: { + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.35 + }, + + // inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed + // unintentionally on either side: + apiextensionsfeatures.CRDValidationRatcheting: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + CrossNamespaceVolumeDataSource: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + }, + + CSIMigrationPortworx: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, // On by default (requires Portworx CSI driver) + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 + }, + + CSIVolumeHealth: { + {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, + }, + + // inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed + // unintentionally on either side: + apiextensionsfeatures.CustomResourceFieldSelectors: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, + }, + + DeclarativeValidation: { + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + DeclarativeValidationTakeover: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, + }, + + DeploymentPodReplacementPolicy: { + {Version: version.MustParse("1.32"), 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}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 + }, + + DisableAllocatorDualWrite: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, // remove after MultiCIDRServiceAllocator is GA + }, + + DisableNodeKubeProxyVersion: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + DRAAdminAccess: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + DRADeviceTaints: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + DRAPrioritizedList: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + DRAResourceClaimDeviceStatus: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + DynamicResourceAllocation: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Beta}, + }, + + KubeletCrashLoopBackOffMax: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ElasticIndexedJob: { + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.31, remove in 1.32 + }, + + EventedPLEG: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ExecProbeTimeout: { + {Version: version.MustParse("1.20"), Default: true, PreRelease: featuregate.GA}, // lock to default and remove after v1.22 based on KEP #1972 update + }, + + ExternalServiceAccountTokenSigner: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.AggregatedDiscoveryRemoveBetaType: { + {Version: version.MustParse("1.0"), Default: false, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Deprecated}, + }, + + genericfeatures.AllowParsingUserUIDFromCertAuth: { + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.AllowUnsafeMalformedObjectDeletion: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.AnonymousAuthConfigurableEndpoints: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.APIResponseCompression: { + {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.APIServerIdentity: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.APIServerTracing: { + {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.APIServingWithRoutine: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.AuthorizeWithSelectors: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.BtreeWatchCache: { + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.CBORServingAndStorage: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.ConcurrentWatchObjectDecode: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + genericfeatures.ConsistentListFromCache: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.CoordinatedLeaderElection: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, + }, + + genericfeatures.KMSv1: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Deprecated}, + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + genericfeatures.ListFromCacheSnapshot: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.MutatingAdmissionPolicy: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.OpenAPIEnums: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.RemoteRequestHeaderUID: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.ResilientWatchCacheInitialization: { + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.RetryGenerateName: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, + }, + + genericfeatures.SeparateCacheWatchRPC: { + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + genericfeatures.StorageVersionAPI: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.StorageVersionHash: { + {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.15"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.StrictCostEnforcementForVAP: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.StrictCostEnforcementForWebhooks: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.StructuredAuthenticationConfiguration: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.StructuredAuthorizationConfiguration: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.UnauthenticatedHTTP2DOSMitigation: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.WatchCacheInitializationPostStartHook: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + genericfeatures.WatchFromStorageWithoutResourceVersion: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated, LockToDefault: true}, + }, + + genericfeatures.WatchList: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + GitRepoVolumeDriver: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + GracefulNodeShutdown: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.21"), Default: true, PreRelease: featuregate.Beta}, + }, + + GracefulNodeShutdownBasedOnPodPriority: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, + }, + + HonorPVReclaimPolicy: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 + }, + + HPAScaleToZero: { + {Version: version.MustParse("1.16"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ImageMaximumGCAge: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + ImageVolume: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, + }, + + InPlacePodVerticalScaling: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + InPlacePodVerticalScalingAllocatedStatus: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + InPlacePodVerticalScalingExclusiveCPUs: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + InTreePluginPortworxUnregister: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, // remove it along with CSIMigrationPortworx in 1.36 + }, + + JobBackoffLimitPerIndex: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 + }, + + JobManagedBy: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + JobPodReplacementPolicy: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + JobSuccessPolicy: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 + }, + + KubeletCgroupDriverFromCRI: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + KubeletEnsureSecretPulledImages: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + KubeletFineGrainedAuthz: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + KubeletInUserNamespace: { + {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, + }, + + KubeletPodResourcesDynamicResources: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + }, + + KubeletPodResourcesGet: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + }, + + KubeletRegistrationGetOnExistsOnly: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + KubeletSeparateDiskGC: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + KubeletServiceAccountTokenForCredentialProviders: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + KubeletTracing: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + }, + + LegacySidecarContainers: { + {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + LoadBalancerIPMode: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + LocalStorageCapacityIsolationFSQuotaMonitoring: { + {Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + LogarithmicScaleDown: { + {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + MatchLabelKeysInPodAffinity: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + MatchLabelKeysInPodTopologySpread: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + }, + + MaxUnavailableStatefulSet: { + {Version: version.MustParse("1.24"), Default: false, PreRelease: featuregate.Alpha}, + }, + + MemoryManager: { + {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + MemoryQoS: { + {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, + }, + + MultiCIDRServiceAllocator: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: false}, // remove in 1.36 + }, + + MutableCSINodeAllocatableCount: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + NFTablesProxyMode: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + NodeInclusionPolicyInPodTopologySpread: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, + }, + + NodeLogQuery: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + }, + + NodeSwap: { + {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + OrderedNamespaceDeletion: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + PodAndContainerStatsFromCRI: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + }, + + PodDeletionCost: { + {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, + }, + + PodDisruptionConditions: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 + }, + + PodIndexLabel: { + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.35 + }, + + PodLevelResources: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + PodLifecycleSleepAction: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + PodReadyToStartContainersCondition: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + PodLifecycleSleepActionAllowZero: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + PodObservedGenerationTracking: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + PodSchedulingReadiness: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.30; remove in 1.32 + }, + + PortForwardWebsockets: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + PreferSameTrafficDistribution: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ProcMountType: { + {Version: version.MustParse("1.12"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + QOSReserved: { + {Version: version.MustParse("1.11"), Default: false, PreRelease: featuregate.Alpha}, + }, + + RecoverVolumeExpansionFailure: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + RecursiveReadOnlyMounts: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 + }, + + ReduceDefaultCrashLoopBackOffDecay: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + RelaxedDNSSearchValidation: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + RelaxedEnvironmentVariableValidation: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + ReloadKubeletServerCertificateFile: { + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + ResourceHealthStatus: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + }, + + RotateKubeletServerCertificate: { + {Version: version.MustParse("1.7"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.12"), Default: true, PreRelease: featuregate.Beta}, + }, + + RuntimeClassInImageCriAPI: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + }, + + SchedulerAsyncPreemption: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + SchedulerPopFromBackoffQ: { + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + SchedulerQueueingHints: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + SELinuxChangePolicy: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + SELinuxMount: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, + }, + + SELinuxMountReadWriteOncePod: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + }, + + SeparateTaintEvictionController: { + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + StorageNamespaceIndex: { + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Deprecated}, + }, + + ServiceAccountNodeAudienceRestriction: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + ServiceAccountTokenJTI: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + ServiceAccountTokenNodeBinding: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + ServiceAccountTokenNodeBindingValidation: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + ServiceAccountTokenPodNodeInfo: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + ServiceTrafficDistribution: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA and LockToDefault in 1.33, remove in 1.36 + }, + + SidecarContainers: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, // GA in 1.33 remove in 1.36 + }, + + SizeMemoryBackedVolumes: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, + }, + + PodLogsQuerySplitStreams: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + StatefulSetAutoDeletePVC: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.32, remove in 1.35 + }, + + StatefulSetStartOrdinal: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.31, remove in 1.33 + }, + + StorageCapacityScoring: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + StorageVersionMigrator: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + }, + + StreamingCollectionEncodingToJSON: { + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + StreamingCollectionEncodingToProtobuf: { + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + SupplementalGroupsPolicy: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + }, + + SystemdWatchdog: { + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + StrictIPCIDRValidation: { + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, + }, + + TopologyAwareHints: { + {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + TopologyManagerPolicyAlphaOptions: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + }, + + TopologyManagerPolicyBetaOptions: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + }, + + TopologyManagerPolicyOptions: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA}, + }, + + TranslateStreamCloseWebsocketRequests: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + UnknownVersionInteroperabilityProxy: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + }, + + UserNamespacesPodSecurityStandards: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + }, + + UserNamespacesSupport: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + + VolumeAttributesClass: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + WinDSR: { + {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, + WindowsGracefulNodeShutdown: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + WinOverlay: { + {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.20"), Default: true, PreRelease: featuregate.Beta}, + }, + + WindowsCPUAndMemoryAffinity: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + WindowsHostNetwork: { + {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, + }, + + zpagesfeatures.ComponentFlagz: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + + zpagesfeatures.ComponentStatusz: { + {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, + }, + DisableCPUQuotaWithExclusiveCPUs: { + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, + }, +} + func init() { - runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(defaultKubernetesFeatureGates)) //nolint:forbidigo // TODO(https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/4330-compatibility-versions): Remove this once we complete the migration to versioned feature gates runtime.Must(utilfeature.DefaultMutableFeatureGate.AddVersioned(defaultVersionedKubernetesFeatureGates)) runtime.Must(zpagesfeatures.AddFeatureGates(utilfeature.DefaultMutableFeatureGate)) @@ -967,10 +1834,3 @@ func init() { runtime.Must(clientfeatures.AddFeaturesToExistingFeatureGates(ca)) clientfeatures.ReplaceFeatureGates(ca) } - -// 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{} diff --git a/pkg/features/kube_features_test.go b/pkg/features/kube_features_test.go index 3478c55094f..29a147b288a 100644 --- a/pkg/features/kube_features_test.go +++ b/pkg/features/kube_features_test.go @@ -28,7 +28,7 @@ import ( func TestKubeFeaturesRegistered(t *testing.T) { registeredFeatures := utilfeature.DefaultFeatureGate.DeepCopy().GetAll() - for featureName := range defaultKubernetesFeatureGates { + for featureName := range defaultVersionedKubernetesFeatureGates { if _, ok := registeredFeatures[featureName]; !ok { t.Errorf("The feature gate %q is not registered in the DefaultFeatureGate", featureName) } @@ -59,9 +59,6 @@ func TestAllRegisteredFeaturesExpected(t *testing.T) { if err := clientfeatures.AddFeaturesToExistingFeatureGates(&clientAdapter{knownFeatureGates}); err != nil { t.Fatal(err) } - if err := knownFeatureGates.Add(defaultKubernetesFeatureGates); err != nil { - t.Fatal(err) - } if err := knownFeatureGates.AddVersioned(defaultVersionedKubernetesFeatureGates); err != nil { t.Fatal(err) } @@ -88,9 +85,6 @@ func TestEnsureAlphaGatesAreNotSwitchedOnByDefault(t *testing.T) { } } - for feature, spec := range defaultKubernetesFeatureGates { - checkAlphaGates(feature, spec) - } for feature, specs := range defaultVersionedKubernetesFeatureGates { for _, spec := range specs { checkAlphaGates(feature, spec) diff --git a/pkg/features/versioned_kube_features.go b/pkg/features/versioned_kube_features.go deleted file mode 100644 index 66a962883f1..00000000000 --- a/pkg/features/versioned_kube_features.go +++ /dev/null @@ -1,890 +0,0 @@ -/* -Copyright 2024 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package features - -import ( - apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features" - "k8s.io/apimachinery/pkg/util/version" - genericfeatures "k8s.io/apiserver/pkg/features" - "k8s.io/component-base/featuregate" - zpagesfeatures "k8s.io/component-base/zpages/features" - kcmfeatures "k8s.io/controller-manager/pkg/features" -) - -// 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. -var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{ - AllowDNSOnlyNodeCSR: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - AllowInsecureKubeletCertificateSigningRequests: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - AllowOverwriteTerminationGracePeriodSeconds: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - AllowServiceLBStatusOnNonLB: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Deprecated}, - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated, LockToDefault: true}, // remove in 1.35 - }, - - AnyVolumeDataSource: { - {Version: version.MustParse("1.18"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.33 -> remove in 1.36 - }, - - AuthorizeNodeWithSelectors: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - kcmfeatures.CloudControllerManagerWebhook: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - }, - - ClusterTrustBundle: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, - }, - - ClusterTrustBundleProjection: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, - }, - - ContainerCheckpoint: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - - CPUCFSQuotaPeriod: { - {Version: version.MustParse("1.12"), Default: false, PreRelease: featuregate.Alpha}, - }, - - CPUManager: { - {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.10"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26 - }, - - CPUManagerPolicyAlphaOptions: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - }, - - CPUManagerPolicyBetaOptions: { - {Version: version.MustParse("1.23"), Default: true, PreRelease: featuregate.Beta}, - }, - - CPUManagerPolicyOptions: { - {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.23"), Default: true, PreRelease: featuregate.Beta}, - }, - - CronJobsScheduledAnnotation: { - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.35 - }, - - // inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed - // unintentionally on either side: - apiextensionsfeatures.CRDValidationRatcheting: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - CrossNamespaceVolumeDataSource: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - }, - - CSIMigrationPortworx: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, // On by default (requires Portworx CSI driver) - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 - }, - - CSIVolumeHealth: { - {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, - }, - - // inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed - // unintentionally on either side: - apiextensionsfeatures.CustomResourceFieldSelectors: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, - }, - - DeclarativeValidation: { - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - DeclarativeValidationTakeover: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, - }, - - DeploymentPodReplacementPolicy: { - {Version: version.MustParse("1.32"), 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}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 - }, - - DisableAllocatorDualWrite: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, // remove after MultiCIDRServiceAllocator is GA - }, - - DisableNodeKubeProxyVersion: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - DRAAdminAccess: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - DRADeviceTaints: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - DRAPrioritizedList: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - DRAResourceClaimDeviceStatus: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - DynamicResourceAllocation: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Beta}, - }, - - KubeletCrashLoopBackOffMax: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - ElasticIndexedJob: { - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.31, remove in 1.32 - }, - - EventedPLEG: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - }, - - ExecProbeTimeout: { - {Version: version.MustParse("1.20"), Default: true, PreRelease: featuregate.GA}, // lock to default and remove after v1.22 based on KEP #1972 update - }, - - ExternalServiceAccountTokenSigner: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.AggregatedDiscoveryRemoveBetaType: { - {Version: version.MustParse("1.0"), Default: false, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Deprecated}, - }, - - genericfeatures.AllowParsingUserUIDFromCertAuth: { - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.AllowUnsafeMalformedObjectDeletion: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.AnonymousAuthConfigurableEndpoints: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.APIResponseCompression: { - {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.APIServerIdentity: { - {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.APIServerTracing: { - {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.APIServingWithRoutine: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.AuthorizeWithSelectors: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.BtreeWatchCache: { - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - genericfeatures.CBORServingAndStorage: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.ConcurrentWatchObjectDecode: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - }, - - genericfeatures.ConsistentListFromCache: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.CoordinatedLeaderElection: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, - }, - - genericfeatures.KMSv1: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Deprecated}, - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - genericfeatures.ListFromCacheSnapshot: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.MutatingAdmissionPolicy: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.OpenAPIEnums: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.RemoteRequestHeaderUID: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.ResilientWatchCacheInitialization: { - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.RetryGenerateName: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, - }, - - genericfeatures.SeparateCacheWatchRPC: { - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - genericfeatures.StorageVersionAPI: { - {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, - }, - - genericfeatures.StorageVersionHash: { - {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.15"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.StrictCostEnforcementForVAP: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - genericfeatures.StrictCostEnforcementForWebhooks: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - genericfeatures.StructuredAuthenticationConfiguration: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.StructuredAuthorizationConfiguration: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - genericfeatures.UnauthenticatedHTTP2DOSMitigation: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - }, - - genericfeatures.WatchCacheInitializationPostStartHook: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - }, - - genericfeatures.WatchFromStorageWithoutResourceVersion: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated, LockToDefault: true}, - }, - - genericfeatures.WatchList: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - GitRepoVolumeDriver: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - GracefulNodeShutdown: { - {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.21"), Default: true, PreRelease: featuregate.Beta}, - }, - - GracefulNodeShutdownBasedOnPodPriority: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, - }, - - HonorPVReclaimPolicy: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 - }, - - HPAScaleToZero: { - {Version: version.MustParse("1.16"), Default: false, PreRelease: featuregate.Alpha}, - }, - - ImageMaximumGCAge: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - - ImageVolume: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, - }, - - InPlacePodVerticalScaling: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - InPlacePodVerticalScalingAllocatedStatus: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - InPlacePodVerticalScalingExclusiveCPUs: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - InTreePluginPortworxUnregister: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, // remove it along with CSIMigrationPortworx in 1.36 - }, - - JobBackoffLimitPerIndex: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 - }, - - JobManagedBy: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - JobPodReplacementPolicy: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - }, - - JobSuccessPolicy: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 - }, - - KubeletCgroupDriverFromCRI: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - - KubeletEnsureSecretPulledImages: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - KubeletFineGrainedAuthz: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - KubeletInUserNamespace: { - {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, - }, - - KubeletPodResourcesDynamicResources: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - }, - - KubeletPodResourcesGet: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - }, - - KubeletRegistrationGetOnExistsOnly: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - KubeletSeparateDiskGC: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - - KubeletServiceAccountTokenForCredentialProviders: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - KubeletTracing: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - }, - - LegacySidecarContainers: { - {Version: version.MustParse("1.0"), Default: true, PreRelease: featuregate.GA}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - LoadBalancerIPMode: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - LocalStorageCapacityIsolationFSQuotaMonitoring: { - {Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - }, - - LogarithmicScaleDown: { - {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - MatchLabelKeysInPodAffinity: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - MatchLabelKeysInPodTopologySpread: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - }, - - MaxUnavailableStatefulSet: { - {Version: version.MustParse("1.24"), Default: false, PreRelease: featuregate.Alpha}, - }, - - MemoryManager: { - {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - MemoryQoS: { - {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, - }, - - MultiCIDRServiceAllocator: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: false}, // remove in 1.36 - }, - - MutableCSINodeAllocatableCount: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - NFTablesProxyMode: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - NodeInclusionPolicyInPodTopologySpread: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, - }, - - NodeLogQuery: { - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, - }, - - NodeSwap: { - {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - - OrderedNamespaceDeletion: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - PodAndContainerStatsFromCRI: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - }, - - PodDeletionCost: { - {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, - }, - - PodDisruptionConditions: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 - }, - - PodIndexLabel: { - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.35 - }, - - PodLevelResources: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - PodLifecycleSleepAction: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - - PodReadyToStartContainersCondition: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - }, - - PodLifecycleSleepActionAllowZero: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - PodObservedGenerationTracking: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - PodSchedulingReadiness: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.30; remove in 1.32 - }, - - PortForwardWebsockets: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - - PreferSameTrafficDistribution: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - ProcMountType: { - {Version: version.MustParse("1.12"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - }, - - QOSReserved: { - {Version: version.MustParse("1.11"), Default: false, PreRelease: featuregate.Alpha}, - }, - - RecoverVolumeExpansionFailure: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - RecursiveReadOnlyMounts: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36 - }, - - ReduceDefaultCrashLoopBackOffDecay: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - RelaxedDNSSearchValidation: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - RelaxedEnvironmentVariableValidation: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - ReloadKubeletServerCertificateFile: { - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - - ResourceHealthStatus: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - }, - - RotateKubeletServerCertificate: { - {Version: version.MustParse("1.7"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.12"), Default: true, PreRelease: featuregate.Beta}, - }, - - RuntimeClassInImageCriAPI: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - }, - - SchedulerAsyncPreemption: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - SchedulerPopFromBackoffQ: { - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - SchedulerQueueingHints: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - SELinuxChangePolicy: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - SELinuxMount: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Beta}, - }, - - SELinuxMountReadWriteOncePod: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, - }, - - SeparateTaintEvictionController: { - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - }, - - StorageNamespaceIndex: { - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Deprecated}, - }, - - ServiceAccountNodeAudienceRestriction: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - ServiceAccountTokenJTI: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - ServiceAccountTokenNodeBinding: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - ServiceAccountTokenNodeBindingValidation: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - ServiceAccountTokenPodNodeInfo: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - ServiceTrafficDistribution: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA and LockToDefault in 1.33, remove in 1.36 - }, - - SidecarContainers: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, // GA in 1.33 remove in 1.36 - }, - - SizeMemoryBackedVolumes: { - {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, LockToDefault: true, PreRelease: featuregate.GA}, - }, - - PodLogsQuerySplitStreams: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - StatefulSetAutoDeletePVC: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.32, remove in 1.35 - }, - - StatefulSetStartOrdinal: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.31, remove in 1.33 - }, - - StorageCapacityScoring: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - StorageVersionMigrator: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - }, - - StreamingCollectionEncodingToJSON: { - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - StreamingCollectionEncodingToProtobuf: { - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - SupplementalGroupsPolicy: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - }, - - SystemdWatchdog: { - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, - - StrictIPCIDRValidation: { - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Alpha}, - }, - - TopologyAwareHints: { - {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - }, - - TopologyManagerPolicyAlphaOptions: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - }, - - TopologyManagerPolicyBetaOptions: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, - }, - - TopologyManagerPolicyOptions: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.GA}, - }, - - TranslateStreamCloseWebsocketRequests: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - - UnknownVersionInteroperabilityProxy: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - }, - - UserNamespacesPodSecurityStandards: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - }, - - UserNamespacesSupport: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - - VolumeAttributesClass: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - }, - - WinDSR: { - {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, - WindowsGracefulNodeShutdown: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - WinOverlay: { - {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.20"), Default: true, PreRelease: featuregate.Beta}, - }, - - WindowsCPUAndMemoryAffinity: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - WindowsHostNetwork: { - {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated}, - }, - - zpagesfeatures.ComponentFlagz: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - - zpagesfeatures.ComponentStatusz: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, - }, - DisableCPUQuotaWithExclusiveCPUs: { - {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, - }, -} diff --git a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go index ed30e1d70ba..ec5df437951 100644 --- a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go +++ b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go @@ -246,7 +246,6 @@ const ( ) func init() { - runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(defaultKubernetesFeatureGates)) //nolint:forbidigo // TODO(https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/4330-compatibility-versions): Remove this once we complete the migration to versioned feature gates runtime.Must(utilfeature.DefaultMutableFeatureGate.AddVersioned(defaultVersionedKubernetesFeatureGates)) } @@ -418,7 +417,3 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, }, } - -// defaultKubernetesFeatureGates consists of legacy unversioned Kubernetes-specific feature keys. -// Please do not add to this struct and use defaultVersionedKubernetesFeatureGates instead. -var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{}