Skip to content

AGENT-1454: Enforce APIServer TLS profile on IRI registry#5776

Open
rwsu wants to merge 1 commit intoopenshift:mainfrom
rwsu:AGENT-1454-tls-policy
Open

AGENT-1454: Enforce APIServer TLS profile on IRI registry#5776
rwsu wants to merge 1 commit intoopenshift:mainfrom
rwsu:AGENT-1454-tls-policy

Conversation

@rwsu
Copy link

@rwsu rwsu commented Mar 17, 2026

- What I did

Read the cluster's APIServer TLS security profile and apply it to the IRI registry's REGISTRY_HTTP_TLS_MINIMUMTLS and REGISTRY_HTTP_TLS_CIPHERSUITES environment variables. When no profile is set, the Intermediate profile (TLS 1.2) is used as the default.

The implementation:

  • Adds an APIServer informer to the IRI controller so TLS profile changes trigger reconciliation
  • Converts OpenShift TLS version strings (e.g. "VersionTLS12") to the registry format (e.g. "tls1.2") programmatically, supporting future TLS versions without code changes
  • Filters cipher suites to only pass configurable ones (TLS 1.2 and below) to the registry, since TLS 1.3+ ciphers are fixed by the protocol. Uses Go's CipherSuite.SupportedVersions for future-proof detection
  • Updates bootstrap path to pass TLS profile through
  • Adds unit test for Modern TLS profile (TLS 1.3)
  • Adds e2e test that dynamically verifies TLS enforcement based on the cluster's active profile
  • Add a NodeDisruptionPolicy to allow rebootless updates to IRI TLS setting. Nodes are still rebooted when the cluster's TLSSecurityProfile is changed because of changes to the kubelet config and kube-rbac-proxy-crio static pod do not have a NodeDisruptionPolicy that prevent reboots.

- How to verify it

Update the cluster TLSSecurtyProfile to Modern (TLS 1.3)

oc patch apiserver cluster --type merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern","modern":{}}}}'    

Check /etc/systemd/system/iri-registry.service is updated to set TLS1.3 as mininum TLS version supported.

-e REGISTRY_HTTP_TLS_MINIMUMTLS=tls1.3

- Description for the changelog

Enforce APIServer TLS security profile on the IRI registry.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 17, 2026
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Mar 17, 2026

@rwsu: This pull request references AGENT-1454 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

- What I did

Read the cluster's APIServer TLS security profile and apply it to the IRI registry's REGISTRY_HTTP_TLS_MINIMUMTLS and REGISTRY_HTTP_TLS_CIPHERSUITES environment variables. When no profile is set, the Intermediate profile (TLS 1.2) is used as the default.

The implementation:

  • Adds an APIServer informer to the IRI controller so TLS profile changes trigger reconciliation
  • Converts OpenShift TLS version strings (e.g. "VersionTLS12") to the registry format (e.g. "tls1.2") programmatically, supporting future TLS versions without code changes
  • Filters cipher suites to only pass configurable ones (TLS 1.2 and below) to the registry, since TLS 1.3+ ciphers are fixed by the protocol. Uses Go's CipherSuite.SupportedVersions for future-proof detection
  • Updates bootstrap path to pass TLS profile through
  • Adds unit test for Modern TLS profile (TLS 1.3)
  • Adds e2e test that dynamically verifies TLS enforcement based on the cluster's active profile
  • Add a NodeDisruptionPolicy to allow rebootless updates to IRI TLS setting. Nodes are still rebooted when the cluster's TLSSecurityProfile is changed because of changes to the kubelet config and kube-rbac-proxy-crio static pod do not have a NodeDisruptionPolicy that prevent reboots.

- How to verify it

Update the cluster TLSSecurtyProfile to Modern (TLS 1.3)

oc patch apiserver cluster --type merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern","modern":{}}}}'    

Check /etc/systemd/system/iri-registry.service is updated to set TLS1.3 as mininum TLS version supported.

-e REGISTRY_HTTP_TLS_MINIMUMTLS=tls1.3

- Description for the changelog

Enforce APIServer TLS security profile on the IRI registry.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link

coderabbitai bot commented Mar 17, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 90ffd3bc-e836-4080-82b7-b576a3894c24

📥 Commits

Reviewing files that changed from the base of the PR and between d3cdd54 and 5e89db1.

📒 Files selected for processing (13)
  • cmd/machine-config-controller/start.go
  • pkg/apihelpers/apihelpers.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_controller.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_controller_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_helpers_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_renderer_test.go
  • pkg/controller/internalreleaseimage/templates/master/units/iri-registry.service.yaml
  • pkg/daemon/constants/constants.go
  • test/e2e-iri/iri_test.go
🚧 Files skipped from review as they are similar to previous changes (2)
  • pkg/daemon/constants/constants.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap.go

Walkthrough

Wires APIServer informer into the internalreleaseimage controller, propagates APIServer TLSSecurityProfile through bootstrap and renderer, translates TLS profile to registry env vars, updates the iri-registry systemd unit, and adds related unit, controller, and e2e tests and helpers.

Changes

Cohort / File(s) Summary
Controller Startup
cmd/machine-config-controller/start.go
Passes APIServers informer (Config().V1().APIServers()) into internalreleaseimage controller constructor.
Bootstrap & Signatures
pkg/controller/bootstrap/bootstrap.go, pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap.go, pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap_test.go
RunInternalReleaseImageBootstrap gains a tlsProfile *configv1.TLSSecurityProfile parameter; bootstrap call sites updated to supply tlsProfile; tests adjusted to pass nil where applicable.
Controller & Informer Wiring
pkg/controller/internalreleaseimage/internalreleaseimage_controller.go, pkg/controller/internalreleaseimage/internalreleaseimage_controller_test.go
Adds APIServer informer/lister and synced state, registers APIServer handlers, includes APIServer cache sync, logs TLS profile changes, and retrieves/pass TLS profile into renderer; tests extended with APIServer fixtures and TLS-focused cases.
Renderer & TLS Logic
pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go, pkg/controller/internalreleaseimage/internalreleaseimage_renderer_test.go
Renderer.NewRendererByRole now accepts/stores TLS profile; renderContext populated with TLSMinVersion and TLSCipherSuites via registryTLSFromProfile; adds cipher filtering/formatting helpers and unit tests for TLS version mapping.
Templates & Service Unit
pkg/controller/internalreleaseimage/templates/master/units/iri-registry.service.yaml
ExecStart extended to inject REGISTRY_HTTP_TLS_MINIMUMTLS and conditional REGISTRY_HTTP_TLS_CIPHERSUITES; adds restart/timeouts and an [Install] section.
Tests & Helpers
pkg/controller/internalreleaseimage/internalreleaseimage_helpers_test.go, pkg/controller/internalreleaseimage/internalreleaseimage_controller_test.go, test/e2e-iri/iri_test.go
Adds apiServerBuilder test helper, updates unit tests to assert TLS-related envs, and introduces e2e test TestIRIController_VerifyTLSProfileEnforced plus helper mapping TLS profiles to curl versions.
Policies & Constants
pkg/apihelpers/apihelpers.go, pkg/daemon/constants/constants.go
Adds NodeDisruptionPolicyStatusUnit for IRIRegistry service to default policies and introduces exported constant IRIRegistryServiceName.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci bot requested review from andfasano and bfournie March 17, 2026 21:56
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 17, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: rwsu
Once this PR has been reviewed and has the lgtm label, please assign rishabhsaini for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@rwsu rwsu force-pushed the AGENT-1454-tls-policy branch from c0ee0b8 to ce4565f Compare March 18, 2026 02:56
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/e2e-iri/iri_test.go`:
- Around line 153-160: The current logic only special-cases Modern and treats
any other non-nil TLSSecurityProfile as Intermediate (setting profileName,
expectedMinVersion, rejectedVersion), which is incorrect for Old and Custom
profiles; replace that branch with a switch on
apiServerCfg.Spec.TLSSecurityProfile.Type (checking configv1.TLSProfileOldType,
TLSProfileIntermediateType, TLSProfileModernType, TLSProfileCustomType) and set
profileName/expectedMinVersion/rejectedVersion per profile (e.g. Old ->
"Old"/"1.0"/"1.1", Intermediate -> "Intermediate"/"1.2"/"1.1", Modern ->
"Modern"/"1.3"/"1.2"); for Custom, inspect the TLSSecurityProfile custom
settings to derive the actual minimum TLS version (use that value for
expectedMinVersion and compute rejectedVersion accordingly) and if the custom
minimum cannot be determined, skip the test explicitly. Ensure you reference
apiServerCfg.Spec.TLSSecurityProfile, profileName, expectedMinVersion, and
rejectedVersion when making changes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 77703d66-53f0-40ed-b7b3-151ef7ac0edb

📥 Commits

Reviewing files that changed from the base of the PR and between c0ee0b8 and ce4565f.

📒 Files selected for processing (13)
  • cmd/machine-config-controller/start.go
  • pkg/apihelpers/apihelpers.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_controller.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_controller_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_helpers_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_renderer_test.go
  • pkg/controller/internalreleaseimage/templates/master/units/iri-registry.service.yaml
  • pkg/daemon/constants/constants.go
  • test/e2e-iri/iri_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap_test.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/apihelpers/apihelpers.go

@rwsu rwsu force-pushed the AGENT-1454-tls-policy branch from ce4565f to d3cdd54 Compare March 18, 2026 03:44
@rwsu
Copy link
Author

rwsu commented Mar 18, 2026

/verified by @rwsu tested IRI registry TLS settings are updated when cluster level APIServer 's TLSSecurityProfile is changed. Also have e2e test to verify enforcement of currently active profile. And unit test that verifies profile changes produces the correct systemd unit content.

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Mar 18, 2026
@openshift-ci-robot
Copy link
Contributor

@rwsu: This PR has been marked as verified by @rwsu tested IRI registry TLS settings are updated when cluster level APIServer 's TLSSecurityProfile is changed. Also have e2e test to verify enforcement of currently active profile. And unit test that verifies profile changes produces the correct systemd unit content..

Details

In response to this:

/verified by @rwsu tested IRI registry TLS settings are updated when cluster level APIServer 's TLSSecurityProfile is changed. Also have e2e test to verify enforcement of currently active profile. And unit test that verifies profile changes produces the correct systemd unit content.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
test/e2e-iri/iri_test.go (1)

185-223: Keep the e2e TLS-version mapping aligned with production.

This helper hard-codes 1.0-1.3, but openShiftTLSVersionToRegistryVersion() in pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go was explicitly written to handle VersionTLS14+. A newer configv1.TLSProtocolVersion will break the test even if the renderer keeps working. Derive the curl version string from the VersionTLSxx token here too, or extract a shared helper.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e-iri/iri_test.go` around lines 185 - 223, The test currently uses a
hard-coded tlsVersionMap (tlsVersionMap) which will break when new
configv1.TLSProtocolVersion values are added; instead derive the curl-compatible
version from the TLS token or reuse the existing conversion logic
(openShiftTLSVersionToRegistryVersion in
pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go). Replace
the hard-coded lookup: compute expectedMinVersion from minTLSVersion by
converting the configv1.TLSProtocolVersion token (or calling
openShiftTLSVersionToRegistryVersion) and compute rejectedVersion as the prior
TLS minor version (or empty if none); update the references expectedMinVersion
and rejectedVersion accordingly and remove the static tlsVersionMap.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/e2e-iri/iri_test.go`:
- Around line 171-175: The test currently treats any non-zero command exit as a
server-side TLS rejection; instead capture and inspect the command output from
helpers.ExecCmdOnNodeWithError (the returned stdout/http code) and assert the
HTTP status indicates rejection (for example require.NotEqual(t, "200", code) or
require.Equal(t, "<expected_rejection_code>", code)) rather than only checking
err != nil; update the t.Run block that calls helpers.ExecCmdOnNodeWithError to
read the returned string (HTTP code), assert on that value for server-side
rejection, and only fail on err when the command truly failed to execute (e.g.,
use require.NoError for execution problems and explicit assertions on the HTTP
code for TLS rejection).

---

Nitpick comments:
In `@test/e2e-iri/iri_test.go`:
- Around line 185-223: The test currently uses a hard-coded tlsVersionMap
(tlsVersionMap) which will break when new configv1.TLSProtocolVersion values are
added; instead derive the curl-compatible version from the TLS token or reuse
the existing conversion logic (openShiftTLSVersionToRegistryVersion in
pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go). Replace
the hard-coded lookup: compute expectedMinVersion from minTLSVersion by
converting the configv1.TLSProtocolVersion token (or calling
openShiftTLSVersionToRegistryVersion) and compute rejectedVersion as the prior
TLS minor version (or empty if none); update the references expectedMinVersion
and rejectedVersion accordingly and remove the static tlsVersionMap.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 650bf98d-06a6-4a1b-b1ed-ae3950651436

📥 Commits

Reviewing files that changed from the base of the PR and between ce4565f and d3cdd54.

📒 Files selected for processing (13)
  • cmd/machine-config-controller/start.go
  • pkg/apihelpers/apihelpers.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_bootstrap_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_controller.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_controller_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_helpers_test.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_renderer.go
  • pkg/controller/internalreleaseimage/internalreleaseimage_renderer_test.go
  • pkg/controller/internalreleaseimage/templates/master/units/iri-registry.service.yaml
  • pkg/daemon/constants/constants.go
  • test/e2e-iri/iri_test.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • pkg/controller/internalreleaseimage/internalreleaseimage_helpers_test.go
  • pkg/controller/bootstrap/bootstrap.go
  • cmd/machine-config-controller/start.go
  • pkg/apihelpers/apihelpers.go

Comment on lines +171 to +175
t.Run(fmt.Sprintf("below minimum is rejected with %s profile", profileName), func(t *testing.T) {
_, err := helpers.ExecCmdOnNodeWithError(cs, node, "curl", "-s", "-k", "-o", "/dev/null", "-w", "%{http_code}",
"--tlsv"+rejectedVersion, "--tls-max", rejectedVersion,
"https://localhost:22625/v2/")
require.Error(t, err, "TLS %s should be rejected with %s profile", rejectedVersion, profileName)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cd /repo && find . -name "iri_test.go" -path "*/test/e2e-iri/*" | head -1

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

cd /repo && wc -l test/e2e-iri/iri_test.go

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

cd /repo && sed -n '160,185p' test/e2e-iri/iri_test.go

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

cd /repo && wc -l test/helpers/utils.go

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

cd /repo && sed -n '945,970p' test/helpers/utils.go

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

cd /repo && rg -n "tlsVersionsFromProfile" test/e2e-iri/

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

cd /repo && rg -n "ExecCmdOnNodeWithError" test/ -A 5 | head -50

Repository: openshift/machine-config-operator

Length of output: 132


🏁 Script executed:

find . -name "iri_test.go" -path "*/test/e2e-iri/*"

Repository: openshift/machine-config-operator

Length of output: 103


🏁 Script executed:

wc -l test/e2e-iri/iri_test.go

Repository: openshift/machine-config-operator

Length of output: 105


🏁 Script executed:

sed -n '160,185p' test/e2e-iri/iri_test.go

Repository: openshift/machine-config-operator

Length of output: 1461


🏁 Script executed:

wc -l test/helpers/utils.go

Repository: openshift/machine-config-operator

Length of output: 103


🏁 Script executed:

sed -n '945,970p' test/helpers/utils.go

Repository: openshift/machine-config-operator

Length of output: 1142


🏁 Script executed:

rg -n "tlsVersionsFromProfile" test/e2e-iri/ -A 10

Repository: openshift/machine-config-operator

Length of output: 2204


🏁 Script executed:

rg -n "ExecCmdOnNodeWithError" test/helpers/utils.go -B 5 -A 20

Repository: openshift/machine-config-operator

Length of output: 5832


Make the downgrade check verify the server-side rejection, not just command failure.

Line 172 only checks err != nil. helpers.ExecCmdOnNodeWithError() returns an error whenever the command exits non-zero, but this could result from curl's client-side TLS refusal, remote exec transport failure, missing binary, or network issues—not necessarily a server-side rejection. The positive test (line 169) correctly asserts on the HTTP status code output; the negative test should do the same. Either check the HTTP response code (e.g., for a rejected connection) or assert on the specific error message indicating server rejection, rather than relying on command failure alone.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e-iri/iri_test.go` around lines 171 - 175, The test currently treats
any non-zero command exit as a server-side TLS rejection; instead capture and
inspect the command output from helpers.ExecCmdOnNodeWithError (the returned
stdout/http code) and assert the HTTP status indicates rejection (for example
require.NotEqual(t, "200", code) or require.Equal(t,
"<expected_rejection_code>", code)) rather than only checking err != nil; update
the t.Run block that calls helpers.ExecCmdOnNodeWithError to read the returned
string (HTTP code), assert on that value for server-side rejection, and only
fail on err when the command truly failed to execute (e.g., use require.NoError
for execution problems and explicit assertions on the HTTP code for TLS
rejection).

Read the cluster's APIServer TLS security profile and apply it to the
IRI registry's REGISTRY_HTTP_TLS_MINIMUMTLS and REGISTRY_HTTP_TLS_CIPHERSUITES
environment variables. When no profile is set, the Intermediate profile
(TLS 1.2) is used as the default.

The implementation:
- Adds an APIServer informer to the IRI controller so TLS profile
  changes trigger reconciliation
- Converts OpenShift TLS version strings (e.g. "VersionTLS12") to the
  registry format (e.g. "tls1.2") programmatically, supporting future
  TLS versions without code changes
- Filters cipher suites to only pass configurable ones (TLS 1.2 and
  below) to the registry, since TLS 1.3+ ciphers are fixed by the
  protocol. Uses Go's CipherSuite.SupportedVersions for future-proof
  detection
- Updates bootstrap path to pass TLS profile through
- Adds a NodeDisruptionPolicy for iri-registry.service so TLS-only
  changes do a daemon-reload and service restart instead of a node reboot
- Adds unit test for Modern TLS profile (TLS 1.3)
- Adds e2e test that dynamically verifies TLS enforcement based on the
  cluster's active profile

Note: Changing the cluster-level APIServer TLSSecurityProfile will still
cause node reboots because it also updates the kubelet config and
kube-rbac-proxy static pod, which require a reboot. The IRI
NodeDisruptionPolicy avoids adding an additional reboot reason and will
enable rebootless updates if IRI TLS settings are changed independently
in the future.

Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
@rwsu rwsu force-pushed the AGENT-1454-tls-policy branch from d3cdd54 to 5e89db1 Compare March 18, 2026 13:18
@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Mar 18, 2026
@rwsu
Copy link
Author

rwsu commented Mar 19, 2026

/retest-required

@isabella-janssen
Copy link
Member

/test ?

@isabella-janssen
Copy link
Member

/test e2e-agent-compact-ipv4-iso-no-registry

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 19, 2026

@rwsu: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-agent-compact-ipv4-iso-no-registry 5e89db1 link false /test e2e-agent-compact-ipv4-iso-no-registry

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants