Graduate StatefulSetAutoDelete to beta

Change-Id: Iee385580d313c69fbb8a893eb5c165aa0b75725d
This commit is contained in:
Matthew Cary 2023-03-11 15:12:45 -08:00
parent ead7d66ee1
commit 1d6df8233c
5 changed files with 48 additions and 8 deletions

View File

@ -230,7 +230,7 @@ type StatefulSetSpec struct {
// PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
// the StatefulSet VolumeClaimTemplates. This requires the
// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
// StatefulSetAutoDeletePVC feature gate to be enabled, which is beta and default on from 1.27.
// +optional
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy

View File

@ -209,6 +209,7 @@ func TestSetDefaultStatefulSet(t *testing.T) {
original *appsv1beta2.StatefulSet
expected *appsv1beta2.StatefulSet
enableMaxUnavailablePolicy bool
enableStatefulSetAutoDelete bool
}{
{
name: "labels and default update strategy",
@ -441,12 +442,43 @@ func TestSetDefaultStatefulSet(t *testing.T) {
},
enableMaxUnavailablePolicy: true,
},
{
name: "StatefulSetAutoDeletePVC enabled",
original: &appsv1beta2.StatefulSet{
Spec: appsv1beta2.StatefulSetSpec{
Template: defaultTemplate,
},
},
expected: &appsv1beta2.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Labels: defaultLabels,
},
Spec: appsv1beta2.StatefulSetSpec{
Replicas: &defaultReplicas,
Template: defaultTemplate,
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
UpdateStrategy: appsv1beta2.StatefulSetUpdateStrategy{
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
RollingUpdate: &appsv1beta2.RollingUpdateStatefulSetStrategy{
Partition: &defaultPartition,
},
},
RevisionHistoryLimit: utilpointer.Int32(10),
PersistentVolumeClaimRetentionPolicy: &appsv1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy{
WhenDeleted: appsv1beta2.RetainPersistentVolumeClaimRetentionPolicyType,
WhenScaled: appsv1beta2.RetainPersistentVolumeClaimRetentionPolicyType,
},
},
},
enableStatefulSetAutoDelete: true,
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.MaxUnavailableStatefulSet, test.enableMaxUnavailablePolicy)()
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetAutoDeletePVC, test.enableStatefulSetAutoDelete)()
obj2 := roundTrip(t, runtime.Object(test.original))
got, ok := obj2.(*appsv1beta2.StatefulSet)
if !ok {

View File

@ -750,6 +750,7 @@ const (
// owner: @mattcary
// alpha: v1.22
// beta: v1.27
//
// Enables policies controlling deletion of PVCs created by a StatefulSet.
StatefulSetAutoDeletePVC featuregate.Feature = "StatefulSetAutoDeletePVC"
@ -1068,7 +1069,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
StableLoadBalancerNodeSet: {Default: true, PreRelease: featuregate.Beta},
StatefulSetAutoDeletePVC: {Default: false, PreRelease: featuregate.Alpha},
StatefulSetAutoDeletePVC: {Default: true, PreRelease: featuregate.Beta},
StatefulSetStartOrdinal: {Default: true, PreRelease: featuregate.Beta},

View File

@ -1463,6 +1463,13 @@ items:
- create
- patch
- update
- apiGroups:
- ""
resources:
- persistentvolumeclaims
verbs:
- delete
- update
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:

View File

@ -1214,7 +1214,7 @@ var _ = SIGDescribe("StatefulSet", func() {
}
})
ginkgo.Describe("Non-retain StatefulSetPersistentVolumeClaimPolicy [Feature:StatefulSetAutoDeletePVC]", func() {
ginkgo.Describe("Non-retain StatefulSetPersistentVolumeClaimPolicy", func() {
ssName := "ss"
labels := map[string]string{
"foo": "bar",
@ -1320,7 +1320,7 @@ var _ = SIGDescribe("StatefulSet", func() {
framework.ExpectNoError(err)
})
ginkgo.It("should delete PVCs after adopting pod (WhenScaled) [Feature:StatefulSetAutoDeletePVC]", func(ctx context.Context) {
ginkgo.It("should delete PVCs after adopting pod (WhenScaled)", func(ctx context.Context) {
e2epv.SkipIfNoDefaultStorageClass(ctx, c)
ginkgo.By("Creating statefulset " + ssName + " in namespace " + ns)
*(ss.Spec.Replicas) = 3