diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index e0d37c5bfb7..589874dc4ba 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -681,6 +681,7 @@ const ( // owner: @ahutsunshine // // Allows namespace indexer for namespace scope resources in apiserver cache to accelerate list operations. + // Superseded by BtreeWatchCache. StorageNamespaceIndex featuregate.Feature = "StorageNamespaceIndex" // owner: @nilekhc diff --git a/pkg/features/versioned_kube_features.go b/pkg/features/versioned_kube_features.go index 5f5236f9b94..fd69112de17 100644 --- a/pkg/features/versioned_kube_features.go +++ b/pkg/features/versioned_kube_features.go @@ -675,6 +675,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate StorageNamespaceIndex: { {Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.Beta}, + {Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Deprecated}, }, ServiceAccountNodeAudienceRestriction: { diff --git a/pkg/registry/core/pod/strategy.go b/pkg/registry/core/pod/strategy.go index fd239f6970e..bbbc8ef001e 100644 --- a/pkg/registry/core/pod/strategy.go +++ b/pkg/registry/core/pod/strategy.go @@ -40,6 +40,7 @@ import ( utilnet "k8s.io/apimachinery/pkg/util/net" utilvalidation "k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation/field" + apiserverfeatures "k8s.io/apiserver/pkg/features" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/names" @@ -365,7 +366,7 @@ func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) { // MatchPod returns a generic matcher for a given label and field selector. func MatchPod(label labels.Selector, field fields.Selector) storage.SelectionPredicate { var indexFields = []string{"spec.nodeName"} - if utilfeature.DefaultFeatureGate.Enabled(features.StorageNamespaceIndex) { + if utilfeature.DefaultFeatureGate.Enabled(features.StorageNamespaceIndex) && !utilfeature.DefaultFeatureGate.Enabled(apiserverfeatures.BtreeWatchCache) { indexFields = append(indexFields, "metadata.namespace") } return storage.SelectionPredicate{ @@ -404,7 +405,7 @@ func Indexers() *cache.Indexers { var indexers = cache.Indexers{ storage.FieldIndex("spec.nodeName"): NodeNameIndexFunc, } - if utilfeature.DefaultFeatureGate.Enabled(features.StorageNamespaceIndex) { + if utilfeature.DefaultFeatureGate.Enabled(features.StorageNamespaceIndex) && !utilfeature.DefaultFeatureGate.Enabled(apiserverfeatures.BtreeWatchCache) { indexers[storage.FieldIndex("metadata.namespace")] = NamespaceIndexFunc } return &indexers diff --git a/test/featuregates_linter/test_data/versioned_feature_list.yaml b/test/featuregates_linter/test_data/versioned_feature_list.yaml index 6a3d8df9bf6..051377096b9 100644 --- a/test/featuregates_linter/test_data/versioned_feature_list.yaml +++ b/test/featuregates_linter/test_data/versioned_feature_list.yaml @@ -1286,6 +1286,10 @@ lockToDefault: false preRelease: Beta version: "1.30" + - default: true + lockToDefault: false + preRelease: Deprecated + version: "1.33" - name: StorageVersionAPI versionedSpecs: - default: false