From ade730594005f93ac18e102ba54d61dbf23b616f Mon Sep 17 00:00:00 2001 From: Omer Aplatony Date: Tue, 24 Sep 2024 23:36:30 +0300 Subject: [PATCH] chore: moving apiserver featuregates to versioned Signed-off-by: Omer Aplatony --- pkg/features/kube_features.go | 58 -- pkg/features/versioned_kube_features.go | 499 +++++++++++++----- .../apiserver/pkg/features/kube_features.go | 199 +++++-- .../test_data/unversioned_feature_list.yaml | 174 ------ .../test_data/versioned_feature_list.yaml | 280 +++++++++- 5 files changed, 786 insertions(+), 424 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 4ec5ca37d60..1f84cb7eb2a 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -969,66 +969,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: - genericfeatures.AdmissionWebhookMatchConditions: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 - - genericfeatures.AggregatedDiscoveryEndpoint: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 - - genericfeatures.APIListChunking: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 - - genericfeatures.APIResponseCompression: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.APIServerIdentity: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.APIServerTracing: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.APIServingWithRoutine: {Default: false, PreRelease: featuregate.Alpha}, - - genericfeatures.AuthorizeWithSelectors: {Default: false, PreRelease: featuregate.Alpha}, - - genericfeatures.ConcurrentWatchObjectDecode: {Default: false, PreRelease: featuregate.Beta}, - - genericfeatures.ConsistentListFromCache: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.CoordinatedLeaderElection: {Default: false, PreRelease: featuregate.Alpha}, - - genericfeatures.EfficientWatchResumption: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - genericfeatures.KMSv1: {Default: false, PreRelease: featuregate.Deprecated}, - genericfeatures.MutatingAdmissionPolicy: {Default: false, PreRelease: featuregate.Alpha}, - - genericfeatures.OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.RemainingItemCount: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - - genericfeatures.ResilientWatchCacheInitialization: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.SeparateCacheWatchRPC: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.StorageVersionAPI: {Default: false, PreRelease: featuregate.Alpha}, - - genericfeatures.StorageVersionHash: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.StrictCostEnforcementForVAP: {Default: false, PreRelease: featuregate.Beta}, - - genericfeatures.StrictCostEnforcementForWebhooks: {Default: false, PreRelease: featuregate.Beta}, - - genericfeatures.StructuredAuthenticationConfiguration: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.StructuredAuthorizationConfiguration: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.UnauthenticatedHTTP2DOSMitigation: {Default: true, PreRelease: featuregate.Beta}, - - genericfeatures.WatchBookmark: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - - genericfeatures.WatchCacheInitializationPostStartHook: {Default: false, PreRelease: featuregate.Beta}, - - genericfeatures.WatchFromStorageWithoutResourceVersion: {Default: false, PreRelease: featuregate.Beta}, - - genericfeatures.WatchList: {Default: false, PreRelease: featuregate.Alpha}, - - genericfeatures.ZeroLimitedNominalConcurrencyShares: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 - // inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: diff --git a/pkg/features/versioned_kube_features.go b/pkg/features/versioned_kube_features.go index a3dac4f5447..49bc5f92de4 100644 --- a/pkg/features/versioned_kube_features.go +++ b/pkg/features/versioned_kube_features.go @@ -40,403 +40,648 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate {Version: version.MustParse("1.18"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, }, + AppArmor: { {Version: version.MustParse("1.4"), Default: true, PreRelease: featuregate.Beta}, {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 }, + AppArmorFields: { {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 }, + AuthorizeNodeWithSelectors: { {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, }, + ClusterTrustBundle: { {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, }, + ClusterTrustBundleProjection: { {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, }, + + 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}, + }, + + 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) }, + CSIVolumeHealth: { {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, }, - ContainerCheckpoint: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - 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}, {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}, // remove after MultiCIDRServiceAllocator is GA }, + DisableCloudProviders: { {Version: version.MustParse("1.22"), 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}, }, + DisableKubeletCloudCredentialProviders: { {Version: version.MustParse("1.23"), 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}, }, + DRAControlPlaneController: { {Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, }, + DynamicResourceAllocation: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.26"), 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.25"), Default: false, PreRelease: featuregate.Alpha}, + {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 }, + + genericfeatures.AdmissionWebhookMatchConditions: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.AggregatedDiscoveryEndpoint: { + {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}, + }, + + genericfeatures.AnonymousAuthConfigurableEndpoints: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.APIListChunking: { + {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.9"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + 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}, + }, + + 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}, + }, + + genericfeatures.EfficientWatchResumption: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.21"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.MutatingAdmissionPolicy: { + {Version: version.MustParse("1.30"), 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.RemainingItemCount: { + {Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.ResilientWatchCacheInitialization: { + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.SeparateCacheWatchRPC: { + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + }, + + 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}, + }, + + genericfeatures.StrictCostEnforcementForWebhooks: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + }, + + 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}, + }, + + genericfeatures.UnauthenticatedHTTP2DOSMitigation: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + genericfeatures.WatchBookmark: { + {Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.17"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + genericfeatures.WatchCacheInitializationPostStartHook: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + genericfeatures.WatchFromStorageWithoutResourceVersion: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Beta}, + }, + + genericfeatures.WatchList: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + }, + + genericfeatures.ZeroLimitedNominalConcurrencyShares: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + 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}, + }, + HPAContainerMetrics: { {Version: version.MustParse("1.20"), 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}, // remove in 1.32 }, - HonorPVReclaimPolicy: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + + 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}, + }, + InTreePluginPortworxUnregister: { {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, }, + JobBackoffLimitPerIndex: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, }, + JobManagedBy: { {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, }, + JobPodFailurePolicy: { {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 }, + 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}, }, + KubeletCgroupDriverFromCRI: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.31"), 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.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}, }, + KubeletTracing: { {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, }, + KubeProxyDrainingTerminatingNodes: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.30"), 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 }, + + LoadBalancerIPMode: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + 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}, }, + 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}, }, + 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}, }, + NFTablesProxyMode: { {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, }, + + 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}, }, + PDBUnhealthyPodEvictionPolicy: { {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}, // remove in 1.33 }, + PersistentVolumeLastPhaseTransitionTime: { {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 }, + 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}, - }, - PodReadyToStartContainersCondition: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - }, + PodHostIPs: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 }, + + PodIndexLabel: { + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + }, + 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}, + }, + 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}, }, + 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}, }, - genericfeatures.AnonymousAuthConfigurableEndpoints: { - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, - }, + RelaxedDNSSearchValidation: { {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, }, + RelaxedEnvironmentVariableValidation: { {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, }, + 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}, }, - 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 - }, + SchedulerQueueingHints: { - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Beta}, }, - SeparateTaintEvictionController: { - {Version: version.MustParse("1.29"), 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}, - }, - ServiceAccountTokenNodeBinding: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - ServiceAccountTokenNodeBindingValidation: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - ServiceAccountTokenPodNodeInfo: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, - }, - ServiceTrafficDistribution: { - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, - }, - SidecarContainers: { - {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, - }, - SizeMemoryBackedVolumes: { - {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, - }, - StatefulSetAutoDeletePVC: { - {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, - }, - 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 - }, - StorageVersionMigrator: { + + SELinuxMount: { {Version: version.MustParse("1.30"), 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}, - }, - 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: true, PreRelease: featuregate.Beta}, - }, - 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}, - }, - UserNamespacesSupport: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, - }, - VolumeAttributesClass: { - {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, - }, - VolumeCapacityPriority: { - {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, - }, - WinDSR: { - {Version: version.MustParse("1.14"), 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}, - }, - WindowsHostNetwork: { - {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Alpha}, - }, - NodeInclusionPolicyInPodTopologySpread: { - {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Alpha}, - {Version: version.MustParse("1.26"), Default: true, 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}, }, - LoadBalancerIPMode: { + + SeparateTaintEvictionController: { + {Version: version.MustParse("1.29"), 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}, }, - ImageMaximumGCAge: { + + ServiceAccountTokenNodeBinding: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + ServiceAccountTokenNodeBindingValidation: { {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, }, - UserNamespacesPodSecurityStandards: { + + ServiceAccountTokenPodNodeInfo: { {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, }, - SELinuxMount: { + + ServiceTrafficDistribution: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + SidecarContainers: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + SizeMemoryBackedVolumes: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.22"), Default: true, PreRelease: featuregate.Beta}, + }, + + StatefulSetAutoDeletePVC: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + }, + + 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 + }, + + StorageVersionMigrator: { {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, }, + SupplementalGroupsPolicy: { {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, }, - ImageVolume: { - {Version: version.MustParse("1.31"), 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}, }, - KubeletRegistrationGetOnExistsOnly: { - {Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated}, + + 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}, + }, + + 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}, + }, + + VolumeAttributesClass: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + VolumeCapacityPriority: { + {Version: version.MustParse("1.21"), Default: false, PreRelease: featuregate.Alpha}, + }, + + WinDSR: { + {Version: version.MustParse("1.14"), 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}, + }, + + WindowsHostNetwork: { + {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Alpha}, }, genericfeatures.RetryGenerateName: { {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, 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 80bd5117357..ced24a03d45 100644 --- a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go +++ b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go @@ -295,79 +295,162 @@ func init() { // To add a new feature, define a key for it above and add it here. The features will be // available throughout Kubernetes binaries. // -// Entries are alphabetized. +// Entries are alphabetized and separated from each other with blank lines to avoid sweeping gofmt changes +// when adding or removing one entry. var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{ + AdmissionWebhookMatchConditions: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + AggregatedDiscoveryEndpoint: { + {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}, + }, + AnonymousAuthConfigurableEndpoints: { {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, {Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta}, }, + + APIListChunking: { + {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.9"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + APIResponseCompression: { + {Version: version.MustParse("1.8"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, + }, + + APIServerIdentity: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.26"), Default: true, PreRelease: featuregate.Beta}, + }, + + APIServerTracing: { + {Version: version.MustParse("1.22"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, + }, + + APIServingWithRoutine: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + }, + + AuthorizeWithSelectors: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ConcurrentWatchObjectDecode: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + ConsistentListFromCache: { + {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + + CoordinatedLeaderElection: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Alpha}, + }, + + EfficientWatchResumption: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.21"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + MutatingAdmissionPolicy: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha}, + }, + + OpenAPIEnums: { + {Version: version.MustParse("1.23"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, + }, + + RemainingItemCount: { + {Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + ResilientWatchCacheInitialization: { + {Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta}, + }, + 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}, }, + + SeparateCacheWatchRPC: { + {Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, + }, + + StorageVersionAPI: { + {Version: version.MustParse("1.20"), Default: false, PreRelease: featuregate.Alpha}, + }, + + StorageVersionHash: { + {Version: version.MustParse("1.14"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.15"), Default: true, PreRelease: featuregate.Beta}, + }, + + StrictCostEnforcementForVAP: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + }, + + StrictCostEnforcementForWebhooks: { + {Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Beta}, + }, + + StructuredAuthenticationConfiguration: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + StructuredAuthorizationConfiguration: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + }, + + UnauthenticatedHTTP2DOSMitigation: { + {Version: version.MustParse("1.25"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.Beta}, + }, + + WatchBookmark: { + {Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.17"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, + + WatchCacheInitializationPostStartHook: { + {Version: version.MustParse("1.31"), Default: false, PreRelease: featuregate.Beta}, + }, + + WatchFromStorageWithoutResourceVersion: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Beta}, + }, + + WatchList: { + {Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, + }, + + ZeroLimitedNominalConcurrencyShares: { + {Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + }, } // 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. var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{ - - AggregatedDiscoveryEndpoint: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 - - AdmissionWebhookMatchConditions: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.33 - - APIListChunking: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 - - APIResponseCompression: {Default: true, PreRelease: featuregate.Beta}, - - APIServerIdentity: {Default: true, PreRelease: featuregate.Beta}, - - APIServerTracing: {Default: true, PreRelease: featuregate.Beta}, - - APIServingWithRoutine: {Default: false, PreRelease: featuregate.Alpha}, - - AuthorizeWithSelectors: {Default: false, PreRelease: featuregate.Alpha}, - - ConcurrentWatchObjectDecode: {Default: false, PreRelease: featuregate.Beta}, - - CoordinatedLeaderElection: {Default: false, PreRelease: featuregate.Alpha}, - - EfficientWatchResumption: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - KMSv1: {Default: false, PreRelease: featuregate.Deprecated}, - - OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta}, - - RemainingItemCount: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 - - ResilientWatchCacheInitialization: {Default: true, PreRelease: featuregate.Beta}, - - SeparateCacheWatchRPC: {Default: true, PreRelease: featuregate.Beta}, - - StorageVersionAPI: {Default: false, PreRelease: featuregate.Alpha}, - - StorageVersionHash: {Default: true, PreRelease: featuregate.Beta}, - - StrictCostEnforcementForVAP: {Default: false, PreRelease: featuregate.Beta}, - - StrictCostEnforcementForWebhooks: {Default: false, PreRelease: featuregate.Beta}, - - StructuredAuthenticationConfiguration: {Default: true, PreRelease: featuregate.Beta}, - - StructuredAuthorizationConfiguration: {Default: true, PreRelease: featuregate.Beta}, - - UnauthenticatedHTTP2DOSMitigation: {Default: true, PreRelease: featuregate.Beta}, - - WatchBookmark: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, - - WatchCacheInitializationPostStartHook: {Default: false, PreRelease: featuregate.Beta}, - - WatchFromStorageWithoutResourceVersion: {Default: false, PreRelease: featuregate.Beta}, - - WatchList: {Default: false, PreRelease: featuregate.Alpha}, - - ConsistentListFromCache: {Default: true, PreRelease: featuregate.Beta}, - - ZeroLimitedNominalConcurrencyShares: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 } diff --git a/test/featuregates_linter/test_data/unversioned_feature_list.yaml b/test/featuregates_linter/test_data/unversioned_feature_list.yaml index 064657c462d..3ac2d8898f3 100644 --- a/test/featuregates_linter/test_data/unversioned_feature_list.yaml +++ b/test/featuregates_linter/test_data/unversioned_feature_list.yaml @@ -1,15 +1,3 @@ -- name: AdmissionWebhookMatchConditions - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" -- name: AggregatedDiscoveryEndpoint - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" - name: AllowDNSOnlyNodeCSR versionedSpecs: - default: false @@ -22,42 +10,6 @@ lockToDefault: false preRelease: Deprecated version: "" -- name: APIListChunking - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" -- name: APIResponseCompression - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: APIServerIdentity - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: APIServerTracing - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: APIServingWithRoutine - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Alpha - version: "" -- name: AuthorizeWithSelectors - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Alpha - version: "" - name: CloudControllerManagerWebhook versionedSpecs: - default: false @@ -70,30 +22,12 @@ lockToDefault: false preRelease: Beta version: "" -- name: ConcurrentWatchObjectDecode - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Beta - version: "" -- name: ConsistentListFromCache - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" - name: ContextualLogging versionedSpecs: - default: true lockToDefault: false preRelease: Beta version: "" -- name: CoordinatedLeaderElection - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Alpha - version: "" - name: CRDValidationRatcheting versionedSpecs: - default: true @@ -112,12 +46,6 @@ lockToDefault: false preRelease: Deprecated version: "" -- name: EfficientWatchResumption - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" - name: HPAScaleToZero versionedSpecs: - default: false @@ -148,117 +76,15 @@ lockToDefault: false preRelease: Beta version: "" -- name: MutatingAdmissionPolicy - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Alpha - version: "" -- name: OpenAPIEnums - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" - name: RecursiveReadOnlyMounts versionedSpecs: - default: true lockToDefault: false preRelease: Beta version: "" -- name: RemainingItemCount - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" -- name: ResilientWatchCacheInitialization - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: SeparateCacheWatchRPC - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" - name: StorageNamespaceIndex versionedSpecs: - default: true lockToDefault: false preRelease: Beta version: "" -- name: StorageVersionAPI - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Alpha - version: "" -- name: StorageVersionHash - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: StrictCostEnforcementForVAP - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Beta - version: "" -- name: StrictCostEnforcementForWebhooks - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Beta - version: "" -- name: StructuredAuthenticationConfiguration - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: StructuredAuthorizationConfiguration - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: UnauthenticatedHTTP2DOSMitigation - versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "" -- name: WatchBookmark - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" -- name: WatchCacheInitializationPostStartHook - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Beta - version: "" -- name: WatchFromStorageWithoutResourceVersion - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Beta - version: "" -- name: WatchList - versionedSpecs: - - default: false - lockToDefault: false - preRelease: Alpha - version: "" -- name: ZeroLimitedNominalConcurrencyShares - versionedSpecs: - - default: true - lockToDefault: true - preRelease: GA - version: "" diff --git a/test/featuregates_linter/test_data/versioned_feature_list.yaml b/test/featuregates_linter/test_data/versioned_feature_list.yaml index f51f723d8d2..b378753c4b9 100644 --- a/test/featuregates_linter/test_data/versioned_feature_list.yaml +++ b/test/featuregates_linter/test_data/versioned_feature_list.yaml @@ -1,3 +1,31 @@ +- name: AdmissionWebhookMatchConditions + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.27" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.28" + - default: true + lockToDefault: true + preRelease: GA + version: "1.30" +- name: AggregatedDiscoveryEndpoint + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.26" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.27" + - default: true + lockToDefault: true + preRelease: GA + version: "1.30" - name: AllowOverwriteTerminationGracePeriodSeconds versionedSpecs: - default: false @@ -24,6 +52,56 @@ lockToDefault: false preRelease: Beta version: "1.24" +- name: APIListChunking + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.8" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.9" + - default: true + lockToDefault: true + preRelease: GA + version: "1.29" +- name: APIResponseCompression + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.8" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.16" +- name: APIServerIdentity + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.20" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.26" +- name: APIServerTracing + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.22" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.27" +- name: APIServingWithRoutine + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.30" - name: AppArmor versionedSpecs: - default: true @@ -50,6 +128,12 @@ lockToDefault: false preRelease: Alpha version: "1.31" +- name: AuthorizeWithSelectors + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.31" - name: ClusterTrustBundle versionedSpecs: - default: false @@ -62,6 +146,22 @@ lockToDefault: false preRelease: Alpha version: "1.29" +- name: ConcurrentWatchObjectDecode + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.31" +- name: ConsistentListFromCache + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.28" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.31" - name: ContainerCheckpoint versionedSpecs: - default: false @@ -72,6 +172,12 @@ lockToDefault: false preRelease: Beta version: "1.30" +- name: CoordinatedLeaderElection + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.31" - name: CPUCFSQuotaPeriod versionedSpecs: - default: false @@ -190,6 +296,10 @@ lockToDefault: false preRelease: Beta version: "1.29" + - default: true + lockToDefault: true + preRelease: GA + version: "1.31" - name: DRAControlPlaneController versionedSpecs: - default: false @@ -201,7 +311,21 @@ - default: false lockToDefault: false preRelease: Alpha - version: "1.29" + version: "1.26" +- name: EfficientWatchResumption + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.20" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.21" + - default: true + lockToDefault: true + preRelease: GA + version: "1.24" - name: ElasticIndexedJob versionedSpecs: - default: true @@ -217,7 +341,7 @@ - default: false lockToDefault: false preRelease: Alpha - version: "1.25" + version: "1.26" - name: ExecProbeTimeout versionedSpecs: - default: true @@ -494,6 +618,12 @@ lockToDefault: false preRelease: Beta version: "1.31" +- name: MutatingAdmissionPolicy + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.30" - name: NFTablesProxyMode versionedSpecs: - default: false @@ -538,6 +668,16 @@ lockToDefault: false preRelease: Beta version: "1.30" +- name: OpenAPIEnums + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.23" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.24" - name: PDBUnhealthyPodEvictionPolicy versionedSpecs: - default: false @@ -700,6 +840,26 @@ lockToDefault: false preRelease: Beta version: "1.31" +- name: RemainingItemCount + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.15" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.16" + - default: true + lockToDefault: true + preRelease: GA + version: "1.29" +- name: ResilientWatchCacheInitialization + versionedSpecs: + - default: true + lockToDefault: false + preRelease: Beta + version: "1.31" - name: ResourceHealthStatus versionedSpecs: - default: false @@ -738,10 +898,6 @@ version: "1.29" - name: SchedulerQueueingHints versionedSpecs: - - default: true - lockToDefault: false - preRelease: Beta - version: "1.27" - default: false lockToDefault: false preRelease: Beta @@ -766,6 +922,12 @@ lockToDefault: false preRelease: Beta version: "1.28" +- name: SeparateCacheWatchRPC + versionedSpecs: + - default: true + lockToDefault: false + preRelease: Beta + version: "1.28" - name: SeparateTaintEvictionController versionedSpecs: - default: true @@ -866,12 +1028,60 @@ lockToDefault: true preRelease: GA version: "1.31" +- name: StorageVersionAPI + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.20" +- name: StorageVersionHash + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.14" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.15" - name: StorageVersionMigrator versionedSpecs: - default: false lockToDefault: false preRelease: Alpha version: "1.30" +- name: StrictCostEnforcementForVAP + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.30" +- name: StrictCostEnforcementForWebhooks + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.30" +- name: StructuredAuthenticationConfiguration + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.29" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.30" +- name: StructuredAuthorizationConfiguration + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.29" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.30" - name: SupplementalGroupsPolicy versionedSpecs: - default: false @@ -910,10 +1120,14 @@ version: "1.28" - name: TopologyManagerPolicyOptions versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.26" - default: true lockToDefault: false preRelease: Beta - version: "1.26" + version: "1.28" - name: TranslateStreamCloseWebsocketRequests versionedSpecs: - default: false @@ -924,6 +1138,16 @@ lockToDefault: false preRelease: Beta version: "1.30" +- name: UnauthenticatedHTTP2DOSMitigation + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.25" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.29" - name: UnknownVersionInteroperabilityProxy versionedSpecs: - default: false @@ -962,6 +1186,38 @@ lockToDefault: false preRelease: Alpha version: "1.21" +- name: WatchBookmark + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.15" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.16" + - default: true + lockToDefault: true + preRelease: GA + version: "1.17" +- name: WatchCacheInitializationPostStartHook + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.31" +- name: WatchFromStorageWithoutResourceVersion + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.27" +- name: WatchList + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Alpha + version: "1.27" - name: WindowsHostNetwork versionedSpecs: - default: true @@ -984,3 +1240,13 @@ lockToDefault: false preRelease: Beta version: "1.20" +- name: ZeroLimitedNominalConcurrencyShares + versionedSpecs: + - default: false + lockToDefault: false + preRelease: Beta + version: "1.29" + - default: true + lockToDefault: true + preRelease: GA + version: "1.30"