...

Source file src/k8s.io/kubernetes/pkg/apis/apps/v1beta2/defaults.go

Documentation: k8s.io/kubernetes/pkg/apis/apps/v1beta2

     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  }
   155  

View as plain text