- Home
- Release notes
- Enhancements
Enhancements#
Detail on the enhancements introduced in MKE 4.2.1 includes:
Scheduled backups and backup encryption#
MKE 4.2.1 can take backups on a schedule, encrypt backup archives, verify them before restore, and keep a record of every backup.
The etcd maintenance service runs scheduled backups on the controllers of the
management cluster. Configure the schedule in the spec.backup.schedule
section of the mke4.yaml configuration file:
enabled: Turns scheduled backups on or off.cronExpression: Backup schedule in cron format. Consecutive runs must be at least 5 minutes apart.path: Directory that stores the backup archives. Default:/var/lib/mke/backups.retain: Number of archives to keep on each node. Default:30. Set to0to keep all archives.replication:AllControllers(default) orLeaderOnly.includeLogs: Includes logs in the backup archive.configSnapshotFallback:None(default) orLastKnownGood.
The upgrade from MKE 3 migrates an existing MKE 3 backup schedule.
Backup encryption and verification work as follows:
- The
mkectl backupcommand requires either the--passphraseoption or the--no-passphraseoption. The passphrase must be at least 12 characters long. Pass-as the value to read the passphrase from stdin. The same requirement applies to themkectl node addandmkectl node removecommands for control plane nodes, unless you pass--skip-snapshot. - Scheduled backups read the passphrase from the Secret that
spec.backup.schedule.encryption.passphraseSecretRef.namenames. The Secret must reside in themkenamespace, store the passphrase under thepassphrasekey, and carry themke.mirantis.com/backup-passphrase=truelabel. - Archives encrypted with the passphrase from the Secret record a key ID, which
mkectl restoreuses to identify the passphrase that opens the archive. - The
mkectl backupcommand prints an MD5 checksum of the archive. Pass the checksum tomkectl restore --md5to verify the archive before the restore changes the cluster.
Every backup, whether scheduled, manual, or taken by mkectl upgrade, writes an
MkeBackup record to the mke namespace:
- The record contains the backup result, the archive size, the MD5 digest, and the MKE build and k0s version that produced the backup.
spec.backup.historyRetainsets the number of records to keep. Default:200. MKE never prunes the most recent successful record.
Additional backup controls:
- Backups bundle the MKE configuration that the operator last applied. Use
mkectl backup --config-snapshot-fallbackandmkectl restore --accept-noncurrent-configto control backup and restore behavior when that configuration is not current. - Set
spec.backup.tempDir, or pass--temp-dirtomkectl backup,mkectl restore,mkectl upgrade, and the control planemkectl node addandmkectl node removecommands, to move the staging directory off a small/tmppartition.
Important
Update any scripts that run mkectl backup without options. The command
now fails unless you pass either --passphrase or --no-passphrase.
Authenticated registry pulls#
MKE can now pull images and charts with a registry account instead of anonymously. Authenticated pulls are supported for fresh installs, child clusters, and upgrades from MKE 3 and MKE 4.
- Set
spec.registries.imageRegistry.credentialsSecretNameandspec.registries.chartRegistry.credentialsSecretName, then pass the account tomkectl applywith the--image-registry-username,--image-registry-password,--chart-registry-username, and--chart-registry-passwordoptions. mkectl stores the account in akubernetes.io/dockerconfigjsonSecret with the configured name in themkenamespace, and reuses it on latermkectl applyruns and MKE 4 upgrades. - For an upgrade from MKE 3, pass the same options to
mkectl upgrade. - For child clusters, create the Secret in the
mkenamespace of the management cluster and reference it from theMkeChildConfigresource. - To keep passwords off the command line, set the
MKE_IMAGE_REGISTRY_PASSWORDandMKE_CHART_REGISTRY_PASSWORDenvironment variables. - The
mkectl restorecommand accepts the same registry options.
Important
Serve the authenticated registry over HTTPS. mkectl never sends
credentials to a registry with a plain http:// address.
Organization and team resources#
MKE 4 now stores organizations and teams, including their members, grants, and
LDAP sync settings, as dedicated resources instead of labeled ClusterRoles.
Controllers in dex-http-server reconcile these resources into Kubernetes RBAC,
and the MKE 4 Dashboard and accounts API manage them directly. The upgrade from
MKE 4.2.0 and from MKE 3 converts existing organizations, teams, and grants
automatically.
The new spec.authentication.ldap.noSimplePagination option applies to the
LDAP sync searches that dex-http-server runs. The upgrade from MKE 3 migrates
the setting.
Authentication proxy#
MKE 4 can now route outbound authentication traffic through a proxy, which allows clusters without direct internet egress to reach an external OIDC identity provider. Configure it in spec.authentication.proxy of the
mke4.yaml configuration file or in the MKE 4 Dashboard under Admin Settings >
Authentication > Proxy. The proxy does not apply to LDAP and is disabled
by default. The upgrade from MKE 3 does not migrate MKE 3 proxy settings.
For more information, refer to Authentication proxy.
Child cluster infrastructure updates#
You can now change the infrastructure settings of existing AWS and vSphere child clusters.
- MKE names MachineTemplates by a hash of their content, so a configuration change rolls out new machines instead of failing on an immutable template.
- You cannot change the vSphere
controlPlaneEndpointIPafter you create the cluster. - Remote child clusters do not require this mechanism. MKE updates their
mutable
PooledRemoteMachineobjects in place.
Child cluster configuration also changes as follows:
- All infrastructure settings now reside under
spec.infrastructure.configuration, which MKE validates for AWS and vSphere.spec.infrastructure.regionis deprecated in favor ofspec.infrastructure.configuration.region. - A child cluster can read its license from a Secret of type
mke.mirantis.com/licensethroughspec.license.secretRef. The inlinespec.license.tokenfield is deprecated for child clusters.
Control plane node add and remove#
- The
mkectl node addandmkectl node removecommands now add and remove control plane nodes when you pass--scope=controller+worker. The default scope isworker. - For control plane nodes, the command takes an etcd backup before and after
the change. Pass
--passphraseor--no-passphrasefor the backups, or pass--skip-snapshotto skip them. - When
mkectl applyjoins new control plane nodes, MKE restarts the Deployments and StatefulSets in themkeandk0rdentnamespaces so that their Pods spread across all controllers. This includes themkectl applyrun that rejoins controllers aftermkectl restore. Themkectl node addcommand does not restart these workloads.
NodeLocalDNS on the Calico eBPF dataplane#
NodeLocalDNS can now be enabled on clusters that run the Calico eBPF dataplane. The combination was previously rejected by validation, as kube-proxy is disabled by design on an eBPF cluster and NodeLocalDNS relied on the kube-proxy iptables rules to intercept DNS traffic.
- On an eBPF cluster, MKE excludes the kube-dns ClusterIP from eBPF NAT so that
the node-local cache can intercept pod DNS queries. The exclusion is applied
and removed automatically, in the correct order relative to the
node-local-dnsDaemonSet, so that enabling or disabling NodeLocalDNS completes in a singlemkectl applycommand without a sustained DNS outage. - To turn NodeLocalDNS on, you only need to set
spec.nodeLocalDNS.enabledtotrueand run themkectl applycommand. No Calico or Felix configuration is required. - The
spec.network.kubeProxy.disabled: truesetting is accepted alongsidespec.nodeLocalDNS.enabled: true.
Support is for parent and standalone clusters. The Calico eBPF dataplane is not supported on child clusters, and NodeLocalDNS on child clusters is unchanged. For detail, refer to NodeLocalDNS on the Calico eBPF dataplane.
System components rebalance when control plane nodes join cluster#
MKE 4 now automatically redistributes system components across the control plane
nodes when you add control plane nodes with mkectl node add --scope
controller+worker, including when the remaining controllers rejoin the cluster
after a restore. Previously, the components remained on the bootstrap node until
you manually ran kubectl rollout restart. Redistribution occurs only when the
operation changes etcd membership, and does not apply to single-controller
clusters. For more information, refer to
Workload redistribution.
Operating systems#
- MKE 4.2.1 supports Ubuntu 26.04 and RHEL 9.8.
- Ubuntu 26.04 GPU nodes require NVIDIA GPU Operator 26.7.0, which ships with MKE 4.2.1.