k8s.io/kubernetes@v1.29.3/pkg/apis/apps/v1beta2/defaults.go (about) 1 /* 2 Copyright 2016 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package v1beta2 18 19 import ( 20 appsv1beta2 "k8s.io/api/apps/v1beta2" 21 "k8s.io/apimachinery/pkg/runtime" 22 "k8s.io/apimachinery/pkg/util/intstr" 23 utilfeature "k8s.io/apiserver/pkg/util/feature" 24 "k8s.io/kubernetes/pkg/features" 25 "k8s.io/utils/ptr" 26 ) 27 28 func addDefaultingFuncs(scheme *runtime.Scheme) error { 29 return RegisterDefaults(scheme) 30 } 31 32 func SetDefaults_DaemonSet(obj *appsv1beta2.DaemonSet) { 33 updateStrategy := &obj.Spec.UpdateStrategy 34 if updateStrategy.Type == "" { 35 updateStrategy.Type = appsv1beta2.RollingUpdateDaemonSetStrategyType 36 } 37 if updateStrategy.Type == appsv1beta2.RollingUpdateDaemonSetStrategyType { 38 if updateStrategy.RollingUpdate == nil { 39 rollingUpdate := appsv1beta2.RollingUpdateDaemonSet{} 40 updateStrategy.RollingUpdate = &rollingUpdate 41 } 42 if updateStrategy.RollingUpdate.MaxUnavailable == nil { 43 // Set default MaxUnavailable as 1 by default. 44 updateStrategy.RollingUpdate.MaxUnavailable = ptr.To(intstr.FromInt32(1)) 45 } 46 if updateStrategy.RollingUpdate.MaxSurge == nil { 47 // Set default MaxSurge as 0 by default. 48 updateStrategy.RollingUpdate.MaxSurge = ptr.To(intstr.FromInt32(0)) 49 } 50 } 51 if obj.Spec.RevisionHistoryLimit == nil { 52 obj.Spec.RevisionHistoryLimit = new(int32) 53 *obj.Spec.RevisionHistoryLimit = 10 54 } 55 } 56 57 func SetDefaults_StatefulSet(obj *appsv1beta2.StatefulSet) { 58 if len(obj.Spec.PodManagementPolicy) == 0 { 59 obj.Spec.PodManagementPolicy = appsv1beta2.OrderedReadyPodManagement 60 } 61 62 if obj.Spec.UpdateStrategy.Type == "" { 63 obj.Spec.UpdateStrategy.Type = appsv1beta2.RollingUpdateStatefulSetStrategyType 64 65 if obj.Spec.UpdateStrategy.RollingUpdate == nil { 66 // UpdateStrategy.RollingUpdate will take default values below. 67 obj.Spec.UpdateStrategy.RollingUpdate = &appsv1beta2.RollingUpdateStatefulSetStrategy{} 68 } 69 } 70 71 if obj.Spec.UpdateStrategy.Type == appsv1beta2.RollingUpdateStatefulSetStrategyType && 72 obj.Spec.UpdateStrategy.RollingUpdate != nil { 73 74 if obj.Spec.UpdateStrategy.RollingUpdate.Partition == nil { 75 obj.Spec.UpdateStrategy.RollingUpdate.Partition = ptr.To[int32](0) 76 } 77 if utilfeature.DefaultFeatureGate.Enabled(features.MaxUnavailableStatefulSet) { 78 if obj.Spec.UpdateStrategy.RollingUpdate.MaxUnavailable == nil { 79 obj.Spec.UpdateStrategy.RollingUpdate.MaxUnavailable = ptr.To(intstr.FromInt32(1)) 80 } 81 } 82 } 83 84 if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetAutoDeletePVC) { 85 if obj.Spec.PersistentVolumeClaimRetentionPolicy == nil { 86 obj.Spec.PersistentVolumeClaimRetentionPolicy = &appsv1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy{} 87 } 88 if len(obj.Spec.PersistentVolumeClaimRetentionPolicy.WhenDeleted) == 0 { 89 obj.Spec.PersistentVolumeClaimRetentionPolicy.WhenDeleted = appsv1beta2.RetainPersistentVolumeClaimRetentionPolicyType 90 } 91 if len(obj.Spec.PersistentVolumeClaimRetentionPolicy.WhenScaled) == 0 { 92 obj.Spec.PersistentVolumeClaimRetentionPolicy.WhenScaled = appsv1beta2.RetainPersistentVolumeClaimRetentionPolicyType 93 } 94 } 95 96 if obj.Spec.Replicas == nil { 97 obj.Spec.Replicas = new(int32) 98 *obj.Spec.Replicas = 1 99 } 100 if obj.Spec.RevisionHistoryLimit == nil { 101 obj.Spec.RevisionHistoryLimit = new(int32) 102 *obj.Spec.RevisionHistoryLimit = 10 103 } 104 } 105 106 // SetDefaults_Deployment sets additional defaults compared to its counterpart 107 // in extensions. These addons are: 108 // - MaxUnavailable during rolling update set to 25% (1 in extensions) 109 // - MaxSurge value during rolling update set to 25% (1 in extensions) 110 // - RevisionHistoryLimit set to 10 (not set in extensions) 111 // - ProgressDeadlineSeconds set to 600s (not set in extensions) 112 func SetDefaults_Deployment(obj *appsv1beta2.Deployment) { 113 // Set appsv1beta2.DeploymentSpec.Replicas to 1 if it is not set. 114 if obj.Spec.Replicas == nil { 115 obj.Spec.Replicas = new(int32) 116 *obj.Spec.Replicas = 1 117 } 118 strategy := &obj.Spec.Strategy 119 // Set default appsv1beta2.DeploymentStrategyType as RollingUpdate. 120 if strategy.Type == "" { 121 strategy.Type = appsv1beta2.RollingUpdateDeploymentStrategyType 122 } 123 if strategy.Type == appsv1beta2.RollingUpdateDeploymentStrategyType { 124 if strategy.RollingUpdate == nil { 125 rollingUpdate := appsv1beta2.RollingUpdateDeployment{} 126 strategy.RollingUpdate = &rollingUpdate 127 } 128 if strategy.RollingUpdate.MaxUnavailable == nil { 129 // Set default MaxUnavailable as 25% by default. 130 maxUnavailable := intstr.FromString("25%") 131 strategy.RollingUpdate.MaxUnavailable = &maxUnavailable 132 } 133 if strategy.RollingUpdate.MaxSurge == nil { 134 // Set default MaxSurge as 25% by default. 135 maxSurge := intstr.FromString("25%") 136 strategy.RollingUpdate.MaxSurge = &maxSurge 137 } 138 } 139 if obj.Spec.RevisionHistoryLimit == nil { 140 obj.Spec.RevisionHistoryLimit = new(int32) 141 *obj.Spec.RevisionHistoryLimit = 10 142 } 143 if obj.Spec.ProgressDeadlineSeconds == nil { 144 obj.Spec.ProgressDeadlineSeconds = new(int32) 145 *obj.Spec.ProgressDeadlineSeconds = 600 146 } 147 } 148 149 func SetDefaults_ReplicaSet(obj *appsv1beta2.ReplicaSet) { 150 if obj.Spec.Replicas == nil { 151 obj.Spec.Replicas = new(int32) 152 *obj.Spec.Replicas = 1 153 } 154 }