Skip to content

CM-1114: Add health probes and richer status conditions#417

Open
sebrandon1 wants to merge 1 commit into
openshift:masterfrom
sebrandon1:add-operator-health-probes
Open

CM-1114: Add health probes and richer status conditions#417
sebrandon1 wants to merge 1 commit into
openshift:masterfrom
sebrandon1:add-operator-health-probes

Conversation

@sebrandon1

@sebrandon1 sebrandon1 commented May 1, 2026

Copy link
Copy Markdown
Member

Summary

Health Probes

The operator deployment currently has no health probes, so Kubernetes cannot detect if the operator process is stuck or not yet ready to serve. All cert-manager operands (controller, webhook, cainjector, trust-manager, istio-csr) already have probes configured — the operator itself is the only component missing them.

The library-go controllercmd framework already serves /healthz and /readyz over HTTPS on port 8443 via its GenericAPIServer, so no Go code changes are needed.

  • Liveness/healthz (ping, log, post-start hooks)
  • Readiness/readyz (same checks + shutdown, so the pod drains traffic during graceful termination)

Richer Status Conditions

IstioCSR and TrustManager CRs currently report only two status conditions (Ready and Degraded) with generic reason constants (Failed, Ready, Progressing). Users can't tell why something is progressing or degraded without reading operator logs.

This adds:

  • A dedicated Progressing condition type alongside Ready and Degraded
  • Specific reason constants: Reconciling, WaitingForDependencies, ValidationFailed, MultipleInstancesFound
  • A ConditionReason field on ReconcileError with WithConditionReason() chainable setter so controllers can annotate errors with specific reasons
  • Updated HandleReconcileResult to manage all three conditions and extract specific reasons from errors

Test plan

Health Probes

$ curl -sk "https://localhost:8443/healthz?verbose"
[+]ping ok
[+]log ok
[+]poststarthook/max-in-flight-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
healthz check passed

$ curl -sk "https://localhost:8443/readyz?verbose"
[+]ping ok
[+]log ok
[+]poststarthook/max-in-flight-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
[+]shutdown ok
readyz check passed

Status Conditions — Reconciling

IstioCSR CR during active reconciliation (retrying due to missing namespace):

[
    {
        "lastTransitionTime": "2026-06-08T21:44:45Z",
        "message": "",
        "reason": "Ready",
        "status": "False",
        "type": "Degraded"
    },
    {
        "lastTransitionTime": "2026-06-08T21:44:45Z",
        "message": "reconciliation failed, retrying: failed to create istio-system/cert-manager-istio-csr role resource: ...",
        "reason": "Progressing",
        "status": "False",
        "type": "Ready"
    },
    {
        "lastTransitionTime": "2026-06-08T21:44:45Z",
        "message": "reconciliation in progress: failed to create istio-system/cert-manager-istio-csr role resource: ...",
        "reason": "Reconciling",
        "status": "True",
        "type": "Progressing"
    }
]

Status Conditions — MultipleInstancesFound

Second IstioCSR CR rejected as a duplicate:

[
    {
        "lastTransitionTime": "2026-06-08T21:45:06Z",
        "message": "",
        "reason": "MultipleInstancesFound",
        "status": "False",
        "type": "Degraded"
    },
    {
        "lastTransitionTime": "2026-06-08T21:45:06Z",
        "message": "multiple instances of istiocsr exists, cert-manager-operator/default will not be processed",
        "reason": "MultipleInstancesFound",
        "status": "False",
        "type": "Ready"
    },
    {
        "lastTransitionTime": "2026-06-08T21:45:06Z",
        "message": "multiple instances of istiocsr exists, cert-manager-operator/default will not be processed",
        "reason": "MultipleInstancesFound",
        "status": "False",
        "type": "Progressing"
    }
]
  • All unit tests pass (123/123 Ginkgo specs + all Go packages)
  • No lint issues from changed files
  • Verified on OCP 4.22 cluster — all three conditions visible with correct reasons
  • E2E tests pass

Summary by CodeRabbit

  • New Features

    • Added HTTPS liveness and readiness probes to improve operator health reporting.
    • Added/standardized the Progressing status condition to reflect reconciliation state more clearly.
  • Bug Fixes

    • Improved consistency of Ready, Degraded, and Progressing condition reasons across validation failures, dependency waits, multiple-instance conflicts, and success states.
    • Ensured condition updates occur only when values change.
  • Tests

    • Updated unit tests and e2e coverage to match the revised condition/reason behavior.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 1, 2026
@openshift-ci-robot

openshift-ci-robot commented May 1, 2026

Copy link
Copy Markdown

@sebrandon1: This pull request references CNF-23436 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:

Summary

The operator deployment currently has no health probes, so Kubernetes cannot detect if the operator process is stuck or not yet ready to serve. All cert-manager operands (controller, webhook, cainjector, trust-manager, istio-csr) already have probes configured — the operator itself is the only component missing them.

The library-go controllercmd framework already serves /healthz and /readyz over HTTPS on port 8443 via its GenericAPIServer, so no Go code changes are needed.

  • Liveness/healthz (ping, log, post-start hooks)
  • Readiness/readyz (same checks + shutdown, so the pod drains traffic during graceful termination)

Test plan

Tested locally against an OCP 4.22 cluster:

$ curl -sk "https://localhost:8443/healthz?verbose"
[+]ping ok
[+]log ok
[+]poststarthook/max-in-flight-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
healthz check passed

$ curl -sk "https://localhost:8443/readyz?verbose"
[+]ping ok
[+]log ok
[+]poststarthook/max-in-flight-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
[+]shutdown ok
readyz check passed
  • Operator deploys and reports ready
  • /healthz and /readyz return 200 when operator is healthy
  • Pod is restarted by kubelet when liveness probe fails
  • Pod is removed from service endpoints during graceful shutdown via readyz shutdown check

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 commented May 1, 2026

Copy link
Copy Markdown

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: Enterprise

Run ID: c0760bab-3612-4f06-9519-a3255ff61318

📥 Commits

Reviewing files that changed from the base of the PR and between 37c05f4 and a3a14a4.

📒 Files selected for processing (14)
  • api/operator/v1alpha1/conditions.go
  • api/operator/v1alpha1/conditions_test.go
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/manager/manager.yaml
  • pkg/controller/common/errors.go
  • pkg/controller/common/errors_test.go
  • pkg/controller/common/reconcile_result.go
  • pkg/controller/common/reconcile_result_test.go
  • pkg/controller/istiocsr/controller_test.go
  • pkg/controller/istiocsr/install_istiocsr.go
  • pkg/controller/istiocsr/utils.go
  • pkg/controller/trustmanager/controller_test.go
  • pkg/controller/trustmanager/install_trustmanager.go
  • test/e2e/trustmanager_test.go
🚧 Files skipped from review as they are similar to previous changes (11)
  • pkg/controller/istiocsr/install_istiocsr.go
  • api/operator/v1alpha1/conditions_test.go
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/manager/manager.yaml
  • pkg/controller/common/reconcile_result.go
  • pkg/controller/common/errors_test.go
  • test/e2e/trustmanager_test.go
  • api/operator/v1alpha1/conditions.go
  • pkg/controller/istiocsr/controller_test.go
  • pkg/controller/trustmanager/install_trustmanager.go
  • pkg/controller/trustmanager/controller_test.go

Walkthrough

The PR adds HTTPS liveness/readiness probes to operator manifests and expands reconciliation status handling to include Progressing plus condition-specific reasons across shared controller logic, IstioCSR, and TrustManager flows.

Changes

Reconciliation status propagation

Layer / File(s) Summary
Condition and error-reason contracts
api/operator/v1alpha1/conditions.go, api/operator/v1alpha1/conditions_test.go, pkg/controller/common/errors.go, pkg/controller/common/errors_test.go
Adds the Progressing condition, reason constants, and condition-reason storage and extraction helpers with tests.
Shared reconciliation status handling
pkg/controller/common/reconcile_result.go, pkg/controller/common/reconcile_result_test.go
Updates reconciliation outcomes to set Degraded, Ready, and Progressing using resolved reasons, with coverage for updates, no-op behavior, requeueing, and error propagation.
Controller-specific reason wiring
pkg/controller/istiocsr/*, pkg/controller/trustmanager/*, test/e2e/trustmanager_test.go
Propagates validation, dependency, and multiple-instance reasons and updates controller and e2e condition expectations.

Operator health probes

Layer / File(s) Summary
Controller-manager health probes
config/manager/manager.yaml, bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
Adds HTTPS liveness and readiness checks on /healthz and /readyz using the named https port and configured timing thresholds.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Controller
  participant HandleReconcileResult
  participant ReconcileError
  participant ConditionalStatus
  Controller->>HandleReconcileResult: pass reconciliation result
  HandleReconcileResult->>ReconcileError: extract condition reason
  HandleReconcileResult->>ConditionalStatus: set Degraded, Ready, Progressing
  ConditionalStatus-->>Controller: update conditions when changed
Loading

Suggested reviewers: swghosh, trilokgeer

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 26.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the two main changes: health probes and richer status conditions.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed Inspected all changed test files; the Ginkgo titles in test/e2e/trustmanager_test.go are static, and added Go test names are deterministic.
Test Structure And Quality ✅ Passed The touched Ginkgo e2e test keeps one cohesive scenario, uses BeforeEach/AfterEach cleanup, and all waits have explicit timeouts; no quality issues found.
Microshift Test Compatibility ✅ Passed The new TrustManager e2e case only uses core Namespace and cert-manager resources; no OpenShift-only APIs or MicroShift-incompatible assumptions were found.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The only e2e change is a namespace/status workflow; it has no multi-node, HA, scheduling, or failover assumptions and no SNO skip was needed.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only adds HTTPS probes; it չի introduce anti-affinity, topology spread, node selectors, tolerations, replica changes, or control-plane scheduling assumptions.
Ote Binary Stdout Contract ✅ Passed No changed process-level entrypoints or suite setup write to stdout; modified files are manifests, controllers, and tests only.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the changed TrustManager e2e test only updates status expectations and uses cluster-internal resources, with no IPv4-only or external connectivity assumptions.
No-Weak-Crypto ✅ Passed Changed files are probes/status logic only; scans found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret/token comparisons.
Container-Privileges ✅ Passed Changed manifests set allowPrivilegeEscalation:false, privileged:false, runAsNonRoot:true, and I found no hostPID/hostNetwork/hostIPC or SYS_ADMIN entries.
No-Sensitive-Data-In-Logs ✅ Passed Reviewed added logs in reconcile_result.go and utils.go; they only emit status flags and K8s namespace/name, with no secrets, tokens, or PII.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
openshift-ci Bot requested review from TrilokGeer and swghosh May 1, 2026 16:41
@openshift-ci

openshift-ci Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

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

@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch from e2f1df3 to cc2910e Compare May 5, 2026 22:37

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
config/manager/manager.yaml (1)

114-122: ⚡ Quick win

Tune readiness probe for faster drain on shutdown.

To better align with graceful termination, Line 120 and Line 122 are a bit slow (10s * 3 worst-case before NotReady). Consider faster readiness failure so endpoints stop routing sooner.

Suggested tweak
           readinessProbe:
             httpGet:
               path: /readyz
               port: https
               scheme: HTTPS
             initialDelaySeconds: 5
-            periodSeconds: 10
+            periodSeconds: 5
             timeoutSeconds: 5
-            failureThreshold: 3
+            failureThreshold: 1
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@config/manager/manager.yaml` around lines 114 - 122, The readinessProbe for
the manager (httpGet path "/readyz", scheme HTTPS) is too slow to mark Pod
NotReady during shutdown; adjust readinessProbe settings to fail faster by
lowering periodSeconds (e.g., from 10 to 2–3), reducing failureThreshold (e.g.,
from 3 to 1–2) and/or decreasing timeoutSeconds to ensure the probe transitions
to NotReady quickly so endpoints are drained sooner; update the readinessProbe
block (httpGet path /readyz, initialDelaySeconds, periodSeconds, timeoutSeconds,
failureThreshold) accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@config/manager/manager.yaml`:
- Around line 114-122: The readinessProbe for the manager (httpGet path
"/readyz", scheme HTTPS) is too slow to mark Pod NotReady during shutdown;
adjust readinessProbe settings to fail faster by lowering periodSeconds (e.g.,
from 10 to 2–3), reducing failureThreshold (e.g., from 3 to 1–2) and/or
decreasing timeoutSeconds to ensure the probe transitions to NotReady quickly so
endpoints are drained sooner; update the readinessProbe block (httpGet path
/readyz, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold)
accordingly.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: f1db3899-53e4-40c3-a38c-c2fc93c4f11f

📥 Commits

Reviewing files that changed from the base of the PR and between e2f1df3 and cc2910e.

📒 Files selected for processing (2)
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/manager/manager.yaml

@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch from cc2910e to d9d40bd Compare May 14, 2026 19:07
@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch from d9d40bd to 7285ee6 Compare May 29, 2026 15:51
@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch from 7285ee6 to 53508d0 Compare June 8, 2026 21:39
@sebrandon1 sebrandon1 changed the title CNF-23436: Add liveness and readiness probes to operator deployment CNF-23436: Add health probes and richer status conditions Jun 8, 2026
@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch 2 times, most recently from 19e3212 to 4e2bb0d Compare June 9, 2026 17:47
@sebrandon1

Copy link
Copy Markdown
Member Author

/retest

@sebrandon1 sebrandon1 changed the title CNF-23436: Add health probes and richer status conditions CM-1114: Add health probes and richer status conditions Jun 10, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 10, 2026

Copy link
Copy Markdown

@sebrandon1: This pull request references CM-1114 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:

Summary

Health Probes

The operator deployment currently has no health probes, so Kubernetes cannot detect if the operator process is stuck or not yet ready to serve. All cert-manager operands (controller, webhook, cainjector, trust-manager, istio-csr) already have probes configured — the operator itself is the only component missing them.

The library-go controllercmd framework already serves /healthz and /readyz over HTTPS on port 8443 via its GenericAPIServer, so no Go code changes are needed.

  • Liveness/healthz (ping, log, post-start hooks)
  • Readiness/readyz (same checks + shutdown, so the pod drains traffic during graceful termination)

Richer Status Conditions

IstioCSR and TrustManager CRs currently report only two status conditions (Ready and Degraded) with generic reason constants (Failed, Ready, Progressing). Users can't tell why something is progressing or degraded without reading operator logs.

This adds:

  • A dedicated Progressing condition type alongside Ready and Degraded
  • Specific reason constants: Reconciling, WaitingForDependencies, ValidationFailed, MultipleInstancesFound
  • A ConditionReason field on ReconcileError with WithConditionReason() chainable setter so controllers can annotate errors with specific reasons
  • Updated HandleReconcileResult to manage all three conditions and extract specific reasons from errors

Test plan

Health Probes

$ curl -sk "https://localhost:8443/healthz?verbose"
[+]ping ok
[+]log ok
[+]poststarthook/max-in-flight-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
healthz check passed

$ curl -sk "https://localhost:8443/readyz?verbose"
[+]ping ok
[+]log ok
[+]poststarthook/max-in-flight-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
[+]shutdown ok
readyz check passed

Status Conditions — Reconciling

IstioCSR CR during active reconciliation (retrying due to missing namespace):

[
   {
       "lastTransitionTime": "2026-06-08T21:44:45Z",
       "message": "",
       "reason": "Ready",
       "status": "False",
       "type": "Degraded"
   },
   {
       "lastTransitionTime": "2026-06-08T21:44:45Z",
       "message": "reconciliation failed, retrying: failed to create istio-system/cert-manager-istio-csr role resource: ...",
       "reason": "Progressing",
       "status": "False",
       "type": "Ready"
   },
   {
       "lastTransitionTime": "2026-06-08T21:44:45Z",
       "message": "reconciliation in progress: failed to create istio-system/cert-manager-istio-csr role resource: ...",
       "reason": "Reconciling",
       "status": "True",
       "type": "Progressing"
   }
]

Status Conditions — MultipleInstancesFound

Second IstioCSR CR rejected as a duplicate:

[
   {
       "lastTransitionTime": "2026-06-08T21:45:06Z",
       "message": "",
       "reason": "MultipleInstancesFound",
       "status": "False",
       "type": "Degraded"
   },
   {
       "lastTransitionTime": "2026-06-08T21:45:06Z",
       "message": "multiple instances of istiocsr exists, cert-manager-operator/default will not be processed",
       "reason": "MultipleInstancesFound",
       "status": "False",
       "type": "Ready"
   },
   {
       "lastTransitionTime": "2026-06-08T21:45:06Z",
       "message": "multiple instances of istiocsr exists, cert-manager-operator/default will not be processed",
       "reason": "MultipleInstancesFound",
       "status": "False",
       "type": "Progressing"
   }
]
  • All unit tests pass (123/123 Ginkgo specs + all Go packages)
  • No lint issues from changed files
  • Verified on OCP 4.22 cluster — all three conditions visible with correct reasons
  • E2E tests pass

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.

@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch 2 times, most recently from d43d440 to 3cdd7f9 Compare June 15, 2026 16:25
@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch 2 times, most recently from 858bcea to 28e5593 Compare June 24, 2026 19:51
@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch from 28e5593 to b550fd8 Compare July 6, 2026 16:17
@sebrandon1

Copy link
Copy Markdown
Member Author

@coderabbitai resume

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
✅ Action performed

Reviews resumed.

@sebrandon1
sebrandon1 force-pushed the add-operator-health-probes branch from b550fd8 to b484ca2 Compare July 13, 2026 17:58

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/controller/common/errors.go`:
- Around line 143-146: Update GetConditionReason to verify rerr is non-nil after
errors.As succeeds before accessing ConditionReason, returning the existing
fallback for a typed-nil *ReconcileError; add a regression test covering an
error interface containing a nil *ReconcileError.

In `@pkg/controller/trustmanager/install_trustmanager.go`:
- Around line 21-23: Update the error handling around validateTrustNamespace in
the trust-manager installation flow to distinguish a missing trust namespace
from lookup/API failures. Wrap only the not-found result with
ReasonWaitingForDependencies; propagate other validation errors without that
reason so transient failures remain retryable.
🪄 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: Enterprise

Run ID: bac91557-f9e0-4aaf-8ed7-9e5aedab1f3c

📥 Commits

Reviewing files that changed from the base of the PR and between d9d40bd and b484ca2.

📒 Files selected for processing (13)
  • api/operator/v1alpha1/conditions.go
  • api/operator/v1alpha1/conditions_test.go
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/manager/manager.yaml
  • pkg/controller/common/errors.go
  • pkg/controller/common/errors_test.go
  • pkg/controller/common/reconcile_result.go
  • pkg/controller/istiocsr/controller_test.go
  • pkg/controller/istiocsr/install_istiocsr.go
  • pkg/controller/istiocsr/utils.go
  • pkg/controller/trustmanager/controller_test.go
  • pkg/controller/trustmanager/install_trustmanager.go
  • test/e2e/trustmanager_test.go
🚧 Files skipped from review as they are similar to previous changes (10)
  • pkg/controller/istiocsr/install_istiocsr.go
  • bundle/manifests/cert-manager-operator.clusterserviceversion.yaml
  • config/manager/manager.yaml
  • pkg/controller/istiocsr/utils.go
  • pkg/controller/common/errors_test.go
  • api/operator/v1alpha1/conditions.go
  • pkg/controller/trustmanager/controller_test.go
  • api/operator/v1alpha1/conditions_test.go
  • test/e2e/trustmanager_test.go
  • pkg/controller/istiocsr/controller_test.go

Comment thread pkg/controller/common/errors.go
Comment thread pkg/controller/trustmanager/install_trustmanager.go
Add Progressing condition to operator status alongside existing Degraded
and Ready conditions. Introduce WithConditionReason/GetConditionReason
on ReconcileError for structured condition reason propagation through
the error chain.

Add liveness and readiness probes to the operator deployment manifest.

Add HandleReconcileResult unit tests covering success, irrecoverable,
and recoverable error paths including custom ConditionReason propagation,
no-change skip optimization, and updateConditionFn error propagation.

Apply typed-nil guard consistently to all errors.As call sites in the
error classification functions.
@openshift-ci

openshift-ci Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

@sebrandon1: 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.

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