diff --git a/apis/management.cattle.io/v3/zz_generated_deepcopy.go b/apis/management.cattle.io/v3/zz_generated_deepcopy.go
index aff00512..9270af1e 100644
--- a/apis/management.cattle.io/v3/zz_generated_deepcopy.go
+++ b/apis/management.cattle.io/v3/zz_generated_deepcopy.go
@@ -6061,6 +6061,27 @@ func (in *NodeList) DeepCopyObject() runtime.Object {
 	return nil
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *NodePlan) DeepCopyInto(out *NodePlan) {
+	*out = *in
+	if in.Plan != nil {
+		in, out := &in.Plan, &out.Plan
+		*out = new(RKEConfigNodePlan)
+		(*in).DeepCopyInto(*out)
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePlan.
+func (in *NodePlan) DeepCopy() *NodePlan {
+	if in == nil {
+		return nil
+	}
+	out := new(NodePlan)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *NodePool) DeepCopyInto(out *NodePool) {
 	*out = *in
@@ -6303,6 +6324,11 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) {
 		*out = new(DockerInfo)
 		(*in).DeepCopyInto(*out)
 	}
+	if in.NodePlan != nil {
+		in, out := &in.NodePlan, &out.NodePlan
+		*out = new(NodePlan)
+		(*in).DeepCopyInto(*out)
+	}
 	return
 }
 
diff --git a/client/management/v3/zz_generated_cluster.go b/client/management/v3/zz_generated_cluster.go
index 91acce44..9a6a7275 100644
--- a/client/management/v3/zz_generated_cluster.go
+++ b/client/management/v3/zz_generated_cluster.go
@@ -48,6 +48,7 @@ const (
 	ClusterFieldLocalClusterAuthEndpoint             = "localClusterAuthEndpoint"
 	ClusterFieldMonitoringStatus                     = "monitoringStatus"
 	ClusterFieldName                                 = "name"
+	ClusterFieldNodeVersion                          = "nodeVersion"
 	ClusterFieldOwnerReferences                      = "ownerReferences"
 	ClusterFieldRancherKubernetesEngineConfig        = "rancherKubernetesEngineConfig"
 	ClusterFieldRemoved                              = "removed"
@@ -106,6 +107,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"`
+	NodeVersion                          int64                          `json:"nodeVersion,omitempty" yaml:"nodeVersion,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"`
diff --git a/client/management/v3/zz_generated_cluster_status.go b/client/management/v3/zz_generated_cluster_status.go
index 9b03387f..0c2980fe 100644
--- a/client/management/v3/zz_generated_cluster_status.go
+++ b/client/management/v3/zz_generated_cluster_status.go
@@ -21,6 +21,7 @@ const (
 	ClusterStatusFieldIstioEnabled                         = "istioEnabled"
 	ClusterStatusFieldLimits                               = "limits"
 	ClusterStatusFieldMonitoringStatus                     = "monitoringStatus"
+	ClusterStatusFieldNodeVersion                          = "nodeVersion"
 	ClusterStatusFieldRequested                            = "requested"
 	ClusterStatusFieldScheduledClusterScanStatus           = "scheduledClusterScanStatus"
 	ClusterStatusFieldVersion                              = "version"
@@ -46,6 +47,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"`
+	NodeVersion                          int64                       `json:"nodeVersion,omitempty" yaml:"nodeVersion,omitempty"`
 	Requested                            map[string]string           `json:"requested,omitempty" yaml:"requested,omitempty"`
 	ScheduledClusterScanStatus           *ScheduledClusterScanStatus `json:"scheduledClusterScanStatus,omitempty" yaml:"scheduledClusterScanStatus,omitempty"`
 	Version                              *Info                       `json:"version,omitempty" yaml:"version,omitempty"`
diff --git a/client/management/v3/zz_generated_file.go b/client/management/v3/zz_generated_file.go
new file mode 100644
index 00000000..18d80cc7
--- /dev/null
+++ b/client/management/v3/zz_generated_file.go
@@ -0,0 +1,12 @@
+package client
+
+const (
+	FileType          = "file"
+	FileFieldContents = "contents"
+	FileFieldName     = "name"
+)
+
+type File struct {
+	Contents string `json:"contents,omitempty" yaml:"contents,omitempty"`
+	Name     string `json:"name,omitempty" yaml:"name,omitempty"`
+}
diff --git a/client/management/v3/zz_generated_health_check.go b/client/management/v3/zz_generated_health_check.go
new file mode 100644
index 00000000..b7e8e5b6
--- /dev/null
+++ b/client/management/v3/zz_generated_health_check.go
@@ -0,0 +1,10 @@
+package client
+
+const (
+	HealthCheckType     = "healthCheck"
+	HealthCheckFieldURL = "url"
+)
+
+type HealthCheck struct {
+	URL string `json:"url,omitempty" yaml:"url,omitempty"`
+}
diff --git a/client/management/v3/zz_generated_node.go b/client/management/v3/zz_generated_node.go
index b50b665d..ec43472e 100644
--- a/client/management/v3/zz_generated_node.go
+++ b/client/management/v3/zz_generated_node.go
@@ -8,6 +8,7 @@ const (
 	NodeType                      = "node"
 	NodeFieldAllocatable          = "allocatable"
 	NodeFieldAnnotations          = "annotations"
+	NodeFieldAppliedNodeVersion   = "appliedNodeVersion"
 	NodeFieldCapacity             = "capacity"
 	NodeFieldClusterID            = "clusterId"
 	NodeFieldConditions           = "conditions"
@@ -28,6 +29,7 @@ const (
 	NodeFieldName                 = "name"
 	NodeFieldNamespaceId          = "namespaceId"
 	NodeFieldNodeName             = "nodeName"
+	NodeFieldNodePlan             = "nodePlan"
 	NodeFieldNodePoolID           = "nodePoolId"
 	NodeFieldNodeTaints           = "nodeTaints"
 	NodeFieldNodeTemplateID       = "nodeTemplateId"
@@ -55,6 +57,7 @@ type Node struct {
 	types.Resource
 	Allocatable          map[string]string         `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
 	Annotations          map[string]string         `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	AppliedNodeVersion   int64                     `json:"appliedNodeVersion,omitempty" yaml:"appliedNodeVersion,omitempty"`
 	Capacity             map[string]string         `json:"capacity,omitempty" yaml:"capacity,omitempty"`
 	ClusterID            string                    `json:"clusterId,omitempty" yaml:"clusterId,omitempty"`
 	Conditions           []NodeCondition           `json:"conditions,omitempty" yaml:"conditions,omitempty"`
@@ -75,6 +78,7 @@ type Node struct {
 	Name                 string                    `json:"name,omitempty" yaml:"name,omitempty"`
 	NamespaceId          string                    `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"`
 	NodeName             string                    `json:"nodeName,omitempty" yaml:"nodeName,omitempty"`
+	NodePlan             *NodePlan                 `json:"nodePlan,omitempty" yaml:"nodePlan,omitempty"`
 	NodePoolID           string                    `json:"nodePoolId,omitempty" yaml:"nodePoolId,omitempty"`
 	NodeTaints           []Taint                   `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
 	NodeTemplateID       string                    `json:"nodeTemplateId,omitempty" yaml:"nodeTemplateId,omitempty"`
diff --git a/client/management/v3/zz_generated_node_plan.go b/client/management/v3/zz_generated_node_plan.go
new file mode 100644
index 00000000..4bf3c78a
--- /dev/null
+++ b/client/management/v3/zz_generated_node_plan.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	NodePlanType                    = "nodePlan"
+	NodePlanFieldAgentCheckInterval = "agentCheckInterval"
+	NodePlanFieldPlan               = "plan"
+	NodePlanFieldVersion            = "version"
+)
+
+type NodePlan struct {
+	AgentCheckInterval int64              `json:"agentCheckInterval,omitempty" yaml:"agentCheckInterval,omitempty"`
+	Plan               *RKEConfigNodePlan `json:"plan,omitempty" yaml:"plan,omitempty"`
+	Version            int64              `json:"version,omitempty" yaml:"version,omitempty"`
+}
diff --git a/client/management/v3/zz_generated_node_status.go b/client/management/v3/zz_generated_node_status.go
index 3fbc7da0..d60d945b 100644
--- a/client/management/v3/zz_generated_node_status.go
+++ b/client/management/v3/zz_generated_node_status.go
@@ -1,42 +1,46 @@
 package client
 
 const (
-	NodeStatusType                   = "nodeStatus"
-	NodeStatusFieldAllocatable       = "allocatable"
-	NodeStatusFieldCapacity          = "capacity"
-	NodeStatusFieldConditions        = "conditions"
-	NodeStatusFieldDockerInfo        = "dockerInfo"
-	NodeStatusFieldExternalIPAddress = "externalIpAddress"
-	NodeStatusFieldHostname          = "hostname"
-	NodeStatusFieldIPAddress         = "ipAddress"
-	NodeStatusFieldInfo              = "info"
-	NodeStatusFieldLimits            = "limits"
-	NodeStatusFieldNodeAnnotations   = "nodeAnnotations"
-	NodeStatusFieldNodeConfig        = "rkeNode"
-	NodeStatusFieldNodeLabels        = "nodeLabels"
-	NodeStatusFieldNodeName          = "nodeName"
-	NodeStatusFieldNodeTaints        = "nodeTaints"
-	NodeStatusFieldRequested         = "requested"
-	NodeStatusFieldVolumesAttached   = "volumesAttached"
-	NodeStatusFieldVolumesInUse      = "volumesInUse"
+	NodeStatusType                    = "nodeStatus"
+	NodeStatusFieldAllocatable        = "allocatable"
+	NodeStatusFieldAppliedNodeVersion = "appliedNodeVersion"
+	NodeStatusFieldCapacity           = "capacity"
+	NodeStatusFieldConditions         = "conditions"
+	NodeStatusFieldDockerInfo         = "dockerInfo"
+	NodeStatusFieldExternalIPAddress  = "externalIpAddress"
+	NodeStatusFieldHostname           = "hostname"
+	NodeStatusFieldIPAddress          = "ipAddress"
+	NodeStatusFieldInfo               = "info"
+	NodeStatusFieldLimits             = "limits"
+	NodeStatusFieldNodeAnnotations    = "nodeAnnotations"
+	NodeStatusFieldNodeConfig         = "rkeNode"
+	NodeStatusFieldNodeLabels         = "nodeLabels"
+	NodeStatusFieldNodeName           = "nodeName"
+	NodeStatusFieldNodePlan           = "nodePlan"
+	NodeStatusFieldNodeTaints         = "nodeTaints"
+	NodeStatusFieldRequested          = "requested"
+	NodeStatusFieldVolumesAttached    = "volumesAttached"
+	NodeStatusFieldVolumesInUse       = "volumesInUse"
 )
 
 type NodeStatus struct {
-	Allocatable       map[string]string         `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
-	Capacity          map[string]string         `json:"capacity,omitempty" yaml:"capacity,omitempty"`
-	Conditions        []NodeCondition           `json:"conditions,omitempty" yaml:"conditions,omitempty"`
-	DockerInfo        *DockerInfo               `json:"dockerInfo,omitempty" yaml:"dockerInfo,omitempty"`
-	ExternalIPAddress string                    `json:"externalIpAddress,omitempty" yaml:"externalIpAddress,omitempty"`
-	Hostname          string                    `json:"hostname,omitempty" yaml:"hostname,omitempty"`
-	IPAddress         string                    `json:"ipAddress,omitempty" yaml:"ipAddress,omitempty"`
-	Info              *NodeInfo                 `json:"info,omitempty" yaml:"info,omitempty"`
-	Limits            map[string]string         `json:"limits,omitempty" yaml:"limits,omitempty"`
-	NodeAnnotations   map[string]string         `json:"nodeAnnotations,omitempty" yaml:"nodeAnnotations,omitempty"`
-	NodeConfig        *RKEConfigNode            `json:"rkeNode,omitempty" yaml:"rkeNode,omitempty"`
-	NodeLabels        map[string]string         `json:"nodeLabels,omitempty" yaml:"nodeLabels,omitempty"`
-	NodeName          string                    `json:"nodeName,omitempty" yaml:"nodeName,omitempty"`
-	NodeTaints        []Taint                   `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
-	Requested         map[string]string         `json:"requested,omitempty" yaml:"requested,omitempty"`
-	VolumesAttached   map[string]AttachedVolume `json:"volumesAttached,omitempty" yaml:"volumesAttached,omitempty"`
-	VolumesInUse      []string                  `json:"volumesInUse,omitempty" yaml:"volumesInUse,omitempty"`
+	Allocatable        map[string]string         `json:"allocatable,omitempty" yaml:"allocatable,omitempty"`
+	AppliedNodeVersion int64                     `json:"appliedNodeVersion,omitempty" yaml:"appliedNodeVersion,omitempty"`
+	Capacity           map[string]string         `json:"capacity,omitempty" yaml:"capacity,omitempty"`
+	Conditions         []NodeCondition           `json:"conditions,omitempty" yaml:"conditions,omitempty"`
+	DockerInfo         *DockerInfo               `json:"dockerInfo,omitempty" yaml:"dockerInfo,omitempty"`
+	ExternalIPAddress  string                    `json:"externalIpAddress,omitempty" yaml:"externalIpAddress,omitempty"`
+	Hostname           string                    `json:"hostname,omitempty" yaml:"hostname,omitempty"`
+	IPAddress          string                    `json:"ipAddress,omitempty" yaml:"ipAddress,omitempty"`
+	Info               *NodeInfo                 `json:"info,omitempty" yaml:"info,omitempty"`
+	Limits             map[string]string         `json:"limits,omitempty" yaml:"limits,omitempty"`
+	NodeAnnotations    map[string]string         `json:"nodeAnnotations,omitempty" yaml:"nodeAnnotations,omitempty"`
+	NodeConfig         *RKEConfigNode            `json:"rkeNode,omitempty" yaml:"rkeNode,omitempty"`
+	NodeLabels         map[string]string         `json:"nodeLabels,omitempty" yaml:"nodeLabels,omitempty"`
+	NodeName           string                    `json:"nodeName,omitempty" yaml:"nodeName,omitempty"`
+	NodePlan           *NodePlan                 `json:"nodePlan,omitempty" yaml:"nodePlan,omitempty"`
+	NodeTaints         []Taint                   `json:"nodeTaints,omitempty" yaml:"nodeTaints,omitempty"`
+	Requested          map[string]string         `json:"requested,omitempty" yaml:"requested,omitempty"`
+	VolumesAttached    map[string]AttachedVolume `json:"volumesAttached,omitempty" yaml:"volumesAttached,omitempty"`
+	VolumesInUse       []string                  `json:"volumesInUse,omitempty" yaml:"volumesInUse,omitempty"`
 }
diff --git a/client/management/v3/zz_generated_port_check.go b/client/management/v3/zz_generated_port_check.go
new file mode 100644
index 00000000..2e9c37e5
--- /dev/null
+++ b/client/management/v3/zz_generated_port_check.go
@@ -0,0 +1,14 @@
+package client
+
+const (
+	PortCheckType          = "portCheck"
+	PortCheckFieldAddress  = "address"
+	PortCheckFieldPort     = "port"
+	PortCheckFieldProtocol = "protocol"
+)
+
+type PortCheck struct {
+	Address  string `json:"address,omitempty" yaml:"address,omitempty"`
+	Port     int64  `json:"port,omitempty" yaml:"port,omitempty"`
+	Protocol string `json:"protocol,omitempty" yaml:"protocol,omitempty"`
+}
diff --git a/client/management/v3/zz_generated_process.go b/client/management/v3/zz_generated_process.go
new file mode 100644
index 00000000..425fd657
--- /dev/null
+++ b/client/management/v3/zz_generated_process.go
@@ -0,0 +1,40 @@
+package client
+
+const (
+	ProcessType                         = "process"
+	ProcessFieldArgs                    = "args"
+	ProcessFieldBinds                   = "binds"
+	ProcessFieldCommand                 = "command"
+	ProcessFieldEnv                     = "env"
+	ProcessFieldHealthCheck             = "healthCheck"
+	ProcessFieldImage                   = "image"
+	ProcessFieldImageRegistryAuthConfig = "imageRegistryAuthConfig"
+	ProcessFieldLabels                  = "labels"
+	ProcessFieldName                    = "name"
+	ProcessFieldNetworkMode             = "networkMode"
+	ProcessFieldPidMode                 = "pidMode"
+	ProcessFieldPrivileged              = "privileged"
+	ProcessFieldPublish                 = "publish"
+	ProcessFieldRestartPolicy           = "restartPolicy"
+	ProcessFieldUser                    = "user"
+	ProcessFieldVolumesFrom             = "volumesFrom"
+)
+
+type Process struct {
+	Args                    []string          `json:"args,omitempty" yaml:"args,omitempty"`
+	Binds                   []string          `json:"binds,omitempty" yaml:"binds,omitempty"`
+	Command                 []string          `json:"command,omitempty" yaml:"command,omitempty"`
+	Env                     []string          `json:"env,omitempty" yaml:"env,omitempty"`
+	HealthCheck             *HealthCheck      `json:"healthCheck,omitempty" yaml:"healthCheck,omitempty"`
+	Image                   string            `json:"image,omitempty" yaml:"image,omitempty"`
+	ImageRegistryAuthConfig string            `json:"imageRegistryAuthConfig,omitempty" yaml:"imageRegistryAuthConfig,omitempty"`
+	Labels                  map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
+	Name                    string            `json:"name,omitempty" yaml:"name,omitempty"`
+	NetworkMode             string            `json:"networkMode,omitempty" yaml:"networkMode,omitempty"`
+	PidMode                 string            `json:"pidMode,omitempty" yaml:"pidMode,omitempty"`
+	Privileged              bool              `json:"privileged,omitempty" yaml:"privileged,omitempty"`
+	Publish                 []string          `json:"publish,omitempty" yaml:"publish,omitempty"`
+	RestartPolicy           string            `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"`
+	User                    string            `json:"user,omitempty" yaml:"user,omitempty"`
+	VolumesFrom             []string          `json:"volumesFrom,omitempty" yaml:"volumesFrom,omitempty"`
+}
diff --git a/client/management/v3/zz_generated_rke_config_node_plan.go b/client/management/v3/zz_generated_rke_config_node_plan.go
new file mode 100644
index 00000000..fd9224fe
--- /dev/null
+++ b/client/management/v3/zz_generated_rke_config_node_plan.go
@@ -0,0 +1,22 @@
+package client
+
+const (
+	RKEConfigNodePlanType             = "rkeConfigNodePlan"
+	RKEConfigNodePlanFieldAddress     = "address"
+	RKEConfigNodePlanFieldAnnotations = "annotations"
+	RKEConfigNodePlanFieldFiles       = "files"
+	RKEConfigNodePlanFieldLabels      = "labels"
+	RKEConfigNodePlanFieldPortChecks  = "portChecks"
+	RKEConfigNodePlanFieldProcesses   = "processes"
+	RKEConfigNodePlanFieldTaints      = "taints"
+)
+
+type RKEConfigNodePlan struct {
+	Address     string             `json:"address,omitempty" yaml:"address,omitempty"`
+	Annotations map[string]string  `json:"annotations,omitempty" yaml:"annotations,omitempty"`
+	Files       []File             `json:"files,omitempty" yaml:"files,omitempty"`
+	Labels      map[string]string  `json:"labels,omitempty" yaml:"labels,omitempty"`
+	PortChecks  []PortCheck        `json:"portChecks,omitempty" yaml:"portChecks,omitempty"`
+	Processes   map[string]Process `json:"processes,omitempty" yaml:"processes,omitempty"`
+	Taints      []RKETaint         `json:"taints,omitempty" yaml:"taints,omitempty"`
+}