1
0
mirror of https://github.com/rancher/types.git synced 2025-08-21 13:53:11 +00:00

Merge pull request #1036 from mrajashree/addons_scale_update

Make updateStrategy and replicas configurable for addons
This commit is contained in:
Rajashree Mandaogane 2020-02-18 11:13:31 -08:00 committed by GitHub
commit dc762fc27c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 187 additions and 37 deletions

View File

@ -2,6 +2,7 @@ package v3
import (
"github.com/rancher/norman/types"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
apiserverv1alpha1 "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
@ -376,6 +377,8 @@ type NetworkConfig struct {
WeaveNetworkProvider *WeaveNetworkProvider `yaml:"weave_network_provider,omitempty" json:"weaveNetworkProvider,omitempty"`
// NodeSelector key pair
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
// Network plugin daemonset upgrade strategy
UpdateStrategy *appsv1.DaemonSetUpdateStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
}
type AuthWebhookConfig struct {
@ -418,6 +421,8 @@ type IngressConfig struct {
ExtraVolumes []ExtraVolume `yaml:"extra_volumes" json:"extraVolumes,omitempty" norman:"type=array[json]"`
// Extra volume mounts
ExtraVolumeMounts []ExtraVolumeMount `yaml:"extra_volume_mounts" json:"extraVolumeMounts,omitempty" norman:"type=array[json]"`
// nginx daemonset upgrade strategy
UpdateStrategy *appsv1.DaemonSetUpdateStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
}
type ExtraEnv struct {
@ -804,6 +809,10 @@ type MonitoringConfig struct {
Options map[string]string `yaml:"options" json:"options,omitempty"`
// NodeSelector key pair
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
// Update strategy
UpdateStrategy *appsv1.DeploymentStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
// Number of monitoring addon pods
Replicas *int32 `yaml:"replicas" json:"replicas,omitempty" norman:"default=1"`
}
type RestoreConfig struct {
@ -830,12 +839,25 @@ type DNSConfig struct {
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
// Nodelocal DNS
Nodelocal *Nodelocal `yaml:"nodelocal" json:"nodelocal,omitempy"`
// Update strategy
UpdateStrategy *appsv1.DeploymentStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
// Autoscaler fields to determine number of dns replicas
LinearAutoscalerParams *LinearAutoscalerParams `yaml:"linear_autoscaler_params" json:"linearAutoscalerParams,omitempty"`
}
type Nodelocal struct {
IPAddress string `yaml:"ipaddress" json:"ipAddress,omitempy"`
}
// LinearAutoscalerParams contains fields expected by the cluster-proportional-autoscaler https://github.com/kubernetes-incubator/cluster-proportional-autoscaler/blob/0c61e63fc81449abdd52315aa27179a17e5d1580/pkg/autoscaler/controller/linearcontroller/linear_controller.go#L50
type LinearAutoscalerParams struct {
CoresPerReplica float64 `yaml:"cores_per_replica" json:"coresPerReplica,omitempty" norman:"default=128"`
NodesPerReplica float64 `yaml:"nodes_per_replica" json:"nodesPerReplica,omitempty" norman:"default=4"`
Min int `yaml:"min" json:"min,omitempty" norman:"default=1"`
Max int `yaml:"max" json:"max,omitempty"`
PreventSinglePointFailure bool `yaml:"prevent_single_point_failure" json:"preventSinglePointFailure,omitempty" norman:"default=true"`
}
type RKETaint struct {
Key string `json:"key,omitempty" yaml:"key"`
Value string `json:"value,omitempty" yaml:"value"`

View File

@ -71,7 +71,8 @@ func rkeTypes(schemas *types.Schemas) *types.Schemas {
).
MustImport(&Version, v3.ExtraEnv{}).
MustImport(&Version, v3.ExtraVolume{}).
MustImport(&Version, v3.ExtraVolumeMount{})
MustImport(&Version, v3.ExtraVolumeMount{}).
MustImport(&Version, v3.LinearAutoscalerParams{})
}
func schemaTypes(schemas *types.Schemas) *types.Schemas {

View File

@ -2,6 +2,7 @@ package v3
import (
projectcattleiov3 "github.com/rancher/types/apis/project.cattle.io/v3"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
@ -2892,6 +2893,16 @@ func (in *DNSConfig) DeepCopyInto(out *DNSConfig) {
*out = new(Nodelocal)
**out = **in
}
if in.UpdateStrategy != nil {
in, out := &in.UpdateStrategy, &out.UpdateStrategy
*out = new(appsv1.DeploymentStrategy)
(*in).DeepCopyInto(*out)
}
if in.LinearAutoscalerParams != nil {
in, out := &in.LinearAutoscalerParams, &out.LinearAutoscalerParams
*out = new(LinearAutoscalerParams)
**out = **in
}
return
}
@ -4421,6 +4432,11 @@ func (in *IngressConfig) DeepCopyInto(out *IngressConfig) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.UpdateStrategy != nil {
in, out := &in.UpdateStrategy, &out.UpdateStrategy
*out = new(appsv1.DaemonSetUpdateStrategy)
(*in).DeepCopyInto(*out)
}
return
}
@ -4868,6 +4884,22 @@ func (in *Limit) DeepCopy() *Limit {
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LinearAutoscalerParams) DeepCopyInto(out *LinearAutoscalerParams) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinearAutoscalerParams.
func (in *LinearAutoscalerParams) DeepCopy() *LinearAutoscalerParams {
if in == nil {
return nil
}
out := new(LinearAutoscalerParams)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ListOpts) DeepCopyInto(out *ListOpts) {
*out = *in
@ -5298,6 +5330,16 @@ func (in *MonitoringConfig) DeepCopyInto(out *MonitoringConfig) {
(*out)[key] = val
}
}
if in.UpdateStrategy != nil {
in, out := &in.UpdateStrategy, &out.UpdateStrategy
*out = new(appsv1.DeploymentStrategy)
(*in).DeepCopyInto(*out)
}
if in.Replicas != nil {
in, out := &in.Replicas, &out.Replicas
*out = new(int32)
**out = **in
}
return
}
@ -5637,6 +5679,11 @@ func (in *NetworkConfig) DeepCopyInto(out *NetworkConfig) {
(*out)[key] = val
}
}
if in.UpdateStrategy != nil {
in, out := &in.UpdateStrategy, &out.UpdateStrategy
*out = new(appsv1.DaemonSetUpdateStrategy)
(*in).DeepCopyInto(*out)
}
return
}

View File

@ -0,0 +1,12 @@
package client
const (
DaemonSetUpdateStrategyType = "daemonSetUpdateStrategy"
DaemonSetUpdateStrategyFieldRollingUpdate = "rollingUpdate"
DaemonSetUpdateStrategyFieldType = "type"
)
type DaemonSetUpdateStrategy struct {
RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty"`
Type string `json:"type,omitempty" yaml:"type,omitempty"`
}

View File

@ -0,0 +1,12 @@
package client
const (
DeploymentStrategyType = "deploymentStrategy"
DeploymentStrategyFieldRollingUpdate = "rollingUpdate"
DeploymentStrategyFieldType = "type"
)
type DeploymentStrategy struct {
RollingUpdate *RollingUpdateDeployment `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty"`
Type string `json:"type,omitempty" yaml:"type,omitempty"`
}

View File

@ -1,20 +1,24 @@
package client
const (
DNSConfigType = "dnsConfig"
DNSConfigFieldNodeSelector = "nodeSelector"
DNSConfigFieldNodelocal = "nodelocal"
DNSConfigFieldProvider = "provider"
DNSConfigFieldReverseCIDRs = "reversecidrs"
DNSConfigFieldStubDomains = "stubdomains"
DNSConfigFieldUpstreamNameservers = "upstreamnameservers"
DNSConfigType = "dnsConfig"
DNSConfigFieldLinearAutoscalerParams = "linearAutoscalerParams"
DNSConfigFieldNodeSelector = "nodeSelector"
DNSConfigFieldNodelocal = "nodelocal"
DNSConfigFieldProvider = "provider"
DNSConfigFieldReverseCIDRs = "reversecidrs"
DNSConfigFieldStubDomains = "stubdomains"
DNSConfigFieldUpdateStrategy = "updateStrategy"
DNSConfigFieldUpstreamNameservers = "upstreamnameservers"
)
type DNSConfig struct {
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Nodelocal *Nodelocal `json:"nodelocal,omitempty" yaml:"nodelocal,omitempty"`
Provider string `json:"provider,omitempty" yaml:"provider,omitempty"`
ReverseCIDRs []string `json:"reversecidrs,omitempty" yaml:"reversecidrs,omitempty"`
StubDomains map[string][]string `json:"stubdomains,omitempty" yaml:"stubdomains,omitempty"`
UpstreamNameservers []string `json:"upstreamnameservers,omitempty" yaml:"upstreamnameservers,omitempty"`
LinearAutoscalerParams *LinearAutoscalerParams `json:"linearAutoscalerParams,omitempty" yaml:"linearAutoscalerParams,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Nodelocal *Nodelocal `json:"nodelocal,omitempty" yaml:"nodelocal,omitempty"`
Provider string `json:"provider,omitempty" yaml:"provider,omitempty"`
ReverseCIDRs []string `json:"reversecidrs,omitempty" yaml:"reversecidrs,omitempty"`
StubDomains map[string][]string `json:"stubdomains,omitempty" yaml:"stubdomains,omitempty"`
UpdateStrategy *DeploymentStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
UpstreamNameservers []string `json:"upstreamnameservers,omitempty" yaml:"upstreamnameservers,omitempty"`
}

View File

@ -10,15 +10,17 @@ const (
IngressConfigFieldNodeSelector = "nodeSelector"
IngressConfigFieldOptions = "options"
IngressConfigFieldProvider = "provider"
IngressConfigFieldUpdateStrategy = "updateStrategy"
)
type IngressConfig struct {
DNSPolicy string `json:"dnsPolicy,omitempty" yaml:"dnsPolicy,omitempty"`
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraEnvs []interface{} `json:"extraEnvs,omitempty" yaml:"extraEnvs,omitempty"`
ExtraVolumeMounts []interface{} `json:"extraVolumeMounts,omitempty" yaml:"extraVolumeMounts,omitempty"`
ExtraVolumes []interface{} `json:"extraVolumes,omitempty" yaml:"extraVolumes,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
Provider string `json:"provider,omitempty" yaml:"provider,omitempty"`
DNSPolicy string `json:"dnsPolicy,omitempty" yaml:"dnsPolicy,omitempty"`
ExtraArgs map[string]string `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
ExtraEnvs []interface{} `json:"extraEnvs,omitempty" yaml:"extraEnvs,omitempty"`
ExtraVolumeMounts []interface{} `json:"extraVolumeMounts,omitempty" yaml:"extraVolumeMounts,omitempty"`
ExtraVolumes []interface{} `json:"extraVolumes,omitempty" yaml:"extraVolumes,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
Provider string `json:"provider,omitempty" yaml:"provider,omitempty"`
UpdateStrategy *DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
}

View File

@ -0,0 +1,18 @@
package client
const (
LinearAutoscalerParamsType = "linearAutoscalerParams"
LinearAutoscalerParamsFieldCoresPerReplica = "coresPerReplica"
LinearAutoscalerParamsFieldMax = "max"
LinearAutoscalerParamsFieldMin = "min"
LinearAutoscalerParamsFieldNodesPerReplica = "nodesPerReplica"
LinearAutoscalerParamsFieldPreventSinglePointFailure = "preventSinglePointFailure"
)
type LinearAutoscalerParams struct {
CoresPerReplica float64 `json:"coresPerReplica,omitempty" yaml:"coresPerReplica,omitempty"`
Max int64 `json:"max,omitempty" yaml:"max,omitempty"`
Min int64 `json:"min,omitempty" yaml:"min,omitempty"`
NodesPerReplica float64 `json:"nodesPerReplica,omitempty" yaml:"nodesPerReplica,omitempty"`
PreventSinglePointFailure bool `json:"preventSinglePointFailure,omitempty" yaml:"preventSinglePointFailure,omitempty"`
}

View File

@ -1,14 +1,18 @@
package client
const (
MonitoringConfigType = "monitoringConfig"
MonitoringConfigFieldNodeSelector = "nodeSelector"
MonitoringConfigFieldOptions = "options"
MonitoringConfigFieldProvider = "provider"
MonitoringConfigType = "monitoringConfig"
MonitoringConfigFieldNodeSelector = "nodeSelector"
MonitoringConfigFieldOptions = "options"
MonitoringConfigFieldProvider = "provider"
MonitoringConfigFieldReplicas = "replicas"
MonitoringConfigFieldUpdateStrategy = "updateStrategy"
)
type MonitoringConfig struct {
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
Provider string `json:"provider,omitempty" yaml:"provider,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
Provider string `json:"provider,omitempty" yaml:"provider,omitempty"`
Replicas *int64 `json:"replicas,omitempty" yaml:"replicas,omitempty"`
UpdateStrategy *DeploymentStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
}

View File

@ -9,16 +9,18 @@ const (
NetworkConfigFieldNodeSelector = "nodeSelector"
NetworkConfigFieldOptions = "options"
NetworkConfigFieldPlugin = "plugin"
NetworkConfigFieldUpdateStrategy = "updateStrategy"
NetworkConfigFieldWeaveNetworkProvider = "weaveNetworkProvider"
)
type NetworkConfig struct {
CalicoNetworkProvider *CalicoNetworkProvider `json:"calicoNetworkProvider,omitempty" yaml:"calicoNetworkProvider,omitempty"`
CanalNetworkProvider *CanalNetworkProvider `json:"canalNetworkProvider,omitempty" yaml:"canalNetworkProvider,omitempty"`
FlannelNetworkProvider *FlannelNetworkProvider `json:"flannelNetworkProvider,omitempty" yaml:"flannelNetworkProvider,omitempty"`
MTU int64 `json:"mtu,omitempty" yaml:"mtu,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
Plugin string `json:"plugin,omitempty" yaml:"plugin,omitempty"`
WeaveNetworkProvider *WeaveNetworkProvider `json:"weaveNetworkProvider,omitempty" yaml:"weaveNetworkProvider,omitempty"`
CalicoNetworkProvider *CalicoNetworkProvider `json:"calicoNetworkProvider,omitempty" yaml:"calicoNetworkProvider,omitempty"`
CanalNetworkProvider *CanalNetworkProvider `json:"canalNetworkProvider,omitempty" yaml:"canalNetworkProvider,omitempty"`
FlannelNetworkProvider *FlannelNetworkProvider `json:"flannelNetworkProvider,omitempty" yaml:"flannelNetworkProvider,omitempty"`
MTU int64 `json:"mtu,omitempty" yaml:"mtu,omitempty"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
Options map[string]string `json:"options,omitempty" yaml:"options,omitempty"`
Plugin string `json:"plugin,omitempty" yaml:"plugin,omitempty"`
UpdateStrategy *DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty"`
WeaveNetworkProvider *WeaveNetworkProvider `json:"weaveNetworkProvider,omitempty" yaml:"weaveNetworkProvider,omitempty"`
}

View File

@ -0,0 +1,12 @@
package client
import "k8s.io/apimachinery/pkg/util/intstr"
const (
RollingUpdateDaemonSetType = "rollingUpdateDaemonSet"
RollingUpdateDaemonSetFieldMaxUnavailable = "maxUnavailable"
)
type RollingUpdateDaemonSet struct {
MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty" yaml:"maxUnavailable,omitempty"`
}

View File

@ -0,0 +1,14 @@
package client
import "k8s.io/apimachinery/pkg/util/intstr"
const (
RollingUpdateDeploymentType = "rollingUpdateDeployment"
RollingUpdateDeploymentFieldMaxSurge = "maxSurge"
RollingUpdateDeploymentFieldMaxUnavailable = "maxUnavailable"
)
type RollingUpdateDeployment struct {
MaxSurge intstr.IntOrString `json:"maxSurge,omitempty" yaml:"maxSurge,omitempty"`
MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty" yaml:"maxUnavailable,omitempty"`
}