1
0
mirror of https://github.com/rancher/rke.git synced 2025-08-17 14:27:01 +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, ReverseCIDRs: c.DNS.ReverseCIDRs,
StubDomains: c.DNS.StubDomains, StubDomains: c.DNS.StubDomains,
NodeSelector: c.DNS.NodeSelector, 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) linearModeBytes, err := json.Marshal(c.DNS.LinearAutoscalerParams)
if err != nil { if err != nil {
@ -322,7 +325,10 @@ func (c *Cluster) deployCoreDNS(ctx context.Context, data map[string]interface{}
UpstreamNameservers: c.DNS.UpstreamNameservers, UpstreamNameservers: c.DNS.UpstreamNameservers,
ReverseCIDRs: c.DNS.ReverseCIDRs, ReverseCIDRs: c.DNS.ReverseCIDRs,
NodeSelector: c.DNS.NodeSelector, 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) linearModeBytes, err := json.Marshal(c.DNS.LinearAutoscalerParams)
if err != nil { if err != nil {
@ -372,7 +378,10 @@ func (c *Cluster) deployMetricServer(ctx context.Context, data map[string]interf
Options: c.Monitoring.Options, Options: c.Monitoring.Options,
NodeSelector: c.Monitoring.NodeSelector, NodeSelector: c.Monitoring.NodeSelector,
Version: util.GetTagMajorVersion(versionTag), Version: util.GetTagMajorVersion(versionTag),
UpdateStrategy: c.Monitoring.UpdateStrategy, UpdateStrategy: &appsv1.DeploymentStrategy{
Type: c.Monitoring.UpdateStrategy.Strategy,
RollingUpdate: c.Monitoring.UpdateStrategy.RollingUpdate,
},
Replicas: c.Monitoring.Replicas, Replicas: c.Monitoring.Replicas,
} }
tmplt, err := templates.GetVersionedTemplates(kdm.MetricsServer, data, c.Version) tmplt, err := templates.GetVersionedTemplates(kdm.MetricsServer, data, c.Version)
@ -531,7 +540,10 @@ func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}
ExtraEnvs: c.Ingress.ExtraEnvs, ExtraEnvs: c.Ingress.ExtraEnvs,
ExtraVolumes: c.Ingress.ExtraVolumes, ExtraVolumes: c.Ingress.ExtraVolumes,
ExtraVolumeMounts: c.Ingress.ExtraVolumeMounts, 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. // 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. // 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, ClusterDNSServer: c.ClusterDNSServer,
IPAddress: c.DNS.Nodelocal.IPAddress, IPAddress: c.DNS.Nodelocal.IPAddress,
NodeSelector: c.DNS.Nodelocal.NodeSelector, 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) tmplt, err := templates.GetVersionedTemplates(kdm.Nodelocal, data, c.Version)
if err != nil { if err != nil {

View File

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

View File

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

View File

@ -18,6 +18,7 @@ import (
"github.com/rancher/types/apis/management.cattle.io/v3" "github.com/rancher/types/apis/management.cattle.io/v3"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
appsv1 "k8s.io/api/apps/v1"
) )
const ( const (
@ -177,7 +178,10 @@ func (c *Cluster) doFlannelDeploy(ctx context.Context, data map[string]interface
RBACConfig: c.Authorization.Mode, RBACConfig: c.Authorization.Mode,
ClusterVersion: util.GetTagMajorVersion(c.Version), ClusterVersion: util.GetTagMajorVersion(c.Version),
NodeSelector: c.Network.NodeSelector, 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) pluginYaml, err := c.getNetworkPluginManifest(flannelConfig, data)
if err != nil { if err != nil {
@ -201,7 +205,10 @@ func (c *Cluster) doCalicoDeploy(ctx context.Context, data map[string]interface{
RBACConfig: c.Authorization.Mode, RBACConfig: c.Authorization.Mode,
NodeSelector: c.Network.NodeSelector, NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU, 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], FlexVolPluginDir: c.Network.Options[CalicoFlexVolPluginDirectory],
} }
pluginYaml, err := c.getNetworkPluginManifest(calicoConfig, data) pluginYaml, err := c.getNetworkPluginManifest(calicoConfig, data)
@ -242,7 +249,10 @@ func (c *Cluster) doCanalDeploy(ctx context.Context, data map[string]interface{}
}, },
NodeSelector: c.Network.NodeSelector, NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU, 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[CanalFlexVolPluginDirectory], FlexVolPluginDir: c.Network.Options[CanalFlexVolPluginDirectory],
} }
pluginYaml, err := c.getNetworkPluginManifest(canalConfig, data) 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, RBACConfig: c.Authorization.Mode,
NodeSelector: c.Network.NodeSelector, NodeSelector: c.Network.NodeSelector,
MTU: c.Network.MTU, 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) pluginYaml, err := c.getNetworkPluginManifest(weaveConfig, data)
if err != nil { if err != nil {