mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 01:40:13 +00:00
Graduate StatefulSetAutoDelete to beta
Change-Id: Iee385580d313c69fbb8a893eb5c165aa0b75725d
This commit is contained in:
parent
ead7d66ee1
commit
1d6df8233c
@ -230,7 +230,7 @@ type StatefulSetSpec struct {
|
|||||||
|
|
||||||
// PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
|
// PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
|
||||||
// the StatefulSet VolumeClaimTemplates. This requires the
|
// 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
|
// +optional
|
||||||
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy
|
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy
|
||||||
|
|
||||||
|
@ -209,6 +209,7 @@ func TestSetDefaultStatefulSet(t *testing.T) {
|
|||||||
original *appsv1beta2.StatefulSet
|
original *appsv1beta2.StatefulSet
|
||||||
expected *appsv1beta2.StatefulSet
|
expected *appsv1beta2.StatefulSet
|
||||||
enableMaxUnavailablePolicy bool
|
enableMaxUnavailablePolicy bool
|
||||||
|
enableStatefulSetAutoDelete bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "labels and default update strategy",
|
name: "labels and default update strategy",
|
||||||
@ -441,12 +442,43 @@ func TestSetDefaultStatefulSet(t *testing.T) {
|
|||||||
},
|
},
|
||||||
enableMaxUnavailablePolicy: true,
|
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 {
|
for _, test := range tests {
|
||||||
test := test
|
test := test
|
||||||
t.Run(test.name, func(t *testing.T) {
|
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.MaxUnavailableStatefulSet, test.enableMaxUnavailablePolicy)()
|
||||||
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetAutoDeletePVC, test.enableStatefulSetAutoDelete)()
|
||||||
obj2 := roundTrip(t, runtime.Object(test.original))
|
obj2 := roundTrip(t, runtime.Object(test.original))
|
||||||
got, ok := obj2.(*appsv1beta2.StatefulSet)
|
got, ok := obj2.(*appsv1beta2.StatefulSet)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -750,6 +750,7 @@ const (
|
|||||||
|
|
||||||
// owner: @mattcary
|
// owner: @mattcary
|
||||||
// alpha: v1.22
|
// alpha: v1.22
|
||||||
|
// beta: v1.27
|
||||||
//
|
//
|
||||||
// Enables policies controlling deletion of PVCs created by a StatefulSet.
|
// Enables policies controlling deletion of PVCs created by a StatefulSet.
|
||||||
StatefulSetAutoDeletePVC featuregate.Feature = "StatefulSetAutoDeletePVC"
|
StatefulSetAutoDeletePVC featuregate.Feature = "StatefulSetAutoDeletePVC"
|
||||||
@ -1068,7 +1069,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
StableLoadBalancerNodeSet: {Default: true, PreRelease: featuregate.Beta},
|
StableLoadBalancerNodeSet: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
StatefulSetAutoDeletePVC: {Default: false, PreRelease: featuregate.Alpha},
|
StatefulSetAutoDeletePVC: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
StatefulSetStartOrdinal: {Default: true, PreRelease: featuregate.Beta},
|
StatefulSetStartOrdinal: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
|
@ -1463,6 +1463,13 @@ items:
|
|||||||
- create
|
- create
|
||||||
- patch
|
- patch
|
||||||
- update
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- persistentvolumeclaims
|
||||||
|
verbs:
|
||||||
|
- delete
|
||||||
|
- update
|
||||||
- apiVersion: rbac.authorization.k8s.io/v1
|
- apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
metadata:
|
metadata:
|
||||||
|
@ -1214,7 +1214,7 @@ var _ = SIGDescribe("StatefulSet", func() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.Describe("Non-retain StatefulSetPersistentVolumeClaimPolicy [Feature:StatefulSetAutoDeletePVC]", func() {
|
ginkgo.Describe("Non-retain StatefulSetPersistentVolumeClaimPolicy", func() {
|
||||||
ssName := "ss"
|
ssName := "ss"
|
||||||
labels := map[string]string{
|
labels := map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
@ -1320,7 +1320,7 @@ var _ = SIGDescribe("StatefulSet", func() {
|
|||||||
framework.ExpectNoError(err)
|
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)
|
e2epv.SkipIfNoDefaultStorageClass(ctx, c)
|
||||||
ginkgo.By("Creating statefulset " + ssName + " in namespace " + ns)
|
ginkgo.By("Creating statefulset " + ssName + " in namespace " + ns)
|
||||||
*(ss.Spec.Replicas) = 3
|
*(ss.Spec.Replicas) = 3
|
||||||
|
Loading…
Reference in New Issue
Block a user