mirror of
https://github.com/rancher/rke.git
synced 2025-09-17 07:30:01 +00:00
Parse updateStrategy, replicas and autoscaler fields
This commit is contained in:
@@ -16,8 +16,10 @@ import (
|
||||
"github.com/rancher/rke/util"
|
||||
v3 "github.com/rancher/types/apis/management.cattle.io/v3"
|
||||
"github.com/sirupsen/logrus"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
apiserverv1alpha1 "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
|
||||
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
|
||||
)
|
||||
@@ -83,6 +85,24 @@ const (
|
||||
DefaultNodeDrainIgnoreDaemonsets = true
|
||||
)
|
||||
|
||||
var (
|
||||
DefaultDaemonSetMaxUnavailable = intstr.FromInt(1)
|
||||
DefaultDeploymentUpdateStrategyParams = intstr.FromString("25%")
|
||||
DefaultDaemonSetUpdateStrategy = appsv1.DaemonSetUpdateStrategy{
|
||||
Type: appsv1.RollingUpdateDaemonSetStrategyType,
|
||||
RollingUpdate: &appsv1.RollingUpdateDaemonSet{MaxUnavailable: &DefaultDaemonSetMaxUnavailable},
|
||||
}
|
||||
DefaultDeploymentUpdateStrategy = appsv1.DeploymentStrategy{
|
||||
Type: appsv1.RollingUpdateDeploymentStrategyType,
|
||||
RollingUpdate: &appsv1.RollingUpdateDeployment{
|
||||
MaxUnavailable: &DefaultDeploymentUpdateStrategyParams,
|
||||
MaxSurge: &DefaultDeploymentUpdateStrategyParams,
|
||||
},
|
||||
}
|
||||
DefaultClusterProportionalAutoscalerLinearParams = v3.LinearAutoscalerParams{CoresPerReplica: 128, NodesPerReplica: 4, Min: 1, PreventSinglePointFailure: true}
|
||||
DefaultMonitoringAddonReplicas = int32(1)
|
||||
)
|
||||
|
||||
type ExternalFlags struct {
|
||||
CertificateDir string
|
||||
ClusterFilePath string
|
||||
@@ -194,7 +214,7 @@ func (c *Cluster) setClusterDefaults(ctx context.Context, flags ExternalFlags) e
|
||||
c.setClusterNetworkDefaults()
|
||||
c.setClusterAuthnDefaults()
|
||||
c.setNodeUpgradeStrategy()
|
||||
|
||||
c.setAddonsDefaults()
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -568,3 +588,42 @@ func GetExternalFlags(local, updateOnly, disablePortCheck bool, configDir, clust
|
||||
ClusterFilePath: clusterFilePath,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Cluster) setAddonsDefaults() {
|
||||
c.Ingress.UpdateStrategy = setDaemonsetAddonDefaults(c.Ingress.UpdateStrategy)
|
||||
c.Network.UpdateStrategy = setDaemonsetAddonDefaults(c.Network.UpdateStrategy)
|
||||
c.DNS.UpdateStrategy = setDeploymentAddonDefaults(c.DNS.UpdateStrategy)
|
||||
if c.DNS.LinearAutoscalerParams == nil {
|
||||
c.DNS.LinearAutoscalerParams = &DefaultClusterProportionalAutoscalerLinearParams
|
||||
}
|
||||
c.Monitoring.UpdateStrategy = setDeploymentAddonDefaults(c.Monitoring.UpdateStrategy)
|
||||
if c.Monitoring.Replicas == nil {
|
||||
c.Monitoring.Replicas = &DefaultMonitoringAddonReplicas
|
||||
}
|
||||
}
|
||||
|
||||
func setDaemonsetAddonDefaults(updateStrategy *appsv1.DaemonSetUpdateStrategy) *appsv1.DaemonSetUpdateStrategy {
|
||||
if updateStrategy != nil && updateStrategy.Type != appsv1.RollingUpdateDaemonSetStrategyType {
|
||||
return updateStrategy
|
||||
}
|
||||
if updateStrategy == nil || updateStrategy.RollingUpdate == nil || updateStrategy.RollingUpdate.MaxUnavailable == nil {
|
||||
return &DefaultDaemonSetUpdateStrategy
|
||||
}
|
||||
return updateStrategy
|
||||
}
|
||||
|
||||
func setDeploymentAddonDefaults(updateStrategy *appsv1.DeploymentStrategy) *appsv1.DeploymentStrategy {
|
||||
if updateStrategy != nil && updateStrategy.Type != appsv1.RollingUpdateDeploymentStrategyType {
|
||||
return updateStrategy
|
||||
}
|
||||
if updateStrategy == nil || updateStrategy.RollingUpdate == nil {
|
||||
return &DefaultDeploymentUpdateStrategy
|
||||
}
|
||||
if updateStrategy.RollingUpdate.MaxUnavailable == nil {
|
||||
updateStrategy.RollingUpdate.MaxUnavailable = &DefaultDeploymentUpdateStrategyParams
|
||||
}
|
||||
if updateStrategy.RollingUpdate.MaxSurge == nil {
|
||||
updateStrategy.RollingUpdate.MaxSurge = &DefaultDeploymentUpdateStrategyParams
|
||||
}
|
||||
return updateStrategy
|
||||
}
|
||||
|
Reference in New Issue
Block a user