Merge pull request #50175 from foxish/update-strategies

Automatic merge from submit-queue

Change default update strategy to rolling update

Fixes https://github.com/kubernetes/kubernetes/issues/49604
Change default update strategy to rolling update for daemonset and statefulset in v1beta2

cc @kubernetes/sig-apps-pr-reviews @lukaszo @kargakis 

**Release note**:

```release-note
Make rolling update the default update strategy for v1beta2.DaemonSet and v1beta2.StatefulSet
```
This commit is contained in:
Kubernetes Submit Queue 2017-08-09 00:00:21 -07:00 committed by GitHub
commit 3d91ba577d
8 changed files with 181 additions and 31 deletions

View File

@ -51767,7 +51767,7 @@
"$ref": "#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateDaemonSet" "$ref": "#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateDaemonSet"
}, },
"type": { "type": {
"description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete.", "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.",
"type": "string" "type": "string"
} }
} }
@ -52163,7 +52163,7 @@
"description": "WIP: This is not ready to be used and we plan to make breaking changes to it. RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", "description": "WIP: This is not ready to be used and we plan to make breaking changes to it. RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.",
"properties": { "properties": {
"partition": { "partition": {
"description": "Partition indicates the ordinal at which the StatefulSet should be partitioned.", "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.",
"type": "integer", "type": "integer",
"format": "int32" "format": "int32"
} }
@ -52393,7 +52393,7 @@
"$ref": "#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateStatefulSetStrategy" "$ref": "#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateStatefulSetStrategy"
}, },
"type": { "type": {
"description": "Type indicates the type of the StatefulSetUpdateStrategy.", "description": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.",
"type": "string" "type": "string"
} }
} }

View File

@ -6985,7 +6985,7 @@
"properties": { "properties": {
"type": { "type": {
"type": "string", "type": "string",
"description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete." "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate."
}, },
"rollingUpdate": { "rollingUpdate": {
"$ref": "v1beta2.RollingUpdateDaemonSet", "$ref": "v1beta2.RollingUpdateDaemonSet",
@ -7730,7 +7730,7 @@
"properties": { "properties": {
"type": { "type": {
"type": "string", "type": "string",
"description": "Type indicates the type of the StatefulSetUpdateStrategy." "description": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate."
}, },
"rollingUpdate": { "rollingUpdate": {
"$ref": "v1beta2.RollingUpdateStatefulSetStrategy", "$ref": "v1beta2.RollingUpdateStatefulSetStrategy",
@ -7745,7 +7745,7 @@
"partition": { "partition": {
"type": "integer", "type": "integer",
"format": "int32", "format": "int32",
"description": "Partition indicates the ordinal at which the StatefulSet should be partitioned." "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0."
} }
} }
}, },

View File

@ -2188,7 +2188,7 @@ When an object is created, the system will populate this list with the current s
<tbody> <tbody>
<tr> <tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">partition</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">partition</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Partition indicates the ordinal at which the StatefulSet should be partitioned.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer (int32)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">integer (int32)</p></td>
<td class="tableblock halign-left valign-top"></td> <td class="tableblock halign-left valign-top"></td>
@ -6999,7 +6999,7 @@ Examples:<br>
<tbody> <tbody>
<tr> <tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is OnDelete.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td> <td class="tableblock halign-left valign-top"></td>
@ -7229,7 +7229,7 @@ Examples:<br>
<tbody> <tbody>
<tr> <tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Type indicates the type of the StatefulSetUpdateStrategy.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td> <td class="tableblock halign-left valign-top"></td>

View File

@ -43,7 +43,7 @@ func SetDefaults_DaemonSet(obj *appsv1beta2.DaemonSet) {
} }
updateStrategy := &obj.Spec.UpdateStrategy updateStrategy := &obj.Spec.UpdateStrategy
if updateStrategy.Type == "" { if updateStrategy.Type == "" {
updateStrategy.Type = appsv1beta2.OnDeleteDaemonSetStrategyType updateStrategy.Type = appsv1beta2.RollingUpdateDaemonSetStrategyType
} }
if updateStrategy.Type == appsv1beta2.RollingUpdateDaemonSetStrategyType { if updateStrategy.Type == appsv1beta2.RollingUpdateDaemonSetStrategyType {
if updateStrategy.RollingUpdate == nil { if updateStrategy.RollingUpdate == nil {
@ -68,8 +68,19 @@ func SetDefaults_StatefulSet(obj *appsv1beta2.StatefulSet) {
} }
if obj.Spec.UpdateStrategy.Type == "" { if obj.Spec.UpdateStrategy.Type == "" {
obj.Spec.UpdateStrategy.Type = appsv1beta2.OnDeleteStatefulSetStrategyType obj.Spec.UpdateStrategy.Type = appsv1beta2.RollingUpdateStatefulSetStrategyType
// UpdateStrategy.RollingUpdate will take default values below.
obj.Spec.UpdateStrategy.RollingUpdate = &appsv1beta2.RollingUpdateStatefulSetStrategy{}
} }
if obj.Spec.UpdateStrategy.Type == appsv1beta2.RollingUpdateStatefulSetStrategyType &&
obj.Spec.UpdateStrategy.RollingUpdate != nil &&
obj.Spec.UpdateStrategy.RollingUpdate.Partition == nil {
obj.Spec.UpdateStrategy.RollingUpdate.Partition = new(int32)
*obj.Spec.UpdateStrategy.RollingUpdate.Partition = 0
}
labels := obj.Spec.Template.Labels labels := obj.Spec.Template.Labels
if labels != nil { if labels != nil {
if obj.Spec.Selector == nil { if obj.Spec.Selector == nil {
@ -89,13 +100,6 @@ func SetDefaults_StatefulSet(obj *appsv1beta2.StatefulSet) {
obj.Spec.RevisionHistoryLimit = new(int32) obj.Spec.RevisionHistoryLimit = new(int32)
*obj.Spec.RevisionHistoryLimit = 10 *obj.Spec.RevisionHistoryLimit = 10
} }
if obj.Spec.UpdateStrategy.Type == appsv1beta2.RollingUpdateStatefulSetStrategyType &&
obj.Spec.UpdateStrategy.RollingUpdate != nil &&
obj.Spec.UpdateStrategy.RollingUpdate.Partition == nil {
obj.Spec.UpdateStrategy.RollingUpdate.Partition = new(int32)
*obj.Spec.UpdateStrategy.RollingUpdate.Partition = 0
}
} }
// SetDefaults_Deployment sets additional defaults compared to its counterpart // SetDefaults_Deployment sets additional defaults compared to its counterpart

View File

@ -21,7 +21,6 @@ import (
"testing" "testing"
appsv1beta2 "k8s.io/api/apps/v1beta2" appsv1beta2 "k8s.io/api/apps/v1beta2"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
apiequality "k8s.io/apimachinery/pkg/api/equality" apiequality "k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
@ -36,6 +35,7 @@ import (
func TestSetDefaultDaemonSetSpec(t *testing.T) { func TestSetDefaultDaemonSetSpec(t *testing.T) {
defaultLabels := map[string]string{"foo": "bar"} defaultLabels := map[string]string{"foo": "bar"}
maxUnavailable := intstr.FromInt(1)
period := int64(v1.DefaultTerminationGracePeriodSeconds) period := int64(v1.DefaultTerminationGracePeriodSeconds)
defaultTemplate := v1.PodTemplateSpec{ defaultTemplate := v1.PodTemplateSpec{
Spec: v1.PodSpec{ Spec: v1.PodSpec{
@ -78,7 +78,10 @@ func TestSetDefaultDaemonSetSpec(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{ UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
Type: appsv1beta2.OnDeleteDaemonSetStrategyType, Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
RollingUpdate: &appsv1beta2.RollingUpdateDaemonSet{
MaxUnavailable: &maxUnavailable,
},
}, },
RevisionHistoryLimit: newInt32(10), RevisionHistoryLimit: newInt32(10),
}, },
@ -108,14 +111,24 @@ func TestSetDefaultDaemonSetSpec(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{ UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
Type: appsv1beta2.OnDeleteDaemonSetStrategyType, Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
RollingUpdate: &appsv1beta2.RollingUpdateDaemonSet{
MaxUnavailable: &maxUnavailable,
},
}, },
RevisionHistoryLimit: newInt32(1), RevisionHistoryLimit: newInt32(1),
}, },
}, },
}, },
{ // Update strategy. { // OnDeleteDaemonSetStrategyType update strategy.
original: &appsv1beta2.DaemonSet{}, original: &appsv1beta2.DaemonSet{
Spec: appsv1beta2.DaemonSetSpec{
Template: templateNoLabel,
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
Type: appsv1beta2.OnDeleteDaemonSetStrategyType,
},
},
},
expected: &appsv1beta2.DaemonSet{ expected: &appsv1beta2.DaemonSet{
Spec: appsv1beta2.DaemonSetSpec{ Spec: appsv1beta2.DaemonSetSpec{
Template: templateNoLabel, Template: templateNoLabel,
@ -134,7 +147,10 @@ func TestSetDefaultDaemonSetSpec(t *testing.T) {
Spec: appsv1beta2.DaemonSetSpec{ Spec: appsv1beta2.DaemonSetSpec{
Template: templateNoLabel, Template: templateNoLabel,
UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{ UpdateStrategy: appsv1beta2.DaemonSetUpdateStrategy{
Type: appsv1beta2.OnDeleteDaemonSetStrategyType, Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
RollingUpdate: &appsv1beta2.RollingUpdateDaemonSet{
MaxUnavailable: &maxUnavailable,
},
}, },
RevisionHistoryLimit: newInt32(10), RevisionHistoryLimit: newInt32(10),
}, },
@ -157,6 +173,128 @@ func TestSetDefaultDaemonSetSpec(t *testing.T) {
} }
} }
func TestSetDefaultStatefulSet(t *testing.T) {
defaultLabels := map[string]string{"foo": "bar"}
var defaultPartition int32 = 0
var defaultReplicas int32 = 1
period := int64(v1.DefaultTerminationGracePeriodSeconds)
defaultTemplate := v1.PodTemplateSpec{
Spec: v1.PodSpec{
DNSPolicy: v1.DNSClusterFirst,
RestartPolicy: v1.RestartPolicyAlways,
SecurityContext: &v1.PodSecurityContext{},
TerminationGracePeriodSeconds: &period,
SchedulerName: api.DefaultSchedulerName,
},
ObjectMeta: metav1.ObjectMeta{
Labels: defaultLabels,
},
}
tests := []struct {
original *appsv1beta2.StatefulSet
expected *appsv1beta2.StatefulSet
}{
{ // Selector, labels and default update strategy
original: &appsv1beta2.StatefulSet{
Spec: appsv1beta2.StatefulSetSpec{
Template: defaultTemplate,
},
},
expected: &appsv1beta2.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Labels: defaultLabels,
},
Spec: appsv1beta2.StatefulSetSpec{
Selector: &metav1.LabelSelector{
MatchLabels: defaultLabels,
},
Replicas: &defaultReplicas,
Template: defaultTemplate,
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
UpdateStrategy: appsv1beta2.StatefulSetUpdateStrategy{
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
RollingUpdate: &appsv1beta2.RollingUpdateStatefulSetStrategy{
Partition: &defaultPartition,
},
},
RevisionHistoryLimit: newInt32(10),
},
},
},
{ // Alternate update strategy
original: &appsv1beta2.StatefulSet{
Spec: appsv1beta2.StatefulSetSpec{
Template: defaultTemplate,
UpdateStrategy: appsv1beta2.StatefulSetUpdateStrategy{
Type: appsv1beta2.OnDeleteStatefulSetStrategyType,
},
},
},
expected: &appsv1beta2.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Labels: defaultLabels,
},
Spec: appsv1beta2.StatefulSetSpec{
Selector: &metav1.LabelSelector{
MatchLabels: defaultLabels,
},
Replicas: &defaultReplicas,
Template: defaultTemplate,
PodManagementPolicy: appsv1beta2.OrderedReadyPodManagement,
UpdateStrategy: appsv1beta2.StatefulSetUpdateStrategy{
Type: appsv1beta2.OnDeleteStatefulSetStrategyType,
},
RevisionHistoryLimit: newInt32(10),
},
},
},
{ // Parallel pod management policy.
original: &appsv1beta2.StatefulSet{
Spec: appsv1beta2.StatefulSetSpec{
Template: defaultTemplate,
PodManagementPolicy: appsv1beta2.ParallelPodManagement,
},
},
expected: &appsv1beta2.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Labels: defaultLabels,
},
Spec: appsv1beta2.StatefulSetSpec{
Selector: &metav1.LabelSelector{
MatchLabels: defaultLabels,
},
Replicas: &defaultReplicas,
Template: defaultTemplate,
PodManagementPolicy: appsv1beta2.ParallelPodManagement,
UpdateStrategy: appsv1beta2.StatefulSetUpdateStrategy{
Type: appsv1beta2.RollingUpdateStatefulSetStrategyType,
RollingUpdate: &appsv1beta2.RollingUpdateStatefulSetStrategy{
Partition: &defaultPartition,
},
},
RevisionHistoryLimit: newInt32(10),
},
},
},
}
for i, test := range tests {
original := test.original
expected := test.expected
obj2 := roundTrip(t, runtime.Object(original))
got, ok := obj2.(*appsv1beta2.StatefulSet)
if !ok {
t.Errorf("(%d) unexpected object: %v", i, got)
t.FailNow()
}
if !apiequality.Semantic.DeepEqual(got.Spec, expected.Spec) {
t.Errorf("(%d) got different than expected\ngot:\n\t%+v\nexpected:\n\t%+v", i, got.Spec, expected.Spec)
}
}
}
func TestSetDefaultDeployment(t *testing.T) { func TestSetDefaultDeployment(t *testing.T) {
defaultIntOrString := intstr.FromString("25%") defaultIntOrString := intstr.FromString("25%")
differentIntOrString := intstr.FromInt(5) differentIntOrString := intstr.FromInt(5)

View File

@ -157,8 +157,7 @@ message DaemonSetStatus {
// WIP: This is not ready to be used and we plan to make breaking changes to it. // WIP: This is not ready to be used and we plan to make breaking changes to it.
message DaemonSetUpdateStrategy { message DaemonSetUpdateStrategy {
// Type of daemon set update. Can be "RollingUpdate" or "OnDelete". // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.
// Default is OnDelete.
// +optional // +optional
optional string type = 1; optional string type = 1;
@ -496,6 +495,8 @@ message RollingUpdateDeployment {
message RollingUpdateStatefulSetStrategy { message RollingUpdateStatefulSetStrategy {
// Partition indicates the ordinal at which the StatefulSet should be // Partition indicates the ordinal at which the StatefulSet should be
// partitioned. // partitioned.
// Default value is 0.
// +optional
optional int32 partition = 1; optional int32 partition = 1;
} }
@ -673,9 +674,12 @@ message StatefulSetStatus {
// necessary to perform the update for the indicated strategy. // necessary to perform the update for the indicated strategy.
message StatefulSetUpdateStrategy { message StatefulSetUpdateStrategy {
// Type indicates the type of the StatefulSetUpdateStrategy. // Type indicates the type of the StatefulSetUpdateStrategy.
// Default is RollingUpdate.
// +optional
optional string type = 1; optional string type = 1;
// RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.
// +optional
optional RollingUpdateStatefulSetStrategy rollingUpdate = 2; optional RollingUpdateStatefulSetStrategy rollingUpdate = 2;
} }

View File

@ -123,8 +123,11 @@ const (
// necessary to perform the update for the indicated strategy. // necessary to perform the update for the indicated strategy.
type StatefulSetUpdateStrategy struct { type StatefulSetUpdateStrategy struct {
// Type indicates the type of the StatefulSetUpdateStrategy. // Type indicates the type of the StatefulSetUpdateStrategy.
// Default is RollingUpdate.
// +optional
Type StatefulSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetStrategyType"` Type StatefulSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetStrategyType"`
// RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.
// +optional
RollingUpdate *RollingUpdateStatefulSetStrategy `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` RollingUpdate *RollingUpdateStatefulSetStrategy `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"`
} }
@ -152,6 +155,8 @@ const (
type RollingUpdateStatefulSetStrategy struct { type RollingUpdateStatefulSetStrategy struct {
// Partition indicates the ordinal at which the StatefulSet should be // Partition indicates the ordinal at which the StatefulSet should be
// partitioned. // partitioned.
// Default value is 0.
// +optional
Partition *int32 `json:"partition,omitempty" protobuf:"varint,1,opt,name=partition"` Partition *int32 `json:"partition,omitempty" protobuf:"varint,1,opt,name=partition"`
} }
@ -479,8 +484,7 @@ type DeploymentList struct {
// WIP: This is not ready to be used and we plan to make breaking changes to it. // WIP: This is not ready to be used and we plan to make breaking changes to it.
type DaemonSetUpdateStrategy struct { type DaemonSetUpdateStrategy struct {
// Type of daemon set update. Can be "RollingUpdate" or "OnDelete". // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.
// Default is OnDelete.
// +optional // +optional
Type DaemonSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` Type DaemonSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"`

View File

@ -81,7 +81,7 @@ func (DaemonSetStatus) SwaggerDoc() map[string]string {
var map_DaemonSetUpdateStrategy = map[string]string{ var map_DaemonSetUpdateStrategy = map[string]string{
"": "WIP: This is not ready to be used and we plan to make breaking changes to it.", "": "WIP: This is not ready to be used and we plan to make breaking changes to it.",
"type": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete.", "type": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.",
"rollingUpdate": "Rolling update config params. Present only if type = \"RollingUpdate\".", "rollingUpdate": "Rolling update config params. Present only if type = \"RollingUpdate\".",
} }
@ -247,7 +247,7 @@ func (RollingUpdateDeployment) SwaggerDoc() map[string]string {
var map_RollingUpdateStatefulSetStrategy = map[string]string{ var map_RollingUpdateStatefulSetStrategy = map[string]string{
"": "WIP: This is not ready to be used and we plan to make breaking changes to it. RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", "": "WIP: This is not ready to be used and we plan to make breaking changes to it. RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.",
"partition": "Partition indicates the ordinal at which the StatefulSet should be partitioned.", "partition": "Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.",
} }
func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string { func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string {
@ -336,7 +336,7 @@ func (StatefulSetStatus) SwaggerDoc() map[string]string {
var map_StatefulSetUpdateStrategy = map[string]string{ var map_StatefulSetUpdateStrategy = map[string]string{
"": "WIP: This is not ready to be used and we plan to make breaking changes to it. StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", "": "WIP: This is not ready to be used and we plan to make breaking changes to it. StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.",
"type": "Type indicates the type of the StatefulSetUpdateStrategy.", "type": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.",
"rollingUpdate": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", "rollingUpdate": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.",
} }