Skip to content

CM-966: Apply cluster TLS security profile to cert-manager operands#409

Open
arun717 wants to merge 9 commits intoopenshift:masterfrom
arun717:tls_impl
Open

CM-966: Apply cluster TLS security profile to cert-manager operands#409
arun717 wants to merge 9 commits intoopenshift:masterfrom
arun717:tls_impl

Conversation

@arun717
Copy link
Copy Markdown
Contributor

@arun717 arun717 commented Apr 17, 2026

CM-966: Implement centralized TLS profile fetching and application

Summary

Implements centralized TLS configuration for cert-manager operands by fetching and applying TLS settings from the cluster APIServer resource (apiserver.config.openshift.io/cluster). This ensures cert-manager components honor the cluster-wide TLS security profile.

Fixes: CM-966
Related: CM-954

Changes

Core Implementation

  1. TLS Profile Package (pkg/tlsprofile/)

    • Maps OpenShift TLS security profiles to cert-manager CLI flags
    • Supports Old, Intermediate (default), Modern, and Custom profiles
    • Converts OpenSSL cipher names to IANA format using library-go
    • Includes comprehensive unit tests
  2. TLS Profile Hook (pkg/controller/deployment/tls_profile_hook.go)

    • Fetches TLS configuration from cluster APIServer resource
    • Applies appropriate flags based on deployment type:
      • cert-manager-webhook: main TLS + metrics TLS flags
      • cert-manager (controller): metrics TLS flags only
      • cert-manager-cainjector: metrics TLS flags only
    • Merges flags with override semantics (TLS settings take precedence)
    • Platform-agnostic: only active on OpenShift clusters
  3. Integration

    • Registered hook in generic deployment controller
    • Added APIServer informer to watch for TLS profile changes
    • Ensures deployments reconcile when cluster TLS profile is updated
  4. RBAC

    • Added permissions to read apiservers from config.openshift.io API group
    • Updated kubebuilder annotations, role.yaml, and CSV

Testing

  • Added comprehensive unit tests for all TLS profile types
  • Tests cover: Intermediate, Modern, Old, Custom, and nil profiles
  • Validates flag override behavior and multi-container deployment handling
  • All tests passing ✅

Known Limitations

  • Curve preferences: Not configurable due to upstream cert-manager limitations. Operands inherit Go's default curve ordering for TLS 1.2/1.3 handshakes. Will be addressed when cert-manager adds explicit curve preference controls.
  • Trust-manager: Currently does not support TLS configuration flags in upstream.

Test Plan

Unit Tests

make test-unit

Manual Testing (OpenShift Cluster)

  1. Deploy cert-manager-operator with these changes
  2. Verify default TLS profile (Intermediate) is applied:
    oc get deployment cert-manager-webhook -n cert-manager -o yaml | grep -A 2 "tls-min-version"
  3. Change cluster TLS profile to Modern:
    oc patch apiserver cluster --type=merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern"}}}'
  4. Verify deployments update with new TLS settings (VersionTLS13)
  5. Test with Old and Custom profiles similarly

Verification

  • Unit tests pass
  • Code follows conventional commits format
  • RBAC permissions added
  • Platform-agnostic (only activates on OpenShift)
  • E2E tests (manual verification on cluster)
  • Documentation updated (if needed)

Commit Structure

The changes are organized into logical commits:

  1. feat(tlsprofile): Add TLS profile mapping package
  2. feat(controller): Add TLS profile hook for cert-manager deployments
  3. feat(controller): Integrate TLS profile hook into deployment controller
  4. chore(rbac): Add APIServer resource permissions
  5. docs(api): Add certificate-request-minimum-backoff-duration flag example
  6. style(trustmanager): Fix comment formatting

🤖 Generated with Claude Code via /jira:solve [CM-966](https://redhat.atlassian.net/browse/CM-966)

Summary by CodeRabbit

  • New Features

    • Support for OpenShift TLS Security Profiles so cert-manager webhook and components honor cluster TLS cipher suites and minimum TLS versions.
  • Documentation

    • Added CLI flag example for certificate-request minimum backoff duration.
  • Chores

    • Expanded RBAC to allow read access to cluster API server configuration.
  • Tests

    • Added unit tests covering TLS profile resolution and argument injection behavior.

Arun Maurya and others added 6 commits April 16, 2026 17:49
Add new package to map OpenShift TLS security profiles to cert-manager
CLI flags. This enables centralized TLS configuration from the cluster
APIServer resource.

Features:
- EffectiveSpec resolves TLS profiles (Old, Intermediate, Modern, Custom)
- Defaults to Intermediate profile when nil or empty
- CertManagerWebhookTLSArgs generates flags for webhook main + metrics listeners
- CertManagerOperandMetricsTLSArgs generates flags for controller/cainjector metrics
- Converts OpenSSL cipher names to IANA format using library-go

Note: Curve preferences are not yet configurable due to upstream
cert-manager limitations - operands inherit Go's default curve ordering.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implement deployment hook to fetch and apply TLS configuration from the
cluster APIServer resource to cert-manager operand deployments.

The hook:
- Fetches apiserver.config.openshift.io/cluster resource
- Resolves TLS profile using tlsprofile.EffectiveSpec
- Applies appropriate TLS flags based on deployment type:
  * cert-manager-webhook: main TLS + metrics TLS flags
  * cert-manager (controller): metrics TLS flags only
  * cert-manager-cainjector: metrics TLS flags only
- Merges TLS args into existing container args with override semantics
- Skips deployments with != 1 container

Includes comprehensive unit tests covering:
- All TLS profile types (Old, Intermediate, Modern, Custom)
- Nil profile handling (defaults to Intermediate)
- Flag override behavior
- Multi-container deployment skipping
- Unknown deployment handling
- Error handling when APIServer resource not found

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Register withClusterTLSProfileFromAPIServer hook in the generic
deployment controller for cert-manager operands.

The hook is only registered when infraInformers.Applicable() returns
true (OpenShift clusters), ensuring the operator remains platform-agnostic
and doesn't break on non-OpenShift environments.

Adds APIServer informer to the controller's watch list to trigger
reconciliation when the cluster TLS profile changes.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add permissions to read apiservers resources from config.openshift.io
API group. This is required for the TLS profile hook to fetch the
cluster APIServer configuration.

Changes:
- Add apiservers to kubebuilder RBAC annotation in certmanager_controller.go
- Update config/rbac/role.yaml with generated permissions
- Update bundle CSV with generated permissions

Without these permissions, the operator cannot fetch the cluster TLS
profile and will fail to configure cert-manager operands correctly on
OpenShift clusters.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add documentation for the --certificate-request-minimum-backoff-duration
controller flag in the CertManagerSpec ControllerConfig examples.

Also add the flag to the list of supported controller args in the
validation hook to allow users to configure initial backoff duration
when CertificateRequests fail.

This flag controls the cert-manager trigger controller's backoff
behavior, with backoff doubling on consecutive failures up to 32h.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add period to updateWebhookClientConfig function comment to comply
with godoc style guidelines.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 17, 2026

@arun717: This pull request references CM-966 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 "5.0.0" version, but no target version was set.

Details

In response to this:

CM-966: Implement centralized TLS profile fetching and application

Summary

Implements centralized TLS configuration for cert-manager operands by fetching and applying TLS settings from the cluster APIServer resource (apiserver.config.openshift.io/cluster). This ensures cert-manager components honor the cluster-wide TLS security profile.

Fixes: CM-966
Related: CM-954

Changes

Core Implementation

  1. TLS Profile Package (pkg/tlsprofile/)
  • Maps OpenShift TLS security profiles to cert-manager CLI flags
  • Supports Old, Intermediate (default), Modern, and Custom profiles
  • Converts OpenSSL cipher names to IANA format using library-go
  • Includes comprehensive unit tests
  1. TLS Profile Hook (pkg/controller/deployment/tls_profile_hook.go)
  • Fetches TLS configuration from cluster APIServer resource
  • Applies appropriate flags based on deployment type:
    • cert-manager-webhook: main TLS + metrics TLS flags
    • cert-manager (controller): metrics TLS flags only
    • cert-manager-cainjector: metrics TLS flags only
  • Merges flags with override semantics (TLS settings take precedence)
  • Platform-agnostic: only active on OpenShift clusters
  1. Integration
  • Registered hook in generic deployment controller
  • Added APIServer informer to watch for TLS profile changes
  • Ensures deployments reconcile when cluster TLS profile is updated
  1. RBAC
  • Added permissions to read apiservers from config.openshift.io API group
  • Updated kubebuilder annotations, role.yaml, and CSV

Testing

  • Added comprehensive unit tests for all TLS profile types
  • Tests cover: Intermediate, Modern, Old, Custom, and nil profiles
  • Validates flag override behavior and multi-container deployment handling
  • All tests passing ✅

Known Limitations

  • Curve preferences: Not configurable due to upstream cert-manager limitations. Operands inherit Go's default curve ordering for TLS 1.2/1.3 handshakes. Will be addressed when cert-manager adds explicit curve preference controls.
  • Trust-manager: Currently does not support TLS configuration flags in upstream.

Test Plan

Unit Tests

make test-unit

Manual Testing (OpenShift Cluster)

  1. Deploy cert-manager-operator with these changes
  2. Verify default TLS profile (Intermediate) is applied:
oc get deployment cert-manager-webhook -n cert-manager -o yaml | grep -A 2 "tls-min-version"
  1. Change cluster TLS profile to Modern:
oc patch apiserver cluster --type=merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern"}}}'
  1. Verify deployments update with new TLS settings (VersionTLS13)
  2. Test with Old and Custom profiles similarly

Verification

  • Unit tests pass
  • Code follows conventional commits format
  • RBAC permissions added
  • Platform-agnostic (only activates on OpenShift)
  • E2E tests (manual verification on cluster)
  • Documentation updated (if needed)

Commit Structure

The changes are organized into logical commits:

  1. feat(tlsprofile): Add TLS profile mapping package
  2. feat(controller): Add TLS profile hook for cert-manager deployments
  3. feat(controller): Integrate TLS profile hook into deployment controller
  4. chore(rbac): Add APIServer resource permissions
  5. docs(api): Add certificate-request-minimum-backoff-duration flag example
  6. style(trustmanager): Fix comment formatting

🤖 Generated with Claude Code via /jira:solve [CM-966](https://redhat.atlassian.net/browse/CM-966)

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.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 17, 2026
@openshift-ci openshift-ci bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 17, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 17, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5b1a446c-7a8f-4e5b-bb54-4e1846972b2b

📥 Commits

Reviewing files that changed from the base of the PR and between 0a34159 and bf387fe.

📒 Files selected for processing (5)
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • bundle/manifests/operator.openshift.io_certmanagers.yaml
  • config/crd/bases/operator.openshift.io_certmanagers.yaml
  • config/rbac/role.yaml
  • pkg/controller/certmanager/certmanager_controller.go
✅ Files skipped from review due to trivial changes (3)
  • config/crd/bases/operator.openshift.io_certmanagers.yaml
  • bundle/manifests/operator.openshift.io_certmanagers.yaml
  • pkg/controller/certmanager/certmanager_controller.go
🚧 Files skipped from review as they are similar to previous changes (2)
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/rbac/role.yaml

Walkthrough

Adds OpenShift TLS security profile support: new tlsprofile package, deployment hook to inject TLS CLI flags into cert-manager deployments, RBAC rule to allow reading APIServer, helper utilities for merging container args, and comprehensive tests.

Changes

Cohort / File(s) Summary
Documentation & CLI Flags
api/operator/v1alpha1/certmanager_types.go, bundle/manifests/operator.openshift.io_certmanagers.yaml, config/crd/bases/operator.openshift.io_certmanagers.yaml
Added example controller override arg --certificate-request-minimum-backoff-duration=30m to API/docs examples (no schema or field changes).
RBAC Configuration & Annotations
bundle/manifests/cert-manager-operator.clusterserviceversion.yaml, config/rbac/role.yaml, pkg/controller/certmanager/certmanager_controller.go
Added apiservers resource under config.openshift.io with verbs get, list, watch in ClusterRole/CSV and a matching kubebuilder RBAC annotation (read-only access).
TLS Profile Translation
pkg/tlsprofile/tlsprofile.go, pkg/tlsprofile/tlsprofile_test.go
New package translating OpenShift TLSSecurityProfile -> concrete TLSProfileSpec and generating cert-manager CLI args (--tls-min-version, --tls-cipher-suites); includes unit tests for nil, custom, and cipher joining.
Deployment Hook & Tests
pkg/controller/deployment/tls_profile_hook.go, pkg/controller/deployment/tls_profile_hook_test.go
Added WithClusterTLSProfileFromAPIServer() hook that reads APIServer TLS profile, builds TLS args per deployment role, merges into container args; extensive tests covering profile types, edge cases, and error paths.
Arg Merge Helpers
pkg/controller/deployment/tls_helpers.go
Added deterministic arg-merge utilities and deployment name constants: mergeContainerArgs() and parseArgMap() to parse and combine key[=value] args.
Controller Integration
pkg/controller/certmanager/generic_deployment_controller.go
When infra informers are enabled, registers APIServers informer and appends the TLS-profile deployment hook to the deployment controller.

Sequence Diagram

sequenceDiagram
    participant Controller as rgba(52, 152, 219, 0.5) Controller
    participant APIServerLister as rgba(46, 204, 113, 0.5) APIServer Informer/Lister
    participant TLSProfile as rgba(155, 89, 182, 0.5) tlsprofile Package
    participant Deployment as rgba(241, 196, 15, 0.5) Cert-Manager Deployment

    Controller->>APIServerLister: Get cluster APIServer
    APIServerLister-->>Controller: APIServer (TLSSecurityProfile)
    Controller->>TLSProfile: EffectiveSpec(profile)
    TLSProfile-->>Controller: TLSProfileSpec
    Controller->>TLSProfile: CertManagerWebhookTLSArgs / OperandMetricsTLSArgs(spec)
    TLSProfile-->>Controller: CLI args (--tls-*, --metrics-tls-*)
    Controller->>Deployment: mergeContainerArgs(existingArgs, generatedArgs)
    Deployment-->>Controller: merged args
    Controller->>Deployment: update Deployment template
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

🚥 Pre-merge checks | ✅ 9 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 32.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly summarizes the main change: applying the cluster TLS security profile to cert-manager operands, which is the primary objective of the PR.
Stable And Deterministic Test Names ✅ Passed The PR does not contain any Ginkgo tests. Both test files use standard Go testing with testing.T and table-driven subtests via t.Run(). All test names are static, descriptive strings with no dynamic information.
Test Structure And Quality ✅ Passed Test files use standard Go testing package with strong quality patterns: single responsibility, proper setup/cleanup, meaningful assertions using testify require and cmp.Diff, and consistency with existing codebase patterns.
Microshift Test Compatibility ✅ Passed PR adds standard Go unit tests using testing package, not Ginkgo e2e tests, so MicroShift Test Compatibility check does not apply.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Tests added are standard Go unit tests using testing.T, not Ginkgo e2e tests, and do not assume multi-node clusters.
Topology-Aware Scheduling Compatibility ✅ Passed The PR introduces TLS security profile configuration through a hook that modifies container arguments only, without introducing any scheduling constraints or topology assumptions that would break SNO, Two-Node, or HyperShift topologies.
Ote Binary Stdout Contract ✅ Passed The PR introduces new packages and functions that operate entirely within the controller runtime and as library functions, with no process-level stdout writes detected.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR adds standard Go unit tests, not Ginkgo e2e tests, with no IPv4 assumptions or external connectivity requirements.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 17, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: arun717
Once this PR has been reviewed and has the lgtm label, please assign trilokgeer 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

@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 17, 2026

@arun717: This pull request references CM-966 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 "5.0.0" version, but no target version was set.

Details

In response to this:

CM-966: Implement centralized TLS profile fetching and application

Summary

Implements centralized TLS configuration for cert-manager operands by fetching and applying TLS settings from the cluster APIServer resource (apiserver.config.openshift.io/cluster). This ensures cert-manager components honor the cluster-wide TLS security profile.

Fixes: CM-966
Related: CM-954

Changes

Core Implementation

  1. TLS Profile Package (pkg/tlsprofile/)
  • Maps OpenShift TLS security profiles to cert-manager CLI flags
  • Supports Old, Intermediate (default), Modern, and Custom profiles
  • Converts OpenSSL cipher names to IANA format using library-go
  • Includes comprehensive unit tests
  1. TLS Profile Hook (pkg/controller/deployment/tls_profile_hook.go)
  • Fetches TLS configuration from cluster APIServer resource
  • Applies appropriate flags based on deployment type:
    • cert-manager-webhook: main TLS + metrics TLS flags
    • cert-manager (controller): metrics TLS flags only
    • cert-manager-cainjector: metrics TLS flags only
  • Merges flags with override semantics (TLS settings take precedence)
  • Platform-agnostic: only active on OpenShift clusters
  1. Integration
  • Registered hook in generic deployment controller
  • Added APIServer informer to watch for TLS profile changes
  • Ensures deployments reconcile when cluster TLS profile is updated
  1. RBAC
  • Added permissions to read apiservers from config.openshift.io API group
  • Updated kubebuilder annotations, role.yaml, and CSV

Testing

  • Added comprehensive unit tests for all TLS profile types
  • Tests cover: Intermediate, Modern, Old, Custom, and nil profiles
  • Validates flag override behavior and multi-container deployment handling
  • All tests passing ✅

Known Limitations

  • Curve preferences: Not configurable due to upstream cert-manager limitations. Operands inherit Go's default curve ordering for TLS 1.2/1.3 handshakes. Will be addressed when cert-manager adds explicit curve preference controls.
  • Trust-manager: Currently does not support TLS configuration flags in upstream.

Test Plan

Unit Tests

make test-unit

Manual Testing (OpenShift Cluster)

  1. Deploy cert-manager-operator with these changes
  2. Verify default TLS profile (Intermediate) is applied:
oc get deployment cert-manager-webhook -n cert-manager -o yaml | grep -A 2 "tls-min-version"
  1. Change cluster TLS profile to Modern:
oc patch apiserver cluster --type=merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern"}}}'
  1. Verify deployments update with new TLS settings (VersionTLS13)
  2. Test with Old and Custom profiles similarly

Verification

  • Unit tests pass
  • Code follows conventional commits format
  • RBAC permissions added
  • Platform-agnostic (only activates on OpenShift)
  • E2E tests (manual verification on cluster)
  • Documentation updated (if needed)

Commit Structure

The changes are organized into logical commits:

  1. feat(tlsprofile): Add TLS profile mapping package
  2. feat(controller): Add TLS profile hook for cert-manager deployments
  3. feat(controller): Integrate TLS profile hook into deployment controller
  4. chore(rbac): Add APIServer resource permissions
  5. docs(api): Add certificate-request-minimum-backoff-duration flag example
  6. style(trustmanager): Fix comment formatting

🤖 Generated with Claude Code via /jira:solve [CM-966](https://redhat.atlassian.net/browse/CM-966)

Summary by CodeRabbit

Release Notes

  • New Features

  • Added support for --certificate-request-minimum-backoff-duration controller override argument.

  • Enhanced TLS profile configuration to automatically apply OpenShift API server security settings to cert-manager components.

  • Documentation

  • Updated controller configuration documentation with new override-args example.

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
Copy Markdown

@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)
pkg/controller/deployment/tls_profile_hook.go (1)

20-22: Avoid silent TLS-profile bypass on multi-container pod specs.

Returning nil here can hide future deployment-shape drift and skip TLS args silently. Consider selecting the target container explicitly (by known name/image) or emitting a clear error/log.

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

In `@pkg/controller/deployment/tls_profile_hook.go` around lines 20 - 22, The
current early return when len(deployment.Spec.Template.Spec.Containers) != 1
silently skips TLS arg injection; instead, change the logic in tls_profile_hook
to explicitly handle multi-container PodSpecs: attempt to select the intended
container by a known identifier (e.g., match container.Name or container.Image
against a configured targetContainerName/targetContainerImage) and operate on
that container, and if no match is found emit a clear error or warning (using
the controller logger) rather than returning nil silently; ensure the code
references deployment.Spec.Template.Spec.Containers and the chosen selection
variables (targetContainerName/targetContainerImage) so future shape drift is
surfaced.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/controller/deployment/certmanager_controller.go`:
- Line 52: The RBAC kubebuilder marker on the certmanager controller grants
mutating verbs to the apiservers resource; change the marker so that the
apiservers entry only includes read-only verbs (get;list;watch) while leaving
other resources (certmanagers, clusteroperators, clusteroperators/status,
infrastructures) unchanged—update the kubebuilder:rbac comment line that
contains apiservers to restrict it to verbs=get;list;watch.

---

Nitpick comments:
In `@pkg/controller/deployment/tls_profile_hook.go`:
- Around line 20-22: The current early return when
len(deployment.Spec.Template.Spec.Containers) != 1 silently skips TLS arg
injection; instead, change the logic in tls_profile_hook to explicitly handle
multi-container PodSpecs: attempt to select the intended container by a known
identifier (e.g., match container.Name or container.Image against a configured
targetContainerName/targetContainerImage) and operate on that container, and if
no match is found emit a clear error or warning (using the controller logger)
rather than returning nil silently; ensure the code references
deployment.Spec.Template.Spec.Containers and the chosen selection variables
(targetContainerName/targetContainerImage) so future shape drift is surfaced.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f4a6a32d-6323-4660-b3a5-b4716acf4959

📥 Commits

Reviewing files that changed from the base of the PR and between abaecc8 and f66bfe9.

📒 Files selected for processing (11)
  • api/operator/v1alpha1/certmanager_types.go
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/rbac/role.yaml
  • pkg/controller/deployment/certmanager_controller.go
  • pkg/controller/deployment/deployment_overrides_validation.go
  • pkg/controller/deployment/generic_deployment_controller.go
  • pkg/controller/deployment/tls_profile_hook.go
  • pkg/controller/deployment/tls_profile_hook_test.go
  • pkg/controller/trustmanager/webhooks.go
  • pkg/tlsprofile/tlsprofile.go
  • pkg/tlsprofile/tlsprofile_test.go

Comment thread pkg/controller/certmanager/certmanager_controller.go Outdated
@openshift-ci openshift-ci bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 17, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 17, 2026

@arun717: This pull request references CM-966 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 "5.0.0" version, but no target version was set.

Details

In response to this:

CM-966: Implement centralized TLS profile fetching and application

Summary

Implements centralized TLS configuration for cert-manager operands by fetching and applying TLS settings from the cluster APIServer resource (apiserver.config.openshift.io/cluster). This ensures cert-manager components honor the cluster-wide TLS security profile.

Fixes: CM-966
Related: CM-954

Changes

Core Implementation

  1. TLS Profile Package (pkg/tlsprofile/)
  • Maps OpenShift TLS security profiles to cert-manager CLI flags
  • Supports Old, Intermediate (default), Modern, and Custom profiles
  • Converts OpenSSL cipher names to IANA format using library-go
  • Includes comprehensive unit tests
  1. TLS Profile Hook (pkg/controller/deployment/tls_profile_hook.go)
  • Fetches TLS configuration from cluster APIServer resource
  • Applies appropriate flags based on deployment type:
    • cert-manager-webhook: main TLS + metrics TLS flags
    • cert-manager (controller): metrics TLS flags only
    • cert-manager-cainjector: metrics TLS flags only
  • Merges flags with override semantics (TLS settings take precedence)
  • Platform-agnostic: only active on OpenShift clusters
  1. Integration
  • Registered hook in generic deployment controller
  • Added APIServer informer to watch for TLS profile changes
  • Ensures deployments reconcile when cluster TLS profile is updated
  1. RBAC
  • Added permissions to read apiservers from config.openshift.io API group
  • Updated kubebuilder annotations, role.yaml, and CSV

Testing

  • Added comprehensive unit tests for all TLS profile types
  • Tests cover: Intermediate, Modern, Old, Custom, and nil profiles
  • Validates flag override behavior and multi-container deployment handling
  • All tests passing ✅

Known Limitations

  • Curve preferences: Not configurable due to upstream cert-manager limitations. Operands inherit Go's default curve ordering for TLS 1.2/1.3 handshakes. Will be addressed when cert-manager adds explicit curve preference controls.
  • Trust-manager: Currently does not support TLS configuration flags in upstream.

Test Plan

Unit Tests

make test-unit

Manual Testing (OpenShift Cluster)

  1. Deploy cert-manager-operator with these changes
  2. Verify default TLS profile (Intermediate) is applied:
oc get deployment cert-manager-webhook -n cert-manager -o yaml | grep -A 2 "tls-min-version"
  1. Change cluster TLS profile to Modern:
oc patch apiserver cluster --type=merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern"}}}'
  1. Verify deployments update with new TLS settings (VersionTLS13)
  2. Test with Old and Custom profiles similarly

Verification

  • Unit tests pass
  • Code follows conventional commits format
  • RBAC permissions added
  • Platform-agnostic (only activates on OpenShift)
  • E2E tests (manual verification on cluster)
  • Documentation updated (if needed)

Commit Structure

The changes are organized into logical commits:

  1. feat(tlsprofile): Add TLS profile mapping package
  2. feat(controller): Add TLS profile hook for cert-manager deployments
  3. feat(controller): Integrate TLS profile hook into deployment controller
  4. chore(rbac): Add APIServer resource permissions
  5. docs(api): Add certificate-request-minimum-backoff-duration flag example
  6. style(trustmanager): Fix comment formatting

🤖 Generated with Claude Code via /jira:solve [CM-966](https://redhat.atlassian.net/browse/CM-966)

Summary by CodeRabbit

  • New Features

  • Added support for OpenShift TLS Security Profile configuration to automatically configure TLS settings (cipher suites and minimum TLS version) for cert-manager webhook and operand deployments.

  • Tests

  • Added comprehensive unit tests for TLS security profile resolution and flag generation.

  • Chores

  • Updated RBAC permissions to include APIServers resource access.

  • Added CLI flag documentation example.

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
Copy Markdown

@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

♻️ Duplicate comments (1)
pkg/controller/certmanager/certmanager_controller.go (1)

52-52: ⚠️ Potential issue | 🟠 Major

Restrict apiservers RBAC to read-only verbs.

Line 52 still grants mutating verbs on config.openshift.io/apiservers, but this flow only needs read access for apiserver.config.openshift.io/cluster.

🔒 Suggested RBAC tightening
-//+kubebuilder:rbac:groups="config.openshift.io",resources=certmanagers;clusteroperators;clusteroperators/status;infrastructures;apiservers,verbs=get;list;watch;create;update;patch;delete
+//+kubebuilder:rbac:groups="config.openshift.io",resources=certmanagers;clusteroperators;clusteroperators/status;infrastructures,verbs=get;list;watch;create;update;patch;delete
+//+kubebuilder:rbac:groups="config.openshift.io",resources=apiservers,verbs=get;list;watch
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/certmanager_controller.go` at line 52, Update the
kubebuilder RBAC marker comment that currently grants mutating verbs to
config.openshift.io/apiservers: locate the kubebuilder marker line containing
groups="config.openshift.io" and resources=...apiservers... and change the verbs
for the apiservers resource to read-only (get;list;watch) while leaving other
resources' verbs unchanged; ensure the updated marker still follows the exact
//+kubebuilder:rbac:... format so codegen picks up the tighter permission.
🧹 Nitpick comments (1)
pkg/controller/certmanager/tls_profile_hook.go (1)

24-41: Filter by deployment name before querying APIServer.

Right now the hook reads apiserver.config.openshift.io/cluster even for deployments that are later ignored. Moving the deployment-name gate first avoids unnecessary informer reads and avoids erroring on unsupported deployments due to unrelated APIServer lookup failures.

♻️ Suggested restructuring
-		apiServer, err := apiServerInformer.Lister().Get("cluster")
-		if err != nil {
-			return fmt.Errorf("failed to get apiserver.config.openshift.io/cluster: %w", err)
-		}
-
-		effective, err := tlsprofile.EffectiveSpec(apiServer.Spec.TLSSecurityProfile)
-		if err != nil {
-			return err
-		}
-
 		var extra []string
 		switch deployment.Name {
 		case certmanagerWebhookDeployment:
-			extra = tlsprofile.CertManagerWebhookTLSArgs(effective)
 		case certmanagerControllerDeployment, certmanagerCAinjectorDeployment:
-			extra = tlsprofile.CertManagerOperandMetricsTLSArgs(effective)
 		default:
 			return nil
 		}
+
+		apiServer, err := apiServerInformer.Lister().Get("cluster")
+		if err != nil {
+			return fmt.Errorf("failed to get apiserver.config.openshift.io/cluster: %w", err)
+		}
+		effective, err := tlsprofile.EffectiveSpec(apiServer.Spec.TLSSecurityProfile)
+		if err != nil {
+			return err
+		}
+		switch deployment.Name {
+		case certmanagerWebhookDeployment:
+			extra = tlsprofile.CertManagerWebhookTLSArgs(effective)
+		case certmanagerControllerDeployment, certmanagerCAinjectorDeployment:
+			extra = tlsprofile.CertManagerOperandMetricsTLSArgs(effective)
+		}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/tls_profile_hook.go` around lines 24 - 41, Move
the deployment-name filter to run before any APIServer informer lookup: first
check deployment.Name against certmanagerWebhookDeployment,
certmanagerControllerDeployment, and certmanagerCAinjectorDeployment and compute
the required extra args (tlsprofile.CertManagerWebhookTLSArgs or
tlsprofile.CertManagerOperandMetricsTLSArgs) or return nil for others; only
after deciding you need TLS info call apiServerInformer.Lister().Get("cluster")
and then call tlsprofile.EffectiveSpec on the retrieved
apiServer.Spec.TLSSecurityProfile, so you avoid unnecessary
apiServerInformer.Lister().Get calls and errors for ignored deployments.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/controller/certmanager/tls_profile_hook.go`:
- Line 1: The package declaration is wrong: change the package line in
tls_profile_hook.go (and the test file tls_profile_hook_test.go) from "package
deployment" to "package certmanager" so that symbols like
withClusterTLSProfileFromAPIServer are in the same package as the other files
under pkg/controller/certmanager and the unqualified call in
generic_deployment_controller.go resolves correctly.

---

Duplicate comments:
In `@pkg/controller/certmanager/certmanager_controller.go`:
- Line 52: Update the kubebuilder RBAC marker comment that currently grants
mutating verbs to config.openshift.io/apiservers: locate the kubebuilder marker
line containing groups="config.openshift.io" and resources=...apiservers... and
change the verbs for the apiservers resource to read-only (get;list;watch) while
leaving other resources' verbs unchanged; ensure the updated marker still
follows the exact //+kubebuilder:rbac:... format so codegen picks up the tighter
permission.

---

Nitpick comments:
In `@pkg/controller/certmanager/tls_profile_hook.go`:
- Around line 24-41: Move the deployment-name filter to run before any APIServer
informer lookup: first check deployment.Name against
certmanagerWebhookDeployment, certmanagerControllerDeployment, and
certmanagerCAinjectorDeployment and compute the required extra args
(tlsprofile.CertManagerWebhookTLSArgs or
tlsprofile.CertManagerOperandMetricsTLSArgs) or return nil for others; only
after deciding you need TLS info call apiServerInformer.Lister().Get("cluster")
and then call tlsprofile.EffectiveSpec on the retrieved
apiServer.Spec.TLSSecurityProfile, so you avoid unnecessary
apiServerInformer.Lister().Get calls and errors for ignored deployments.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6a97dc14-52f8-4667-894e-957150445cd0

📥 Commits

Reviewing files that changed from the base of the PR and between f66bfe9 and f192f5b.

📒 Files selected for processing (5)
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • pkg/controller/certmanager/certmanager_controller.go
  • pkg/controller/certmanager/generic_deployment_controller.go
  • pkg/controller/certmanager/tls_profile_hook.go
  • pkg/controller/certmanager/tls_profile_hook_test.go
✅ Files skipped from review due to trivial changes (1)
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml

@@ -0,0 +1,49 @@
package deployment
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify package-name consistency in pkg/controller/certmanager
rg -n '^package\s+' --type=go pkg/controller/certmanager
# Expected: all non-_test.go files in this directory use the same package name.

Repository: openshift/cert-manager-operator

Length of output: 1920


🏁 Script executed:

# Search for imports of the 'deployment' package from pkg/controller/certmanager
rg 'from.*pkg/controller/certmanager|import.*certmanager' --type=go -A2 -B2

Repository: openshift/cert-manager-operator

Length of output: 57


🏁 Script executed:

# Check if withClusterTLSProfileFromAPIServer is defined in tls_profile_hook.go
rg -n 'withClusterTLSProfileFromAPIServer' pkg/controller/certmanager/tls_profile_hook.go

Repository: openshift/cert-manager-operator

Length of output: 298


🏁 Script executed:

# Search for any calls to withClusterTLSProfileFromAPIServer to see how it's used
rg -n 'withClusterTLSProfileFromAPIServer' --type=go

Repository: openshift/cert-manager-operator

Length of output: 1165


🏁 Script executed:

# Check the context around the withClusterTLSProfileFromAPIServer call in generic_deployment_controller.go
sed -n '60,80p' pkg/controller/certmanager/generic_deployment_controller.go

Repository: openshift/cert-manager-operator

Length of output: 814


Change package declaration from deployment to certmanager.

This file is in pkg/controller/certmanager/ where all non-test files use package certmanager. The incorrect package deployment declaration breaks the build: generic_deployment_controller.go:71 calls withClusterTLSProfileFromAPIServer() unqualified, which fails with undefined symbol error when this function is in a different package.

🛠️ Minimal fix
-package deployment
+package certmanager

Also fix the test file tls_profile_hook_test.go which has the same issue.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
package deployment
package certmanager
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/tls_profile_hook.go` at line 1, The package
declaration is wrong: change the package line in tls_profile_hook.go (and the
test file tls_profile_hook_test.go) from "package deployment" to "package
certmanager" so that symbols like withClusterTLSProfileFromAPIServer are in the
same package as the other files under pkg/controller/certmanager and the
unqualified call in generic_deployment_controller.go resolves correctly.

Move tls_profile_hook.go and tls_profile_hook_test.go from
pkg/controller/certmanager/ back to pkg/controller/deployment/ to fix
package mismatch and compilation errors.

Changes:
- Move TLS profile hook files to deployment package
- Export WithClusterTLSProfileFromAPIServer for use by certmanager package
- Add tls_helpers.go with deployment name constants and mergeContainerArgs
- Update generic_deployment_controller.go to import and use deploymentpkg
- Update all test references to use capitalized function name

This fixes the "found packages certmanager and deployment" error that
occurred after the directory structure was changed during rebase.

All unit tests now pass ✅
- pkg/controller/deployment: 94.4% coverage
- pkg/controller/certmanager: 41.1% coverage
- pkg/tlsprofile: 63.6% coverage

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 17, 2026

@arun717: This pull request references CM-966 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 "5.0.0" version, but no target version was set.

Details

In response to this:

CM-966: Implement centralized TLS profile fetching and application

Summary

Implements centralized TLS configuration for cert-manager operands by fetching and applying TLS settings from the cluster APIServer resource (apiserver.config.openshift.io/cluster). This ensures cert-manager components honor the cluster-wide TLS security profile.

Fixes: CM-966
Related: CM-954

Changes

Core Implementation

  1. TLS Profile Package (pkg/tlsprofile/)
  • Maps OpenShift TLS security profiles to cert-manager CLI flags
  • Supports Old, Intermediate (default), Modern, and Custom profiles
  • Converts OpenSSL cipher names to IANA format using library-go
  • Includes comprehensive unit tests
  1. TLS Profile Hook (pkg/controller/deployment/tls_profile_hook.go)
  • Fetches TLS configuration from cluster APIServer resource
  • Applies appropriate flags based on deployment type:
    • cert-manager-webhook: main TLS + metrics TLS flags
    • cert-manager (controller): metrics TLS flags only
    • cert-manager-cainjector: metrics TLS flags only
  • Merges flags with override semantics (TLS settings take precedence)
  • Platform-agnostic: only active on OpenShift clusters
  1. Integration
  • Registered hook in generic deployment controller
  • Added APIServer informer to watch for TLS profile changes
  • Ensures deployments reconcile when cluster TLS profile is updated
  1. RBAC
  • Added permissions to read apiservers from config.openshift.io API group
  • Updated kubebuilder annotations, role.yaml, and CSV

Testing

  • Added comprehensive unit tests for all TLS profile types
  • Tests cover: Intermediate, Modern, Old, Custom, and nil profiles
  • Validates flag override behavior and multi-container deployment handling
  • All tests passing ✅

Known Limitations

  • Curve preferences: Not configurable due to upstream cert-manager limitations. Operands inherit Go's default curve ordering for TLS 1.2/1.3 handshakes. Will be addressed when cert-manager adds explicit curve preference controls.
  • Trust-manager: Currently does not support TLS configuration flags in upstream.

Test Plan

Unit Tests

make test-unit

Manual Testing (OpenShift Cluster)

  1. Deploy cert-manager-operator with these changes
  2. Verify default TLS profile (Intermediate) is applied:
oc get deployment cert-manager-webhook -n cert-manager -o yaml | grep -A 2 "tls-min-version"
  1. Change cluster TLS profile to Modern:
oc patch apiserver cluster --type=merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern"}}}'
  1. Verify deployments update with new TLS settings (VersionTLS13)
  2. Test with Old and Custom profiles similarly

Verification

  • Unit tests pass
  • Code follows conventional commits format
  • RBAC permissions added
  • Platform-agnostic (only activates on OpenShift)
  • E2E tests (manual verification on cluster)
  • Documentation updated (if needed)

Commit Structure

The changes are organized into logical commits:

  1. feat(tlsprofile): Add TLS profile mapping package
  2. feat(controller): Add TLS profile hook for cert-manager deployments
  3. feat(controller): Integrate TLS profile hook into deployment controller
  4. chore(rbac): Add APIServer resource permissions
  5. docs(api): Add certificate-request-minimum-backoff-duration flag example
  6. style(trustmanager): Fix comment formatting

🤖 Generated with Claude Code via /jira:solve [CM-966](https://redhat.atlassian.net/browse/CM-966)

Summary by CodeRabbit

  • New Features

  • Added support for OpenShift TLS Security Profiles, allowing cert-manager webhook and components to respect cluster TLS configuration for cipher suites and minimum TLS versions.

  • Documentation

  • Added CLI flag documentation for certificate request minimum backoff duration.

  • Chores

  • Updated RBAC permissions to manage cluster API server configuration.

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.

Change the RBAC permissions for the apiservers resource from full
mutating verbs (get;list;watch;create;update;patch;delete) to read-only
(get;list;watch).

The operator only needs to read the cluster APIServer resource to fetch
the TLS security profile. It does not need to create or modify the
APIServer resource, so granting mutating permissions violates the
principle of least privilege.

Changes:
- Split the config.openshift.io RBAC marker into two separate rules
- apiservers: get;list;watch (read-only)
- certmanagers, clusteroperators, clusteroperators/status,
  infrastructures: get;list;watch;create;update;patch;delete (full access)
- Regenerated config/rbac/role.yaml
- Regenerated bundle/manifests CSV
- Regenerated CRD manifests

All unit tests pass ✅

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 17, 2026

@arun717: This pull request references CM-966 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 "5.0.0" version, but no target version was set.

Details

In response to this:

CM-966: Implement centralized TLS profile fetching and application

Summary

Implements centralized TLS configuration for cert-manager operands by fetching and applying TLS settings from the cluster APIServer resource (apiserver.config.openshift.io/cluster). This ensures cert-manager components honor the cluster-wide TLS security profile.

Fixes: CM-966
Related: CM-954

Changes

Core Implementation

  1. TLS Profile Package (pkg/tlsprofile/)
  • Maps OpenShift TLS security profiles to cert-manager CLI flags
  • Supports Old, Intermediate (default), Modern, and Custom profiles
  • Converts OpenSSL cipher names to IANA format using library-go
  • Includes comprehensive unit tests
  1. TLS Profile Hook (pkg/controller/deployment/tls_profile_hook.go)
  • Fetches TLS configuration from cluster APIServer resource
  • Applies appropriate flags based on deployment type:
    • cert-manager-webhook: main TLS + metrics TLS flags
    • cert-manager (controller): metrics TLS flags only
    • cert-manager-cainjector: metrics TLS flags only
  • Merges flags with override semantics (TLS settings take precedence)
  • Platform-agnostic: only active on OpenShift clusters
  1. Integration
  • Registered hook in generic deployment controller
  • Added APIServer informer to watch for TLS profile changes
  • Ensures deployments reconcile when cluster TLS profile is updated
  1. RBAC
  • Added permissions to read apiservers from config.openshift.io API group
  • Updated kubebuilder annotations, role.yaml, and CSV

Testing

  • Added comprehensive unit tests for all TLS profile types
  • Tests cover: Intermediate, Modern, Old, Custom, and nil profiles
  • Validates flag override behavior and multi-container deployment handling
  • All tests passing ✅

Known Limitations

  • Curve preferences: Not configurable due to upstream cert-manager limitations. Operands inherit Go's default curve ordering for TLS 1.2/1.3 handshakes. Will be addressed when cert-manager adds explicit curve preference controls.
  • Trust-manager: Currently does not support TLS configuration flags in upstream.

Test Plan

Unit Tests

make test-unit

Manual Testing (OpenShift Cluster)

  1. Deploy cert-manager-operator with these changes
  2. Verify default TLS profile (Intermediate) is applied:
oc get deployment cert-manager-webhook -n cert-manager -o yaml | grep -A 2 "tls-min-version"
  1. Change cluster TLS profile to Modern:
oc patch apiserver cluster --type=merge -p '{"spec":{"tlsSecurityProfile":{"type":"Modern"}}}'
  1. Verify deployments update with new TLS settings (VersionTLS13)
  2. Test with Old and Custom profiles similarly

Verification

  • Unit tests pass
  • Code follows conventional commits format
  • RBAC permissions added
  • Platform-agnostic (only activates on OpenShift)
  • E2E tests (manual verification on cluster)
  • Documentation updated (if needed)

Commit Structure

The changes are organized into logical commits:

  1. feat(tlsprofile): Add TLS profile mapping package
  2. feat(controller): Add TLS profile hook for cert-manager deployments
  3. feat(controller): Integrate TLS profile hook into deployment controller
  4. chore(rbac): Add APIServer resource permissions
  5. docs(api): Add certificate-request-minimum-backoff-duration flag example
  6. style(trustmanager): Fix comment formatting

🤖 Generated with Claude Code via /jira:solve [CM-966](https://redhat.atlassian.net/browse/CM-966)

Summary by CodeRabbit

  • New Features

  • Support for OpenShift TLS Security Profiles so cert-manager webhook and components honor cluster TLS cipher suites and minimum TLS versions.

  • Documentation

  • Added CLI flag example for certificate-request minimum backoff duration.

  • Chores

  • Expanded RBAC to allow read access to cluster API server configuration.

  • Tests

  • Added unit tests covering TLS profile resolution and argument injection behavior.

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.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 17, 2026

@arun717: The following tests 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-operator-tech-preview bf387fe link false /test e2e-operator-tech-preview
ci/prow/e2e-operator bf387fe link true /test e2e-operator

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.

@arun717
Copy link
Copy Markdown
Contributor Author

arun717 commented Apr 19, 2026

/retest

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.

2 participants