Skip to content
This repository was archived by the owner on Mar 25, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions apis/management.cattle.io/v3/cluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,14 @@ type ClusterStatus struct {
MonitoringStatus *MonitoringStatus `json:"monitoringStatus,omitempty" norman:"nocreate,noupdate"`
IstioEnabled bool `json:"istioEnabled,omitempty" norman:"nocreate,noupdate,default=false"`
CertificatesExpiration map[string]CertExpiration `json:"certificatesExpiration,omitempty"`
NodeUpgradeStatus *NodeUpgradeStatus `json:"nodeUpgradeStatus,omitempty" norman:"nocreate,noupdate"`
}

type NodeUpgradeStatus struct {
LastAppliedToken string `json:"lastAppliedToken"`
CurrentToken string `json:"currentToken"`
// map[currentToken]map[nodeName]state
Nodes map[string]map[string]string `json:"nodes"`
}

type ClusterComponentStatus struct {
Expand Down
62 changes: 62 additions & 0 deletions apis/management.cattle.io/v3/rke_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"github.com/rancher/norman/types"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
intstr "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/sets"
apiserverv1alpha1 "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
apiserverconfig "k8s.io/apiserver/pkg/apis/config"
Expand Down Expand Up @@ -58,6 +60,18 @@ type RancherKubernetesEngineConfig struct {
RotateCertificates *RotateCertificates `yaml:"rotate_certificates,omitempty" json:"rotateCertificates,omitempty"`
// DNS Config
DNS *DNSConfig `yaml:"dns" json:"dns,omitempty"`
// Upgrade Strategy
NodeUpgradeStrategy *NodeUpgradeStrategy `yaml:"node_upgrade_strategy,omitempty" json:"nodeUpgradeStrategy,omitempty"`
}

type NodeUpgradeStrategy struct {
RollingUpdate *RollingUpdateStrategy `yaml:"rolling_update_strategy,omitempty" json:"rollingUpdateStrategy,omitempty"`
}

type RollingUpdateStrategy struct {
MaxUnavailable intstr.IntOrString `yaml:"max_unavailable,omitempty" json:"maxUnavailable,omitempty"`
Drain bool `yaml:"drain" json:"drain,omitempty"`
DrainInput *NodeDrainInput `yaml:"node_drain_input" json:"nodeDrainInput,omitempty"`
}

type BastionHost struct {
Expand Down Expand Up @@ -445,6 +459,54 @@ type RKEConfigNodePlan struct {
Taints []RKETaint `json:"taints,omitempty"`
}

type RKEClusterPlan struct {
// Map of cluster plan for RKE worker nodes
Processes map[string]RKEProcess
}

type RKEProcess struct {
// Process name, this should be the container name
Name string `json:"name,omitempty"`
// Process Entrypoint command
Command []string `json:"command,omitempty"`
// Process command map
CommandMap map[string]string `json:"commandMap,omitempty"`
// Process args
Args []string `json:"args,omitempty"`
// Process args map
ArgsMap map[string]sets.Empty `json:"argsMap,omitempty"`
// Environment variables list
Env []string `json:"env,omitempty"`
// Environment variables map
EnvMap map[string]sets.Empty `json:"envMap,omitempty"`
// Process docker image
Image string `json:"image,omitempty"`
//AuthConfig for image private registry
ImageRegistryAuthConfig string `json:"imageRegistryAuthConfig,omitempty"`
// Process docker image VolumesFrom
VolumesFrom []string `json:"volumesFrom,omitempty"`
// Process docker container bind mounts
Binds []string `json:"binds,omitempty"`
// Process docker container bind mounts
BindsMap map[string]sets.Empty `json:"bindsMap,omitempty"`
// Process docker container netwotk mode
NetworkMode string `json:"networkMode,omitempty"`
// Process container restart policy
RestartPolicy string `json:"restartPolicy,omitempty"`
// Process container pid mode
PidMode string `json:"pidMode,omitempty"`
// Run process in privileged container
Privileged bool `json:"privileged,omitempty"`
// Process healthcheck
HealthCheck HealthCheck `json:"healthCheck,omitempty"`
// Process docker container Labels
Labels map[string]string `json:"labels,omitempty"`
// Process docker publish container's port to host
Publish []string `json:"publish,omitempty"`
// docker will run the container with this user
User string `json:"user,omitempty"`
}

type Process struct {
// Process name, this should be the container name
Name string `json:"name,omitempty"`
Expand Down
192 changes: 192 additions & 0 deletions apis/management.cattle.io/v3/zz_generated_deepcopy.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
sets "k8s.io/apimachinery/pkg/util/sets"
version "k8s.io/apimachinery/pkg/version"
v1alpha1 "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
v1 "k8s.io/apiserver/pkg/apis/audit/v1"
Expand Down Expand Up @@ -2303,6 +2304,11 @@ func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
(*out)[key] = val
}
}
if in.NodeUpgradeStatus != nil {
in, out := &in.NodeUpgradeStatus, &out.NodeUpgradeStatus
*out = new(NodeUpgradeStatus)
(*in).DeepCopyInto(*out)
}
return
}

Expand Down Expand Up @@ -6302,6 +6308,60 @@ func (in *NodeTemplateStatus) DeepCopy() *NodeTemplateStatus {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NodeUpgradeStatus) DeepCopyInto(out *NodeUpgradeStatus) {
*out = *in
if in.Nodes != nil {
in, out := &in.Nodes, &out.Nodes
*out = make(map[string]map[string]string, len(*in))
for key, val := range *in {
var outVal map[string]string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
(*out)[key] = outVal
}
}
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeUpgradeStatus.
func (in *NodeUpgradeStatus) DeepCopy() *NodeUpgradeStatus {
if in == nil {
return nil
}
out := new(NodeUpgradeStatus)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NodeUpgradeStrategy) DeepCopyInto(out *NodeUpgradeStrategy) {
*out = *in
if in.RollingUpdate != nil {
in, out := &in.RollingUpdate, &out.RollingUpdate
*out = new(RollingUpdateStrategy)
(*in).DeepCopyInto(*out)
}
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeUpgradeStrategy.
func (in *NodeUpgradeStrategy) DeepCopy() *NodeUpgradeStrategy {
if in == nil {
return nil
}
out := new(NodeUpgradeStrategy)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Nodelocal) DeepCopyInto(out *Nodelocal) {
*out = *in
Expand Down Expand Up @@ -8148,6 +8208,29 @@ func (in *RKEAddonList) DeepCopyObject() runtime.Object {
return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RKEClusterPlan) DeepCopyInto(out *RKEClusterPlan) {
*out = *in
if in.Processes != nil {
in, out := &in.Processes, &out.Processes
*out = make(map[string]RKEProcess, len(*in))
for key, val := range *in {
(*out)[key] = *val.DeepCopy()
}
}
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RKEClusterPlan.
func (in *RKEClusterPlan) DeepCopy() *RKEClusterPlan {
if in == nil {
return nil
}
out := new(RKEClusterPlan)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RKEConfigNode) DeepCopyInto(out *RKEConfigNode) {
*out = *in
Expand Down Expand Up @@ -8404,6 +8487,88 @@ func (in *RKEPlan) DeepCopy() *RKEPlan {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RKEProcess) DeepCopyInto(out *RKEProcess) {
*out = *in
if in.Command != nil {
in, out := &in.Command, &out.Command
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.CommandMap != nil {
in, out := &in.CommandMap, &out.CommandMap
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.Args != nil {
in, out := &in.Args, &out.Args
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.ArgsMap != nil {
in, out := &in.ArgsMap, &out.ArgsMap
*out = make(map[string]sets.Empty, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.Env != nil {
in, out := &in.Env, &out.Env
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.EnvMap != nil {
in, out := &in.EnvMap, &out.EnvMap
*out = make(map[string]sets.Empty, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.VolumesFrom != nil {
in, out := &in.VolumesFrom, &out.VolumesFrom
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.Binds != nil {
in, out := &in.Binds, &out.Binds
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.BindsMap != nil {
in, out := &in.BindsMap, &out.BindsMap
*out = make(map[string]sets.Empty, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
out.HealthCheck = in.HealthCheck
if in.Labels != nil {
in, out := &in.Labels, &out.Labels
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.Publish != nil {
in, out := &in.Publish, &out.Publish
*out = make([]string, len(*in))
copy(*out, *in)
}
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RKEProcess.
func (in *RKEProcess) DeepCopy() *RKEProcess {
if in == nil {
return nil
}
out := new(RKEProcess)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RKESystemImages) DeepCopyInto(out *RKESystemImages) {
*out = *in
Expand Down Expand Up @@ -8480,6 +8645,11 @@ func (in *RancherKubernetesEngineConfig) DeepCopyInto(out *RancherKubernetesEngi
*out = new(DNSConfig)
(*in).DeepCopyInto(*out)
}
if in.NodeUpgradeStrategy != nil {
in, out := &in.NodeUpgradeStrategy, &out.NodeUpgradeStrategy
*out = new(NodeUpgradeStrategy)
(*in).DeepCopyInto(*out)
}
return
}

Expand Down Expand Up @@ -8644,6 +8814,28 @@ func (in *RollingUpdate) DeepCopy() *RollingUpdate {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RollingUpdateStrategy) DeepCopyInto(out *RollingUpdateStrategy) {
*out = *in
out.MaxUnavailable = in.MaxUnavailable
if in.DrainInput != nil {
in, out := &in.DrainInput, &out.DrainInput
*out = new(NodeDrainInput)
**out = **in
}
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateStrategy.
func (in *RollingUpdateStrategy) DeepCopy() *RollingUpdateStrategy {
if in == nil {
return nil
}
out := new(RollingUpdateStrategy)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RotateCertificateInput) DeepCopyInto(out *RotateCertificateInput) {
*out = *in
Expand Down
2 changes: 2 additions & 0 deletions client/management/v3/zz_generated_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const (
ClusterFieldLocalClusterAuthEndpoint = "localClusterAuthEndpoint"
ClusterFieldMonitoringStatus = "monitoringStatus"
ClusterFieldName = "name"
ClusterFieldNodeUpgradeStatus = "nodeUpgradeStatus"
ClusterFieldOwnerReferences = "ownerReferences"
ClusterFieldRancherKubernetesEngineConfig = "rancherKubernetesEngineConfig"
ClusterFieldRemoved = "removed"
Expand Down Expand Up @@ -100,6 +101,7 @@ type Cluster struct {
LocalClusterAuthEndpoint *LocalClusterAuthEndpoint `json:"localClusterAuthEndpoint,omitempty" yaml:"localClusterAuthEndpoint,omitempty"`
MonitoringStatus *MonitoringStatus `json:"monitoringStatus,omitempty" yaml:"monitoringStatus,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
NodeUpgradeStatus *NodeUpgradeStatus `json:"nodeUpgradeStatus,omitempty" yaml:"nodeUpgradeStatus,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
RancherKubernetesEngineConfig *RancherKubernetesEngineConfig `json:"rancherKubernetesEngineConfig,omitempty" yaml:"rancherKubernetesEngineConfig,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
Expand Down
2 changes: 2 additions & 0 deletions client/management/v3/zz_generated_cluster_status.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const (
ClusterStatusFieldIstioEnabled = "istioEnabled"
ClusterStatusFieldLimits = "limits"
ClusterStatusFieldMonitoringStatus = "monitoringStatus"
ClusterStatusFieldNodeUpgradeStatus = "nodeUpgradeStatus"
ClusterStatusFieldRequested = "requested"
ClusterStatusFieldVersion = "version"
)
Expand All @@ -43,6 +44,7 @@ type ClusterStatus struct {
IstioEnabled bool `json:"istioEnabled,omitempty" yaml:"istioEnabled,omitempty"`
Limits map[string]string `json:"limits,omitempty" yaml:"limits,omitempty"`
MonitoringStatus *MonitoringStatus `json:"monitoringStatus,omitempty" yaml:"monitoringStatus,omitempty"`
NodeUpgradeStatus *NodeUpgradeStatus `json:"nodeUpgradeStatus,omitempty" yaml:"nodeUpgradeStatus,omitempty"`
Requested map[string]string `json:"requested,omitempty" yaml:"requested,omitempty"`
Version *Info `json:"version,omitempty" yaml:"version,omitempty"`
}
14 changes: 14 additions & 0 deletions client/management/v3/zz_generated_node_upgrade_status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package client

const (
NodeUpgradeStatusType = "nodeUpgradeStatus"
NodeUpgradeStatusFieldCurrentToken = "currentToken"
NodeUpgradeStatusFieldLastAppliedToken = "lastAppliedToken"
NodeUpgradeStatusFieldNodes = "nodes"
)

type NodeUpgradeStatus struct {
CurrentToken string `json:"currentToken,omitempty" yaml:"currentToken,omitempty"`
LastAppliedToken string `json:"lastAppliedToken,omitempty" yaml:"lastAppliedToken,omitempty"`
Nodes map[string]map[string]string `json:"nodes,omitempty" yaml:"nodes,omitempty"`
}
10 changes: 10 additions & 0 deletions client/management/v3/zz_generated_node_upgrade_strategy.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package client

const (
NodeUpgradeStrategyType = "nodeUpgradeStrategy"
NodeUpgradeStrategyFieldRollingUpdate = "rollingUpdateStrategy"
)

type NodeUpgradeStrategy struct {
RollingUpdate *RollingUpdateStrategy `json:"rollingUpdateStrategy,omitempty" yaml:"rollingUpdateStrategy,omitempty"`
}
Loading