Multiarch Tuning Operator release notes
The Multiarch Tuning Operator (MTO) optimizes workload management within multi-architecture clusters and in single-architecture clusters transitioning to multi-architecture environments. Use the release notes to track the development of the Multiarch Tuning Operator.
Additional resources
Release notes for the Multiarch Tuning Operator 1.3.4
The release notes for the Multiarch Tuning Operator 1.3.4 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 8 September 2026
Enhancements
- MTO has been updated to use
goversion 1.26.7.
Bug fixes
- Previously, deleting a
ClusterPodPlacementConfigobject immediately after creation could leave the object stuck with a deletion timestamp and finalizer, and operand resources could remain. With this update, the Operator reads the current object state so deletion is processed correctly. (MULTIARCH-6269) - Previously, the enoexec-event-daemon DaemonSet could fail to start because its ServiceAccount image pull secret was not yet available. With this update, the Operator waits until the ServiceAccount pull secret is provisioned before creating the DaemonSet. (MULTIARCH-6270)
- Previously, OLM CSV lifecycle cycling could prevent the Operator from reaching a stable installed state and block
ClusterPodPlacementConfigfinalizer processing. With this update, the Operator converges after installation and can processClusterPodPlacementConfigdeletion. (MULTIARCH-6271)
Security fixes
- Previously, the Operator and pod placement controller ServiceAccounts had cluster-wide permission to read Secrets. With this update, Secret access is limited to the permissions required for image inspection. (MULTIARCH-6187)
- Previously, the Operator ServiceAccount could create, update, or delete any
MutatingWebhookConfiguration. With this update, update, patch, and delete permissions are restricted to the webhook configuration that the Operator manages. (MULTIARCH-6188) - Previously, the Operator ServiceAccount had unscoped write access to
ClusterRoles,ClusterRoleBindings,Roles, andRoleBindings. With this update, those write permissions are restricted to the operand resources that the Operator manages. (MULTIARCH-6189) - Previously, the
pod-placement-controllerused hostPath mounts that could create directories on the node. With this update, the/etc/containers/hostPath mount requires the directory to already exist and does not create it. (MULTIARCH-6191) - Previously, the image-architecture cache used a hash that was not collision-resistant. With this update, the cache key uses a collision-resistant hash. (MULTIARCH-6193)
- Previously, architecture strings and error messages from container registries were written to pod labels, annotations, and events without validation. With this update, architecture values are validated against supported architectures, and error messages are truncated before they are written to pod metadata. (MULTIARCH-6194)
CVEs
Release notes for the Multiarch Tuning Operator 1.3.3
The release notes for the Multiarch Tuning Operator 1.3.3 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 28 July 2026
Enhancements
- MTO has been updated to use
goversion 1.26.4.
Release notes for the Multiarch Tuning Operator 1.3.2
The release notes for the Multiarch Tuning Operator 1.3.2 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 13 July 2026
Bug fixes
- Previously, when deleting a
ClusterPodPlacementConfigwith theexecFormatErrorMonitorplugin enabled, the MTO could get stuck in aDeletingstate because some resources were not deleted. With this update, all relevant resources are removed so that the deletion is successful. (MULTIARCH-6186) - Previously, a race condition between the
eNoExecEventdaemon and the handler controller caused theENoExecEventCR to be rolled back before its status could be set, preventing any exec format errors from being recorded. With this update the conflict so events are captured successfully. (MULTIARCH-6207) - Previously, deleting a
ClusterPodPlacementConfigobject could tear down the webhook and operand resources whilePodPlacementConfigsstill existed, orphaning them without the resources they depend on. The deletion is now properly gated and blocks if anyPodPlacementConfigobjects remain. (MULTIARCH-6236)
Enhancements
- MTO has been updated to use
goversion 1.26.3. - When the MTO is unable to connect to an image registry, the resulting error message has been improved to better explain the error. (MULTIARCH-5541)
- The MTO API has been updated to use
runtime.NewSchemeBuilderinstead of the deprecatedscheme.Builder. (MULTIARCH-6272)
Release notes for the Multiarch Tuning Operator 1.3.1
The release notes for the Multiarch Tuning Operator 1.3.1 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 1 July 2026
Enhancements
- MTO has been updated to use
goversion 1.25.9.
Release notes for the Multiarch Tuning Operator 1.3.0
The release notes for the Multiarch Tuning Operator 1.3.0 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 6 April 2026
New features and enhancements
- With this release, after you create a
ClusterPodPlacementConfigobject, you can create namespace-scopedPodPlacementConfigobjects for the purposes of configuring pod placement at the namespace level.PodPlacementConfigobjects modify the behavior of the pod placement controller at the namespace level, and take precedence over theClusterPodPlacementConfigobject. For more information, see Creating the namespace-scoped PodPlacementConfig object. - With this release, you can specify a fallback architecture where pods are scheduled if the image inspector cannot determine the architecture of the image. For more information, see Creating the ClusterPodPlacementConfig object.
Bug fixes
- Previously, an error could occur that led to an
ENoExecEventcustom resource (CR) failing to be deleted. This leftover CR resulted in the failure to uninstall theexecFormatErrorMonitorplugin. With this update, theexecFormatErrorMonitorplugin can be uninstalled if there are leftoverENoExecEventCRs. Deleting theClusterPodPlacementConfigobject removes all remaining CRs regardless of their state. (MULTIARCH-5642) - Previously, the Multiarch Tuning Operator (MTO) processed images that contained attestation manifests, leading to the incorrect creation of an "unknown" architecture. Pods could fail to be scheduled when they tried to target the "unknown" architecture. With this update, the MTO does not process attestation manifests, and the "unknown" architecture is not created. (MULTIARCH-5800)
Enhancements
- MTO has been updated to use
goversion 1.25.7.
Release notes for the Multiarch Tuning Operator 1.2.2
The release notes for the Multiarch Tuning Operator 1.2.2 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 6 February 2026
Enhancements
- With this update, MTO uses the Red Hat Universal Base Image (UBI) 9 minimal image. This change improves compatibility with OpenShift Container Platform ecosystems.
- MTO has been updated to use
goversion 1.25.3,k8sversion 1.34.1, and Operator SDK v4 version 1.33. - The
ENoExecEvent.Status.Commandfield has been removed from theENoExecEventcustom resource. This field was not in use.
Release notes for the Multiarch Tuning Operator 1.2.1
The release notes for the Multiarch Tuning Operator 1.2.1 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 15 December 2025
Bug fixes
- Previously, the Multiarch Tuning Operator image inspector incorrectly processed images whose registry address included a digest, tag, and port number. The port portion of the registry was incorrectly interpreted as an image tag and was trimmed, causing the inspector to construct an invalid image reference. With this update, image references that contain a digest, tag, and registry port are now correctly parsed and handled. (MULTIARCH-5767)
Release notes for the Multiarch Tuning Operator 1.2.0
The release notes for the Multiarch Tuning Operator 1.2.0 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 22 October 2025
New features and enhancements
- With this release, you can enable the
exec format error monitorplugin for the Multiarch Tuning Operator. This plugin detectsENOEXECerrors, which occur when a pod attempts to execute a binary incompatible with the node’s architecture. You enable this plugin by setting theplugins.execFormatErrorMonitor.enabledparameter totruein theClusterPodPlacementConfigobject. For more information, see Creating the ClusterPodPlacementConfig object.
Bug fixes
- Previously, the Multiarch Tuning Operator incorrectly handled the Operator bundle image inspector, restricting the inspector to a single architecture, which could cause OLM to fail when installing Operators. With this update, MTO now sets the bundle image to support all architectures, allowing Operators to be successfully installed on single-architecture clusters when the Multiarch Tuning Operator is deployed. (MULTIARCH-5546)
- Previously, when a cluster global pull secret was changed, stale authentication information could remain in the Multiarch Tuning Operator cache. With this update, the cache is cleared whenever a cluster global pull secret is changed. (MULTIARCH-5538)
- Previously, the Multiarch Tuning Operator failed to process pods if an image reference contained both a tag and a digest. With this update, the image inspector prioritizes the digest if both are present. (MULTIARCH-5584)
- Previously, the Multiarch Tuning Operator did not respect the
.spec.registrySources.containerRuntimeSearchRegistriesfield in theconfig.openshift.io/Imagecustom resource when a workload image did not specify a registry URL. With this update, the Operator can now handle this case, allowing workload images without an explicit registry URL to be pulled successfully. (MULTIARCH-5611) - Previously, if the
ClusterPodPlacementConfigobject was deleted less than 1 second after its creation, some finalizers were not removed in time, causing certain resources to remain. With this update, all finalizers are properly deleted when theClusterPodPlacementConfigobject is deleted. (MULTIARCH-5372)
Release notes for the Multiarch Tuning Operator 1.1.1
The release notes for the Multiarch Tuning Operator 1.1.1 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 27 May 2025
Bug fixes
- Previously, the pod placement operand did not support authenticating registries using wildcard entries in the hostname of their pull secret. This caused inconsistent behavior with Kubelet when pulling images, because Kubelet supported wildcard entries while the operand required exact hostname matches. As a result, image pulls could fail unexpectedly when registries used wildcard hostnames. With this release, the pod placement operand supports pull secrets that include wildcard hostnames, ensuring consistent and reliable image authentication and pulling.
- Previously, when image inspection failed after all retries and the
nodeAffinityScoringplugin was enabled, the pod placement operand applied incorrectnodeAffinityScoringlabels. With this release, the operand setsnodeAffinityScoringlabels correctly, even when image inspection fails. The operand now applies these labels independently of the required affinity process to ensure accurate and consistent scheduling.
Release notes for the Multiarch Tuning Operator 1.1.0
The release notes for the Multiarch Tuning Operator 1.1.0 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 18 March 2024
New features and enhancements
- The Multiarch Tuning Operator is now supported on managed offerings, including ROSA with Hosted Control Planes (HCP) and other HCP environments.
- With this release, you can configure architecture-aware workload scheduling by using the new
pluginsfield in theClusterPodPlacementConfigobject. You can use theplugins.nodeAffinityScoringfield to set architecture preferences for pod placement. If you enable thenodeAffinityScoringplugin, the scheduler first filters out nodes that do not meet the pod requirements. The scheduler then prioritizes the remaining nodes based on the architecture scores defined in thenodeAffinityScoring.platformsfield.
Bug fixes
- With this release, the Multiarch Tuning Operator does not update the
nodeAffinityfield for pods that are managed by a daemon set. (OCPBUGS-45885)
Release notes for the Multiarch Tuning Operator 1.0.0
The release notes for the Multiarch Tuning Operator 1.0.0 summarize all new features and enhancements, notable technical changes, major corrections from the previous version, and any known bugs upon general availability.
Issued: 31 October 2024
New features and enhancements
- With this release, the Multiarch Tuning Operator supports custom network scenarios and cluster-wide custom registries configurations.
- With this release, you can identify pods based on their architecture compatibility by using the pod labels that the Multiarch Tuning Operator adds to newly created pods.
- With this release, you can monitor the behavior of the Multiarch Tuning Operator by using the metrics and alerts that are registered in the Cluster Monitoring Operator.