@@ -17,6 +17,8 @@ limitations under the License.
17
17
package features
18
18
19
19
import (
20
+ "k8s.io/apimachinery/pkg/util/runtime"
21
+ "k8s.io/apimachinery/pkg/util/version"
20
22
utilfeature "k8s.io/apiserver/pkg/util/feature"
21
23
"k8s.io/component-base/featuregate"
22
24
)
@@ -30,27 +32,39 @@ const (
30
32
31
33
// owner: @alexzielenski
32
34
// alpha: v1.28
35
+ // beta: v1.30
33
36
//
34
37
// Ignores errors raised on unchanged fields of Custom Resources
35
38
// across UPDATE/PATCH requests.
36
39
CRDValidationRatcheting featuregate.Feature = "CRDValidationRatcheting"
37
40
38
41
// owner: @jpbetz
39
42
// alpha: v1.30
43
+ // beta: v1.31
44
+ // ga: v1.32
40
45
//
41
46
// CustomResourceDefinitions may include SelectableFields to declare which fields
42
47
// may be used as field selectors.
43
48
CustomResourceFieldSelectors featuregate.Feature = "CustomResourceFieldSelectors"
44
49
)
45
50
46
51
func init () {
47
- utilfeature .DefaultMutableFeatureGate .Add ( defaultKubernetesFeatureGates )
52
+ runtime . Must ( utilfeature .DefaultMutableFeatureGate .AddVersioned ( defaultVersionedKubernetesFeatureGates ) )
48
53
}
49
54
50
- // defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys.
51
- // To add a new feature, define a key for it above and add it here . The features will be
55
+ // defaultVersionedKubernetesFeatureGates consists of all known Kubernetes-specific feature keys with VersionedSpecs .
56
+ // To add a new feature, define a key for it above and add it below . The features will be
52
57
// available throughout Kubernetes binaries.
53
- var defaultKubernetesFeatureGates = map [featuregate.Feature ]featuregate.FeatureSpec {
54
- CRDValidationRatcheting : {Default : true , PreRelease : featuregate .Beta },
55
- CustomResourceFieldSelectors : {Default : true , PreRelease : featuregate .Beta },
58
+ // To support n-3 compatibility version, features may only be removed 3 releases after graduation.
59
+ //
60
+ // Entries are alphabetized.
61
+ var defaultVersionedKubernetesFeatureGates = map [featuregate.Feature ]featuregate.VersionedSpecs {
62
+ CRDValidationRatcheting : {
63
+ {Version : version .MustParse ("1.28" ), Default : false , PreRelease : featuregate .Alpha },
64
+ {Version : version .MustParse ("1.30" ), Default : true , PreRelease : featuregate .Beta },
65
+ },
66
+ CustomResourceFieldSelectors : {
67
+ {Version : version .MustParse ("1.30" ), Default : false , PreRelease : featuregate .Alpha },
68
+ {Version : version .MustParse ("1.31" ), Default : true , PreRelease : featuregate .Beta },
69
+ },
56
70
}
0 commit comments