diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 64a63c0fde5..09c7fd3e60b 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -664,6 +664,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 5caedb5d763..322467a4f5c 100644 --- a/pkg/features/versioned_kube_features.go +++ b/pkg/features/versioned_kube_features.go @@ -678,6 +678,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 17764ca6ff4..14620be6b18 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" @@ -379,7 +380,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{ @@ -418,7 +419,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 b0bea041c68..9c3f6e48d7c 100644 --- a/test/featuregates_linter/test_data/versioned_feature_list.yaml +++ b/test/featuregates_linter/test_data/versioned_feature_list.yaml @@ -1302,6 +1302,10 @@ lockToDefault: false preRelease: Beta version: "1.30" + - default: true + lockToDefault: false + preRelease: Deprecated + version: "1.33" - name: StorageVersionAPI versionedSpecs: - default: false