1
0
mirror of https://github.com/rancher/rke.git synced 2025-05-10 09:24:32 +00:00

Use v3 type for addons updateStrategy

This commit is contained in:
rajashree 2020-03-26 14:39:24 -07:00
parent 8363708320
commit 00f6567714
4 changed files with 61 additions and 31 deletions

View File

@ -289,7 +289,10 @@ func (c *Cluster) deployKubeDNS(ctx context.Context, data map[string]interface{}
ReverseCIDRs: c.DNS.ReverseCIDRs,
StubDomains: c.DNS.StubDomains,
NodeSelector: c.DNS.NodeSelector,
UpdateStrategy: c.DNS.UpdateStrategy,
UpdateStrategy: &appsv1.DeploymentStrategy{
Type: c.DNS.UpdateStrategy.Strategy,
RollingUpdate: c.DNS.UpdateStrategy.RollingUpdate,
},
}
linearModeBytes, err := json.Marshal(c.DNS.LinearAutoscalerParams)
if err != nil {
@ -322,7 +325,10 @@ func (c *Cluster) deployCoreDNS(ctx context.Context, data map[string]interface{}
UpstreamNameservers: c.DNS.UpstreamNameservers,
ReverseCIDRs: c.DNS.ReverseCIDRs,
NodeSelector: c.DNS.NodeSelector,
UpdateStrategy: c.DNS.UpdateStrategy,
UpdateStrategy: &appsv1.DeploymentStrategy{
Type: c.DNS.UpdateStrategy.Strategy,
RollingUpdate: c.DNS.UpdateStrategy.RollingUpdate,
},
}
linearModeBytes, err := json.Marshal(c.DNS.LinearAutoscalerParams)
if err != nil {
@ -372,8 +378,11 @@ func (c *Cluster) deployMetricServer(ctx context.Context, data map[string]interf
Options: c.Monitoring.Options,
NodeSelector: c.Monitoring.NodeSelector,
Version: util.GetTagMajorVersion(versionTag),
UpdateStrategy: c.Monitoring.UpdateStrategy,
Replicas: c.Monitoring.Replicas,
UpdateStrategy: &appsv1.DeploymentStrategy{
Type: c.Monitoring.UpdateStrategy.Strategy,
RollingUpdate: c.Monitoring.UpdateStrategy.RollingUpdate,
},
Replicas: c.Monitoring.Replicas,
}
tmplt, err := templates.GetVersionedTemplates(kdm.MetricsServer, data, c.Version)
if err != nil {
@ -531,7 +540,10 @@ func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}
ExtraEnvs: c.Ingress.ExtraEnvs,
ExtraVolumes: c.Ingress.ExtraVolumes,
ExtraVolumeMounts: c.Ingress.ExtraVolumeMounts,
UpdateStrategy: c.Ingress.UpdateStrategy,
UpdateStrategy: &appsv1.DaemonSetUpdateStrategy{
Type: c.Ingress.UpdateStrategy.Strategy,
RollingUpdate: c.Ingress.UpdateStrategy.RollingUpdate,
},
}
// since nginx ingress controller 0.16.0, it can be run as non-root and doesn't require privileged anymore.
// So we can use securityContext instead of setting privileges via initContainer.
@ -649,7 +661,12 @@ func (c *Cluster) deployNodelocal(ctx context.Context, data map[string]interface
ClusterDNSServer: c.ClusterDNSServer,
IPAddress: c.DNS.Nodelocal.IPAddress,
NodeSelector: c.DNS.Nodelocal.NodeSelector,
UpdateStrategy: c.DNS.Nodelocal.UpdateStrategy,
}
if c.DNS.Nodelocal.UpdateStrategy != nil {
NodelocalConfig.UpdateStrategy = &appsv1.DaemonSetUpdateStrategy{
Type: c.DNS.Nodelocal.UpdateStrategy.Strategy,
RollingUpdate: c.DNS.Nodelocal.UpdateStrategy.RollingUpdate,
}
}
tmplt, err := templates.GetVersionedTemplates(kdm.Nodelocal, data, c.Version)
if err != nil {

View File

@ -27,7 +27,6 @@ import (
"github.com/sirupsen/logrus"
"golang.org/x/sync/errgroup"
"gopkg.in/yaml.v2"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
@ -517,25 +516,26 @@ func parseIngressConfig(clusterFile string, rkeConfig *v3.RancherKubernetesEngin
return nil
}
func parseDaemonSetUpdateStrategy(updateStrategyField interface{}) (*appsv1.DaemonSetUpdateStrategy, error) {
func parseDaemonSetUpdateStrategy(updateStrategyField interface{}) (*v3.DaemonSetUpdateStrategy, error) {
updateStrategyBytes, err := json.Marshal(updateStrategyField)
if err != nil {
return nil, fmt.Errorf("[parseDaemonSetUpdateStrategy] error marshalling updateStrategy: %v", err)
}
var updateStrategy *appsv1.DaemonSetUpdateStrategy
var updateStrategy *v3.DaemonSetUpdateStrategy
err = json.Unmarshal(updateStrategyBytes, &updateStrategy)
if err != nil {
return nil, fmt.Errorf("[parseIngressUpdateStrategy] error unmarshaling updateStrategy: %v", err)
}
return updateStrategy, nil
}
func parseDeploymentUpdateStrategy(updateStrategyField interface{}) (*appsv1.DeploymentStrategy, error) {
func parseDeploymentUpdateStrategy(updateStrategyField interface{}) (*v3.DeploymentStrategy, error) {
updateStrategyBytes, err := json.Marshal(updateStrategyField)
if err != nil {
return nil, fmt.Errorf("[parseDeploymentUpdateStrategy] error marshalling updateStrategy: %v", err)
}
var updateStrategy *appsv1.DeploymentStrategy
var updateStrategy *v3.DeploymentStrategy
err = json.Unmarshal(updateStrategyBytes, &updateStrategy)
if err != nil {
return nil, fmt.Errorf("[parseDeploymentUpdateStrategy] error unmarshaling updateStrategy: %v", err)

View File

@ -95,12 +95,12 @@ const (
var (
DefaultDaemonSetMaxUnavailable = intstr.FromInt(1)
DefaultDeploymentUpdateStrategyParams = intstr.FromString("25%")
DefaultDaemonSetUpdateStrategy = appsv1.DaemonSetUpdateStrategy{
Type: appsv1.RollingUpdateDaemonSetStrategyType,
DefaultDaemonSetUpdateStrategy = v3.DaemonSetUpdateStrategy{
Strategy: appsv1.RollingUpdateDaemonSetStrategyType,
RollingUpdate: &appsv1.RollingUpdateDaemonSet{MaxUnavailable: &DefaultDaemonSetMaxUnavailable},
}
DefaultDeploymentUpdateStrategy = appsv1.DeploymentStrategy{
Type: appsv1.RollingUpdateDeploymentStrategyType,
DefaultDeploymentUpdateStrategy = v3.DeploymentStrategy{
Strategy: appsv1.RollingUpdateDeploymentStrategyType,
RollingUpdate: &appsv1.RollingUpdateDeployment{
MaxUnavailable: &DefaultDeploymentUpdateStrategyParams,
MaxSurge: &DefaultDeploymentUpdateStrategyParams,
@ -629,8 +629,8 @@ func (c *Cluster) setAddonsDefaults() {
}
}
func setDaemonsetAddonDefaults(updateStrategy *appsv1.DaemonSetUpdateStrategy) *appsv1.DaemonSetUpdateStrategy {
if updateStrategy != nil && updateStrategy.Type != appsv1.RollingUpdateDaemonSetStrategyType {
func setDaemonsetAddonDefaults(updateStrategy *v3.DaemonSetUpdateStrategy) *v3.DaemonSetUpdateStrategy {
if updateStrategy != nil && updateStrategy.Strategy != appsv1.RollingUpdateDaemonSetStrategyType {
return updateStrategy
}
if updateStrategy == nil || updateStrategy.RollingUpdate == nil || updateStrategy.RollingUpdate.MaxUnavailable == nil {
@ -639,8 +639,8 @@ func setDaemonsetAddonDefaults(updateStrategy *appsv1.DaemonSetUpdateStrategy) *
return updateStrategy
}
func setDeploymentAddonDefaults(updateStrategy *appsv1.DeploymentStrategy) *appsv1.DeploymentStrategy {
if updateStrategy != nil && updateStrategy.Type != appsv1.RollingUpdateDeploymentStrategyType {
func setDeploymentAddonDefaults(updateStrategy *v3.DeploymentStrategy) *v3.DeploymentStrategy {
if updateStrategy != nil && updateStrategy.Strategy != appsv1.RollingUpdateDeploymentStrategyType {
return updateStrategy
}
if updateStrategy == nil || updateStrategy.RollingUpdate == nil {
@ -655,19 +655,19 @@ func setDeploymentAddonDefaults(updateStrategy *appsv1.DeploymentStrategy) *apps
return updateStrategy
}
func setDNSDeploymentAddonDefaults(updateStrategy *appsv1.DeploymentStrategy, dnsProvider string) *appsv1.DeploymentStrategy {
func setDNSDeploymentAddonDefaults(updateStrategy *v3.DeploymentStrategy, dnsProvider string) *v3.DeploymentStrategy {
var (
coreDNSMaxUnavailable, coreDNSMaxSurge = intstr.FromInt(1), intstr.FromInt(0)
kubeDNSMaxSurge, kubeDNSMaxUnavailable = intstr.FromString("10%"), intstr.FromInt(0)
)
if updateStrategy != nil && updateStrategy.Type != appsv1.RollingUpdateDeploymentStrategyType {
if updateStrategy != nil && updateStrategy.Strategy != appsv1.RollingUpdateDeploymentStrategyType {
return updateStrategy
}
switch dnsProvider {
case CoreDNSProvider:
if updateStrategy == nil || updateStrategy.RollingUpdate == nil {
return &appsv1.DeploymentStrategy{
Type: appsv1.RollingUpdateDeploymentStrategyType,
return &v3.DeploymentStrategy{
Strategy: appsv1.RollingUpdateDeploymentStrategyType,
RollingUpdate: &appsv1.RollingUpdateDeployment{
MaxUnavailable: &coreDNSMaxUnavailable,
MaxSurge: &coreDNSMaxSurge,
@ -679,8 +679,8 @@ func setDNSDeploymentAddonDefaults(updateStrategy *appsv1.DeploymentStrategy, dn
}
case KubeDNSProvider:
if updateStrategy == nil || updateStrategy.RollingUpdate == nil {
return &appsv1.DeploymentStrategy{
Type: appsv1.RollingUpdateDeploymentStrategyType,
return &v3.DeploymentStrategy{
Strategy: appsv1.RollingUpdateDeploymentStrategyType,
RollingUpdate: &appsv1.RollingUpdateDeployment{
MaxUnavailable: &kubeDNSMaxUnavailable,
MaxSurge: &kubeDNSMaxSurge,

View File

@ -18,6 +18,7 @@ import (
"github.com/rancher/types/apis/management.cattle.io/v3"
"github.com/sirupsen/logrus"
"golang.org/x/sync/errgroup"
appsv1 "k8s.io/api/apps/v1"
)
const (
@ -177,7 +178,10 @@ func (c *Cluster) doFlannelDeploy(ctx context.Context, data map[string]interface
RBACConfig: c.Authorization.Mode,
ClusterVersion: util.GetTagMajorVersion(c.Version),
NodeSelector: c.Network.NodeSelector,
UpdateStrategy: c.Network.UpdateStrategy,
UpdateStrategy: &appsv1.DaemonSetUpdateStrategy{
Type: c.Network.UpdateStrategy.Strategy,
RollingUpdate: c.Network.UpdateStrategy.RollingUpdate,
},
}
pluginYaml, err := c.getNetworkPluginManifest(flannelConfig, data)
if err != nil {
@ -201,7 +205,10 @@ func (c *Cluster) doCalicoDeploy(ctx context.Context, data map[string]interface{
RBACConfig: c.Authorization.Mode,
NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU,
UpdateStrategy: c.Network.UpdateStrategy,
UpdateStrategy: &appsv1.DaemonSetUpdateStrategy{
Type: c.Network.UpdateStrategy.Strategy,
RollingUpdate: c.Network.UpdateStrategy.RollingUpdate,
},
FlexVolPluginDir: c.Network.Options[CalicoFlexVolPluginDirectory],
}
pluginYaml, err := c.getNetworkPluginManifest(calicoConfig, data)
@ -240,9 +247,12 @@ func (c *Cluster) doCanalDeploy(ctx context.Context, data map[string]interface{}
"VNI": flannelVni,
"Port": flannelPort,
},
NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU,
UpdateStrategy: c.Network.UpdateStrategy,
NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU,
UpdateStrategy: &appsv1.DaemonSetUpdateStrategy{
Type: c.Network.UpdateStrategy.Strategy,
RollingUpdate: c.Network.UpdateStrategy.RollingUpdate,
},
FlexVolPluginDir: c.Network.Options[CanalFlexVolPluginDirectory],
}
pluginYaml, err := c.getNetworkPluginManifest(canalConfig, data)
@ -262,7 +272,10 @@ func (c *Cluster) doWeaveDeploy(ctx context.Context, data map[string]interface{}
RBACConfig: c.Authorization.Mode,
NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU,
UpdateStrategy: c.Network.UpdateStrategy,
UpdateStrategy: &appsv1.DaemonSetUpdateStrategy{
Type: c.Network.UpdateStrategy.Strategy,
RollingUpdate: c.Network.UpdateStrategy.RollingUpdate,
},
}
pluginYaml, err := c.getNetworkPluginManifest(weaveConfig, data)
if err != nil {