Skip to content

IR-350: add tls security profile configuration for the image registry operator - #8011

Merged
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
ricardomaraschini:pqc-image-registry
Mar 26, 2026
Merged

IR-350: add tls security profile configuration for the image registry operator#8011
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
ricardomaraschini:pqc-image-registry

Conversation

@ricardomaraschini

@ricardomaraschini ricardomaraschini commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

Configure the cluster-image-registry-operator to use the TLS security profile settings from the HostedCluster resource. This ensures the operator's serving endpoint uses ciphers and minimum TLS version that match the cluster's security requirements.

Implementation:

  • Add ConfigMap adapter to generate configv1.GenericControllerConfig with TLS settings derived from hcp.spec.configuration.apiServer.tlsSecurityProfile.
  • Mount the config and use it via --config flag on the operator deployment.
  • Reuse existing config.CipherSuites() and config.minTLSVersion() helper functions for consistency with other control plane components.

Special notes for your reviewer:

This PR is expected to fail as it depends on openshift/cluster-image-registry-operator#1297 being merged.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • New Features
    • Registry operator now provisions a controller ConfigMap and loads it at startup; the controller binds to :60000 and honors TLS security profile settings and cipher suites.
  • Deployment
    • Pod spec updated to mount and consume the controller ConfigMap at runtime.
  • Tests
    • Added tests covering config generation for multiple TLS profiles, cipher handling, and preservation of existing ConfigMap data.

@openshift-ci-robot

Copy link
Copy Markdown

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 19, 2026
@openshift-ci

openshift-ci Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci openshift-ci Bot added do-not-merge/needs-area area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release and removed do-not-merge/needs-area labels Mar 19, 2026
@coderabbitai

coderabbitai Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are limited based on label configuration.

🚫 Review skipped — only excluded labels are configured. (1)
  • do-not-merge/work-in-progress

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: a5a17e0a-30a4-45a8-8bed-45117a4fe53d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a ConfigMap named image-registry-controller-config containing config.yaml, updates the cluster-image-registry-operator Deployment to mount that ConfigMap and pass --config and --files for the mounted path, registers an adaptControllerConfig manifest adapter in the registry operator component to generate the controller YAML from the HostedControlPlane TLS profile, and adds unit tests that validate the generated YAML for multiple TLS profile variants while preserving existing ConfigMap data.

Sequence Diagram(s)

sequenceDiagram
    participant HCP as HostedControlPlane
    participant Adapter as adaptControllerConfig
    participant CM as ConfigMap (image-registry-controller-config)
    participant K8s as Kubernetes API
    participant Operator as cluster-image-registry-operator

    HCP->>Adapter: provide WorkloadContext (TLS profile)
    Adapter->>CM: populate/modify Data["config.yaml"] (servingInfo, TLS settings)
    Adapter-->>HCP: return success/error
    CM->>K8s: apply ConfigMap manifest
    K8s->>Operator: mount ConfigMap into Pod (/var/run/configmaps/...)
    K8s->>Operator: start container with --config and --files args
    Operator->>CM: read mounted config.yaml at startup
    Operator-->>K8s: serve using provided servingInfo/TLS settings
Loading
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

@coderabbitai help

@coderabbitai

coderabbitai Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

CodeRabbit commands

These commands are invoked using PR/Issue comments.

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai evaluate custom pre-merge check --instructions <custom-checks-instructions> --name <custom-checks-title> [--mode <error|warning>] to validate the custom pre-merge checks instructions. Defaults to error when --mode is omitted.
    • @coderabbitai ignore pre-merge checks to override pre-merge checks and get an approval on PR.
    • @coderabbitai run pre-merge checks to run pre-merge checks on the pull request.
    • @coderabbitai plan to generate a coding prompt for all unresolved human review comments in this PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai fix merge conflict to automatically resolve merge conflicts.
  • @coderabbitai autofix to automatically fix issues identified in unresolved review comments.
  • @coderabbitai resolve to resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai generate configuration to create a PR that adds the current resolved configuration as .coderabbit.yaml (or show it if already present).
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, support, documentation and community

  • Visit our status page to check the current availability of CodeRabbit.
  • Create a ticket on our support page for assistance with any issues or questions.
  • Visit our documentation site for detailed information on how to use CodeRabbit.
  • Join our Discord community to connect with other users and get help from the community.
  • Follow us on X/Twitter for updates and announcements.

@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor
✅ Actions performed

Full review triggered.

@ricardomaraschini
ricardomaraschini marked this pull request as ready for review March 20, 2026 11:30
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 20, 2026
@openshift-ci
openshift-ci Bot requested review from devguyio and sjenning March 20, 2026 11:30
@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

/retest

@ricardomaraschini ricardomaraschini changed the title feat(image-registry): add tls security profile configuration IR-350: add tls security profile configuration for the image registry operator Mar 23, 2026
@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 23, 2026
@openshift-ci-robot

openshift-ci-robot commented Mar 23, 2026

Copy link
Copy Markdown

@ricardomaraschini: This pull request references IR-350 which is a valid jira issue.

Details

In response to this:

What this PR does / why we need it:

Configure the cluster-image-registry-operator to use the TLS security profile settings from the HostedCluster resource. This ensures the operator's serving endpoint uses ciphers and minimum TLS version that match the cluster's security requirements.

Implementation:

  • Add ConfigMap adapter to generate configv1.GenericControllerConfig with TLS settings derived from hcp.spec.configuration.apiServer.tlsSecurityProfile.
  • Mount the config and use it via --config flag on the operator deployment.
  • Reuse existing config.CipherSuites() and config.minTLSVersion() helper functions for consistency with other control plane components.

Special notes for your reviewer:

This PR is expected to fail as it depends on openshift/cluster-image-registry-operator#1297 being merged.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • New Features
  • Registry operator now reads a deployed controller config to set its serving bind address (:60000) and honor configurable TLS security profiles and cipher suites.
  • Deployment updated to load the controller config at startup.
  • Tests
  • Added tests covering generation of controller config for various TLS profile variants (Intermediate, Modern, Old, Custom) and cipher handling.

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.

return fmt.Errorf("failed to json unmarshal config: %w", err)
}

asMap["apiVersion"] = configv1.GroupVersion.String()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Oh, configv1.GenericControllerConfig does not define metav1.TypeMeta field. Compared to GenericOperatorConfig.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You are right. I guess we could simply not set it out then.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

It needs to be set so the CVO knows which kind it is. Otherwise, it's a blind guess. Also, no field to validate the kind and version against.

@bryan-cox

Copy link
Copy Markdown
Member

/approve

@openshift-ci

openshift-ci Bot commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bryan-cox, ricardomaraschini

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

The pull request process is described 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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 23, 2026
@openshift-ci-robot

openshift-ci-robot commented Mar 24, 2026

Copy link
Copy Markdown

@ricardomaraschini: This pull request references IR-350 which is a valid jira issue.

Details

In response to this:

What this PR does / why we need it:

Configure the cluster-image-registry-operator to use the TLS security profile settings from the HostedCluster resource. This ensures the operator's serving endpoint uses ciphers and minimum TLS version that match the cluster's security requirements.

Implementation:

  • Add ConfigMap adapter to generate configv1.GenericControllerConfig with TLS settings derived from hcp.spec.configuration.apiServer.tlsSecurityProfile.
  • Mount the config and use it via --config flag on the operator deployment.
  • Reuse existing config.CipherSuites() and config.minTLSVersion() helper functions for consistency with other control plane components.

Special notes for your reviewer:

This PR is expected to fail as it depends on openshift/cluster-image-registry-operator#1297 being merged.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • New Features
  • Registry operator now loads a deployed controller config, setting its serving bind address (:60000) and honoring configurable TLS security profiles and cipher suites.
  • Deployment updated to mount and load the controller config at startup.
  • Tests
  • Added tests validating controller config generation across TLS profiles (Modern, Intermediate, Old, Custom, unspecified) and cipher handling, preserving existing ConfigMap data.

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 coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/configmap_test.go (1)

124-141: Type assertions without checks could improve debuggability.

The type assertions on lines 124 and 137 will panic if the YAML structure is unexpected, which is acceptable for test code (panic = test failure). However, using Gomega's type-safe matchers could provide clearer failure messages.

♻️ Optional: Use Gomega type-safe extraction for clearer failure messages
-			servingInfo := controllerConfig["servingInfo"].(map[string]any)
-			g.Expect(servingInfo).To(HaveKeyWithValue("bindAddress", ":60000"))
+			g.Expect(controllerConfig).To(HaveKey("servingInfo"))
+			servingInfo, ok := controllerConfig["servingInfo"].(map[string]any)
+			g.Expect(ok).To(BeTrue(), "servingInfo should be a map")
+			g.Expect(servingInfo).To(HaveKeyWithValue("bindAddress", ":60000"))
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/configmap_test.go`
around lines 124 - 141, Replace unsafe direct type assertions on
controllerConfig["servingInfo"] and servingInfo["cipherSuites"] with Gomega
type-safe expectations: first assert the presence and type of "servingInfo"
(e.g., g.Expect(controllerConfig).To(HaveKey("servingInfo"));
g.Expect(controllerConfig["servingInfo"]).To(BeAssignableToTypeOf(map[string]any{})))
then safely cast to map[string]any; similarly assert the presence and type of
"cipherSuites" on the servingInfo map (e.g.,
g.Expect(servingInfo).To(HaveKey("cipherSuites"));
g.Expect(servingInfo["cipherSuites"]).To(BeAssignableToTypeOf([]any{}))) before
converting to []any and then to []string so failures produce clear Gomega
messages rather than panics in the tests.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/configmap_test.go`:
- Around line 124-141: Replace unsafe direct type assertions on
controllerConfig["servingInfo"] and servingInfo["cipherSuites"] with Gomega
type-safe expectations: first assert the presence and type of "servingInfo"
(e.g., g.Expect(controllerConfig).To(HaveKey("servingInfo"));
g.Expect(controllerConfig["servingInfo"]).To(BeAssignableToTypeOf(map[string]any{})))
then safely cast to map[string]any; similarly assert the presence and type of
"cipherSuites" on the servingInfo map (e.g.,
g.Expect(servingInfo).To(HaveKey("cipherSuites"));
g.Expect(servingInfo["cipherSuites"]).To(BeAssignableToTypeOf([]any{}))) before
converting to []any and then to []string so failures produce clear Gomega
messages rather than panics in the tests.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: da592756-f282-4662-b716-f3719be2ae7f

📥 Commits

Reviewing files that changed from the base of the PR and between ecb7bea and 9ba1a81.

⛔ Files ignored due to path filters (15)
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/AROSwift/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/AROSwift/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/AROSwift/zz_fixture_TestControlPlaneComponents_image_registry_controller_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/GCP/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/GCP/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/GCP/zz_fixture_TestControlPlaneComponents_image_registry_controller_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_image_registry_controller_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_image_registry_controller_config_configmap.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_controlplanecomponent.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/zz_fixture_TestControlPlaneComponents_cluster_image_registry_operator_deployment.yaml is excluded by !**/testdata/**
  • control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-image-registry-operator/zz_fixture_TestControlPlaneComponents_image_registry_controller_config_configmap.yaml is excluded by !**/testdata/**
📒 Files selected for processing (5)
  • control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-image-registry-operator/controller-config.yaml
  • control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-image-registry-operator/deployment.yaml
  • control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/component.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/configmap.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/configmap_test.go
✅ Files skipped from review due to trivial changes (1)
  • control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-image-registry-operator/controller-config.yaml
🚧 Files skipped from review as they are similar to previous changes (2)
  • control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/component.go
  • control-plane-operator/controllers/hostedcontrolplane/v2/registryoperator/configmap.go

@Nirshal

Nirshal commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

/lgtm

@cwbotbot

cwbotbot commented Mar 24, 2026

Copy link
Copy Markdown

Test Results

e2e-aws

e2e-aks

Failed Tests

Total failed tests: 2

  • TestHAEtcdChaos
  • TestHAEtcdChaos/Teardown

@gangwgr

gangwgr commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

/verify @gangwgr

@gangwgr

gangwgr commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

/verified by @gangwgr

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

Copy link
Copy Markdown

@gangwgr: This PR has been marked as verified by @gangwgr.

Details

In response to this:

/verified by @gangwgr

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.

@gangwgr

gangwgr commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 24, 2026
@gangwgr

gangwgr commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

/test e2e-aks

@gangwgr

gangwgr commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

will unhold pr when pre-merge manual testing completed

@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Mar 25, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Mar 25, 2026
@openshift-ci-robot

openshift-ci-robot commented Mar 25, 2026

Copy link
Copy Markdown

@ricardomaraschini: This pull request references IR-350 which is a valid jira issue.

Details

In response to this:

What this PR does / why we need it:

Configure the cluster-image-registry-operator to use the TLS security profile settings from the HostedCluster resource. This ensures the operator's serving endpoint uses ciphers and minimum TLS version that match the cluster's security requirements.

Implementation:

  • Add ConfigMap adapter to generate configv1.GenericControllerConfig with TLS settings derived from hcp.spec.configuration.apiServer.tlsSecurityProfile.
  • Mount the config and use it via --config flag on the operator deployment.
  • Reuse existing config.CipherSuites() and config.minTLSVersion() helper functions for consistency with other control plane components.

Special notes for your reviewer:

This PR is expected to fail as it depends on openshift/cluster-image-registry-operator#1297 being merged.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • New Features
  • Registry operator now provisions a controller ConfigMap and loads it at startup; the controller binds to :60000 and honors TLS security profile settings and cipher suites.
  • Deployment
  • Pod spec updated to mount and consume the controller ConfigMap at runtime.
  • Tests
  • Added tests covering config generation for multiple TLS profiles, cipher handling, and preservation of existing ConfigMap data.

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.

we have changed the image registry deployment and added a new config map
to the equation. we need to regenerate the testdata to incorporate these
changes.
@Nirshal

Nirshal commented Mar 25, 2026

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Mar 25, 2026
@openshift-ci-robot

Copy link
Copy Markdown

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws

@gangwgr

gangwgr commented Mar 25, 2026

Copy link
Copy Markdown
Contributor

/verified by @gangwgr
/unhold
pre-merge testing completed changes working fine

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 25, 2026
@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Mar 25, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gangwgr: This PR has been marked as verified by @gangwgr.

Details

In response to this:

/verified by @gangwgr
/unhold
pre-merge testing completed changes working fine

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.

@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

/retest

1 similar comment
@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

/retest

@bryan-cox

Copy link
Copy Markdown
Member

/test e2e-aks

@bryan-cox

Copy link
Copy Markdown
Member

/test e2e-azure-self-managed

@ricardomaraschini

Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci

openshift-ci Bot commented Mar 26, 2026

Copy link
Copy Markdown
Contributor

@ricardomaraschini: all tests passed!

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.

@openshift-merge-bot
openshift-merge-bot Bot merged commit c6385e4 into openshift:main Mar 26, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants