-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
4.21
-
None
-
Quality / Stability / Reliability
-
False
-
-
None
-
None
-
Yes
-
None
-
Approved
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description
An upstream change in Kubernetes (https://github.com/kubernetes/kubernetes/pull/133262) has modified the GetMappedImageConfigs() function. This has created a discrepancy between the external k8s-tests-ext binary, which uses the new version, and the openshift-tests images command, which uses an older, vendored version.
This divergence in function behavior results in different image names being returned, which breaks our metal jobs and blocks Kubernetes version bumps. The previous strategy of bumping openshift/kubernetes and openshift/origin in lockstep is no longer viable, as the blocking jobs risk creating a red payload.
A proper fix requires deep changes across OTE, openshift/origin, and openshift/kubernetes.
Proposed Solution
The long-term plan is to decouple the openshift-tests command from its vendored GetMappedImageConfigs() function and instead have it parse mapping information directly from the k8s-tests-ext output.
This involves two steps:
1. Modify k8s-tests-ext: Update the binary to add a new mapped JSON object to its output for any image that has a mapped equivalent in our infrastructure.
2. Modify openshift-tests: Update the images command to look for and parse this new mapped key. It should then use the value from this key in its own output, completely bypassing the problematic vendored function.
Example of desired k8s-tests-ext images output:
The output should be updated to include the mapped object like so:
[ { "index": 5, "registry": "gcr.io/authenticated-image-pulling", "name": "alpine", "version": "3.7", "mapped": { "index": 4, "registry": "quay.io", "name": "openshift/community-e2e-images", "version": "e2e-4-registry-k8s-io-e2e-test-images-apparmor-loader-1-4-m-K7F-syWFeA4t03" } } ... ]
This work must be completed before Kubernetes 1.34 is merged into the main branch, as that will reintroduce the breaking upstream commit.
Acceptance Criteria
* The k8s-tests-ext images command successfully outputs a JSON array containing the new mapped object for all relevant images.
* The openshift-tests images command is updated to correctly parse the mapped object from the k8s-tests-ext output.
* The final output of openshift-tests images reflects the values from the mapped object, resolving the current discrepancy.
* Metal jobs that depend on image lists are no longer blocked after this solution is implemented.