1
0
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:
rajashree
2019-11-19 16:42:59 -08:00
parent 92714e5523
commit 4e38cdf825
4 changed files with 179 additions and 11 deletions

View File

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