ManagedOSImage reference

The ManagedOSImage resource is responsible of defining an OS image or image version that needs to be applied to each node in a set of targeted Clusters.

There are several keys that can be configured under a ManagedOSImage resource spec.

upgrade-cluster-target.yaml
apiVersion: elemental.cattle.io/v1beta1
kind: ManagedOSImage
metadata:
  name: my-upgrade
  namespace: fleet-default
spec:
  # Set to the new SUSE® Rancher Prime OS Manager version you would like to upgrade to or track the latest tag
  osImage: "registry.suse.com/suse/sle-micro/5.5:latest"
  clusterTargets:
    - clusterName: my-cluster

ManagedOSImageSpec reference

Key Type Default value Description

osImage

string

empty

The fully qualified image to upgrade nodes to. This value has priority over managedOSVersionName if both are configured.

managedOSVersionName

string

empty

The name of a ManagedOSVersion to upgrade nodes to.

cloudConfig

object

null

A cloud-init or yip config to apply to the nodes during upgrades. See reference.

nodeSelector

object

null

This selector can be used to target specific nodes within the clusterTargets. See reference.

concurrency

int

1

How many nodes within the same cluster should be upgraded at the same time.

cordon

bool

true

Set this to true if the nodes should be cordoned before applying the upgrade. Ineffective when drain is also configured.

drain

object

See ref

Configure if and how nodes should be drained before applying the upgrade. See reference.

prepare

object

null

The prepare init container, if specified, is run before cordon/drain which is run before the upgrade container. See reference.

upgradeContainer

object

null

The upgrade container that will run the upgrade on the nodes. See reference.

clusterRolloutStrategy

object

null

RolloverStrategy controls the rollout of the upgrade bundle across clusters. See reference.

clusterTargets

list

null

Declares clusters to deploy the upgrade plan to. See reference.

cloudConfig

This describes a cloud-init or yip config that will be copied to each upgraded node to the /oem/90_operator.yaml path.
This config will be applied by the system after reboot.
For more information and examples, see the MachineRegistration spec.config.cloud-config reference.

nodeSelector

This Label Selector can be used to restrict the upgrades to only a certain set of nodes within the targeted Clusters.

Click here for details
nodeSelector:
  matchExpressions:
  - {key: my-node/label, operator: Exists}

drain

Configure if and how nodes should be drained.
To disable drain during upgrades you can configure this field to null.
Drain is enabled by default.

The drain settings directly translates to the kubectl drain command being executed on the node before upgrade.

Key Type Default value Description

timeout

time.Duration

null

The length of time to wait before giving up draining a node, zero means infinite.

gracePeriod

int

null

Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used.

deleteEmptydirData

bool

true

Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).

ignoreDaemonSets

bool

true

Ignore DaemonSet-managed pods.

force

bool

true

Continue even if there are pods that do not declare a controller.

disableEviction

bool

false

Force drain to use delete, even if eviction is supported. This will bypass checking PodDisruptionBudgets, use with caution.

skipWaitForDeleteTimeout

int

60

If pod DeletionTimestamp older than N seconds, skip waiting for the pod. Seconds must be greater than 0 to skip.

podSelector

label selector

null

Label selector to filter pods on the node. Only selected pods will be evicted.

prepare

Defines a prepare Init container that is ran before the upgrade container executing the upgrade job on a node.
The keys directly translate to the container specification.
Note that the node filesystem is mounted at /host inside the container.

Key Type Default value Description

image

string

empty

Container image name.

command

list

empty

Entrypoint array.

args

list

empty

Arguments to the entrypoint.

env

list

empty

List of environment variables to set in the container.

envFrom

list

empty

List of sources to populate environment variables in the container.

volumes

list

empty

List of hostPath volumes. See reference.

securityContext

object

null

The security options the ephemeral container should be run with.

prepare.volumes

Each volume definition will translate to a hostPath volume (source) which will be mounted in the container (destination).
Note that by default the host root filesystem / will always be mounted at /host.

Key Type Default value Description

name

string

empty

Volume name.

source

string

empty

HostPath volume path.

destination

string

empty

HostPath volume mount path.

Click here for details
volumes:
  - name: my-custom-volume
    source: /foo
    destination: /foo

upgradeContainer

Defines the upgrade container executing the upgrade job on a node.
The keys directly translate to the container specification.
Note that the node filesystem is mounted at /host inside the container.

When using any SUSE® Rancher Prime OS Manager or SUSE® Rancher Prime OS Manager based image you are expected to only edit the env key to optionally set the FORCE, UPGRADE_RECOVERY, or UPGRADE_RECOVERY_ONLY variables.
For more info you can read the upgrade documentation.
Any other change to the upgradeContainer may result in issues during upgrades.

clusterRolloutStrategy

This controls the rollout of the bundle across clusters.
For more information you can read the reference documentation.

clusterTargets

Select Clusters to be targeted for the OS image upgrade.
For more information you can read the reference documentation.

Click here for details
clusterTargets:
  - clusterName: volcano