Skip to content

OCPBUGS-82110: fix service-ca-controller CrashLoop on MicroShift#344

Merged
openshift-merge-bot[bot] merged 3 commits into
openshift:mainfrom
sanchezl:fix-microshift-featuregate-crash
Apr 9, 2026
Merged

OCPBUGS-82110: fix service-ca-controller CrashLoop on MicroShift#344
openshift-merge-bot[bot] merged 3 commits into
openshift:mainfrom
sanchezl:fix-microshift-featuregate-crash

Conversation

@sanchezl

@sanchezl sanchezl commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Consolidate feature gate forwarding from the operator to the controller Deployment via a single --feature-gates CLI arg built from a map[string]bool, replacing individual bool parameters
  • Remove FeatureGate/ClusterVersion runtime detection from the controller process — feature gates are now exclusively received via CLI args forwarded by the operator
  • Config informers for the PKI resource are only created when ConfigurablePKI is explicitly enabled

Root Cause

PR #327 added FeatureGateAccess initialization to the controller process (pkg/controller/servingcert/starter/starter.go) that creates informers for ClusterVersion and FeatureGate CRDs. On MicroShift, these CRDs do not exist, so the informers fail repeatedly and the controller crashes after a 1-minute timeout.

Test Plan

  • make build
  • make test-unit
  • Verify service-ca-controller starts successfully on MicroShift without ClusterVersion/FeatureGate CRDs
  • Verify ConfigurablePKI still works on full OpenShift when the feature gate is enabled

@openshift-ci-robot openshift-ci-robot added jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 8, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@sanchezl: This pull request references Jira Issue OCPBUGS-82110, which is invalid:

  • expected the bug to target the "4.22.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Summary

  • Consolidate feature gate forwarding from the operator to the controller Deployment via a single --feature-gates CLI arg built from a map[string]bool, replacing individual bool parameters
  • Remove FeatureGate/ClusterVersion runtime detection from the controller process — feature gates are now exclusively received via CLI args forwarded by the operator
  • Config informers for the PKI resource are only created when ConfigurablePKI is explicitly enabled

Root Cause

PR #327 added FeatureGateAccess initialization to the controller process (pkg/controller/servingcert/starter/starter.go) that creates informers for ClusterVersion and FeatureGate CRDs. On MicroShift, these CRDs do not exist, so the informers fail repeatedly and the controller crashes after a 1-minute timeout.

Test Plan

  • make build
  • make test-unit
  • Verify service-ca-controller starts successfully on MicroShift without ClusterVersion/FeatureGate CRDs
  • Verify ConfigurablePKI still works on full OpenShift when the feature gate is enabled

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 Apr 8, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b7f79a36-4f13-4449-aca3-8f6ca510e4e5

📥 Commits

Reviewing files that changed from the base of the PR and between 69aba4c and d3b5a4d.

📒 Files selected for processing (11)
  • CLAUDE.md
  • pkg/cmd/controller/cmd.go
  • pkg/controller/servingcert/controller/secret_creating_controller.go
  • pkg/controller/servingcert/controller/secret_updating_controller.go
  • pkg/controller/servingcert/starter/starter.go
  • pkg/controller/starter.go
  • pkg/operator/operator.go
  • pkg/operator/rotate.go
  • pkg/operator/starter.go
  • pkg/operator/sync_common.go
  • pkg/operator/sync_common_test.go
✅ Files skipped from review due to trivial changes (1)
  • CLAUDE.md
🚧 Files skipped from review as they are similar to previous changes (6)
  • pkg/cmd/controller/cmd.go
  • pkg/controller/starter.go
  • pkg/controller/servingcert/controller/secret_updating_controller.go
  • pkg/operator/operator.go
  • pkg/controller/servingcert/controller/secret_creating_controller.go
  • pkg/controller/servingcert/starter/starter.go

Walkthrough

Refactors feature-gate handling to inject a map of enabled gates into the operator and controllers (via CLI args) instead of detecting gates at runtime via informers/CRDs; several function signatures and call sites now accept/propagate map[string]bool, and controller startup uses that map for gate decisions.

Changes

Cohort / File(s) Summary
Controller startup & wiring
pkg/cmd/controller/cmd.go, pkg/controller/starter.go
Replaced boolean shortCertRotationEnabled parameter with enabledFeatureGates map[string]bool; pass full map into controller start path so controllers receive CLI-provided gates.
Service-serving cert controllers
pkg/controller/servingcert/controller/secret_creating_controller.go, pkg/controller/servingcert/controller/secret_updating_controller.go, pkg/controller/servingcert/starter/starter.go
Constructor signatures changed to accept either configurablePKIEnabled bool or enabledFeatureGates map[string]bool; removed runtime feature-gate informer logic and OpenShift feature-gate imports; conditional PKI informer/start now driven by the passed booleans/map entries.
Operator core & rotation
pkg/operator/operator.go, pkg/operator/rotate.go, pkg/operator/starter.go, pkg/operator/sync_common.go
Operator replaced per-feature boolean fields with enabledFeatureGates map[string]bool; gate checks now use map lookups (e.g., "ConfigurablePKI", "ShortCertRotation"). Added featureGateArg to render deterministic --feature-gates= CLI args for the managed Deployment.
Tests & docs
pkg/operator/sync_common_test.go, CLAUDE.md
Tests updated to supply enabledFeatureGates map[string]bool instead of booleans; documentation added describing operator-driven feature-gate injection and controller CLI propagation.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

✨ 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 openshift-ci Bot requested review from bertinatto and p0lyn0mial April 8, 2026 19:05
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 8, 2026
@sanchezl

sanchezl commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 8, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@sanchezl: This pull request references Jira Issue OCPBUGS-82110, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh

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

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@sanchezl: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test e2e-aws
/test e2e-aws-operator
/test e2e-aws-upgrade
/test images
/test okd-scos-images
/test unit
/test verify
/test verify-deps

The following commands are available to trigger optional jobs:

/test e2e-aws-operator-serial-disruptive-ote
/test e2e-aws-operator-serial-ote
/test okd-scos-e2e-aws-ovn

Use /test all to run the following jobs that were automatically triggered:

pull-ci-openshift-service-ca-operator-main-e2e-aws
pull-ci-openshift-service-ca-operator-main-e2e-aws-operator
pull-ci-openshift-service-ca-operator-main-e2e-aws-operator-serial-disruptive-ote
pull-ci-openshift-service-ca-operator-main-e2e-aws-operator-serial-ote
pull-ci-openshift-service-ca-operator-main-e2e-aws-upgrade
pull-ci-openshift-service-ca-operator-main-images
pull-ci-openshift-service-ca-operator-main-okd-scos-images
pull-ci-openshift-service-ca-operator-main-unit
pull-ci-openshift-service-ca-operator-main-verify
pull-ci-openshift-service-ca-operator-main-verify-deps
Details

In response to this:

/test e2e-aws-operator-techpreview

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.

@openshift-ci

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@sanchezl: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test e2e-aws
/test e2e-aws-operator
/test e2e-aws-upgrade
/test images
/test okd-scos-images
/test unit
/test verify
/test verify-deps

The following commands are available to trigger optional jobs:

/test e2e-aws-operator-serial-disruptive-ote
/test e2e-aws-operator-serial-ote
/test okd-scos-e2e-aws-ovn

Use /test all to run the following jobs that were automatically triggered:

pull-ci-openshift-service-ca-operator-main-e2e-aws
pull-ci-openshift-service-ca-operator-main-e2e-aws-operator
pull-ci-openshift-service-ca-operator-main-e2e-aws-operator-serial-disruptive-ote
pull-ci-openshift-service-ca-operator-main-e2e-aws-operator-serial-ote
pull-ci-openshift-service-ca-operator-main-e2e-aws-upgrade
pull-ci-openshift-service-ca-operator-main-images
pull-ci-openshift-service-ca-operator-main-okd-scos-images
pull-ci-openshift-service-ca-operator-main-unit
pull-ci-openshift-service-ca-operator-main-verify
pull-ci-openshift-service-ca-operator-main-verify-deps
Details

In response to this:

/test e2e-microshift

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.

@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 (3)
pkg/controller/servingcert/controller/secret_updating_controller.go (1)

45-60: Keep the forwarded feature-gate state at this boundary.

Collapsing the map back to configurablePKIEnabled here means the next controller-side gate needed in this layer will force another constructor signature change through the serving-cert stack. Passing the forwarded map through one more hop (or a small typed config derived from it) would keep this refactor extensible. As per coding guidelines, "Controller receives feature gates as map[string]bool via pkg/cmd/controller/cmd.go and threads through call chain".

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

In `@pkg/controller/servingcert/controller/secret_updating_controller.go` around
lines 45 - 60, The constructor currently collapses the forwarded feature-gate
map into a single configurablePKIEnabled bool; instead accept and carry the
feature-gates map[string]bool through this boundary (change the parameter to
e.g. featureGates map[string]bool) and store that map (or a small typed config
derived from it) on the serviceServingCertUpdateController/servingCertIssuer so
downstream callers can read additional gates without another signature change;
update references to configurablePKIEnabled to read from the map (or typed
config) and preserve the existing boolean behavior by deriving it from
featureGates["ConfigurablePKI"] during the transition.
pkg/operator/sync_common_test.go (1)

115-120: Cover ordering and disabled-gate filtering in this table.

pkg/operator/sync_common.go now sorts enabled gates and drops false entries, but this table only asserts the single-gate happy path. Adding a multi-gate case and a false-value case would protect the deployment arg formatting from quiet regressions.

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

In `@pkg/operator/sync_common_test.go` around lines 115 - 120, Add table-driven
test cases to pkg/operator/sync_common_test.go covering multiple enabled gates
and filtering out false-valued gates: extend the existing test table (the entry
using deployment(...).withFeatureGates(...).valueOrDie()) with one case where
enabledFeatureGates contains multiple keys in unsorted order (e.g.,
{"B":true,"A":true}) and assert withFeatureGates expects sorted
"A=true","B=true", and another case where a gate is set to false (e.g.,
{"A":true,"B":false}) and assert that only "A=true" appears; locate and update
the test rows that construct expectedDeployment using withFeatureGates to
reflect these scenarios so the test verifies both sorting and false-value
filtering implemented in sync_common.go.
pkg/operator/starter.go (1)

152-175: Consider documenting the startup-only feature-gate snapshot behavior.

Feature gates are read once at startup (via InitialFeatureGatesObserved()), captured in enabledFeatureGates, and used to conditionally configure informers and the PKI provider. This is correct and necessary—informer lists and PKI providers cannot be reconfigured after operator startup. However, this constraint should be explicitly documented (e.g., in code comments) to clarify that later FeatureGate changes will not be picked up until the operator restarts.

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

In `@pkg/operator/starter.go` around lines 152 - 175, Add a clear comment near the
startup feature-gate snapshot code (around the creation of enabledFeatureGates
and the call to InitialFeatureGatesObserved()/featureGates usage) stating that
feature gates are read once at operator startup, that enabledFeatureGates is a
static snapshot used to configure informer lists and the PKI provider, and that
subsequent FeatureGate changes will not be applied until the operator restarts;
reference the enabledFeatureGates map and the NewServiceCAOperator call so
readers understand this startup-only behavior affects informer configuration and
the PKI provider.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@pkg/controller/servingcert/controller/secret_updating_controller.go`:
- Around line 45-60: The constructor currently collapses the forwarded
feature-gate map into a single configurablePKIEnabled bool; instead accept and
carry the feature-gates map[string]bool through this boundary (change the
parameter to e.g. featureGates map[string]bool) and store that map (or a small
typed config derived from it) on the
serviceServingCertUpdateController/servingCertIssuer so downstream callers can
read additional gates without another signature change; update references to
configurablePKIEnabled to read from the map (or typed config) and preserve the
existing boolean behavior by deriving it from featureGates["ConfigurablePKI"]
during the transition.

In `@pkg/operator/starter.go`:
- Around line 152-175: Add a clear comment near the startup feature-gate
snapshot code (around the creation of enabledFeatureGates and the call to
InitialFeatureGatesObserved()/featureGates usage) stating that feature gates are
read once at operator startup, that enabledFeatureGates is a static snapshot
used to configure informer lists and the PKI provider, and that subsequent
FeatureGate changes will not be applied until the operator restarts; reference
the enabledFeatureGates map and the NewServiceCAOperator call so readers
understand this startup-only behavior affects informer configuration and the PKI
provider.

In `@pkg/operator/sync_common_test.go`:
- Around line 115-120: Add table-driven test cases to
pkg/operator/sync_common_test.go covering multiple enabled gates and filtering
out false-valued gates: extend the existing test table (the entry using
deployment(...).withFeatureGates(...).valueOrDie()) with one case where
enabledFeatureGates contains multiple keys in unsorted order (e.g.,
{"B":true,"A":true}) and assert withFeatureGates expects sorted
"A=true","B=true", and another case where a gate is set to false (e.g.,
{"A":true,"B":false}) and assert that only "A=true" appears; locate and update
the test rows that construct expectedDeployment using withFeatureGates to
reflect these scenarios so the test verifies both sorting and false-value
filtering implemented in sync_common.go.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e2d4043b-8422-4a4e-8c9d-3a4b76c991a0

📥 Commits

Reviewing files that changed from the base of the PR and between a6f7add and 69aba4c.

📒 Files selected for processing (11)
  • CLAUDE.md
  • pkg/cmd/controller/cmd.go
  • pkg/controller/servingcert/controller/secret_creating_controller.go
  • pkg/controller/servingcert/controller/secret_updating_controller.go
  • pkg/controller/servingcert/starter/starter.go
  • pkg/controller/starter.go
  • pkg/operator/operator.go
  • pkg/operator/rotate.go
  • pkg/operator/starter.go
  • pkg/operator/sync_common.go
  • pkg/operator/sync_common_test.go

@sanchezl

sanchezl commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn-techpreview

@sanchezl

sanchezl commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-microshift-release-4.22-periodics-e2e-aws-ovn-ocp-conformance

@openshift-ci

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@sanchezl: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/b3637960-337f-11f1-9c82-aa9cfbc3ba61-0

@openshift-ci

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@sanchezl: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-microshift-release-4.22-periodics-e2e-aws-ovn-ocp-conformance

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/b5e8ebc0-337f-11f1-853b-7dbce084b4eb-0

sanchezl added 3 commits April 8, 2026 15:24
Replace individual feature gate bools (shortCertRotationEnabled,
configurablePKIEnabled) with a single enabledFeatureGates map[string]bool
throughout the operator. The operator detects enabled gates and builds a
single --feature-gates=Key1=true,Key2=true CLI arg for the controller
Deployment.

This improves scalability: adding a new feature gate no longer requires
plumbing a new bool parameter through multiple function signatures.
The controller process was using FeatureGateAccess with ClusterVersion
and FeatureGate informers to detect enabled feature gates at runtime.
On MicroShift, these CRDs do not exist, causing the informers to fail
repeatedly and the controller to crash after a 1-minute timeout.

Instead, use the feature gates already forwarded via --feature-gates CLI
args from the operator process. Config informers for the PKI resource
are now only created when ConfigurablePKI is explicitly enabled,
avoiding any dependency on CRDs that may not exist.

Fixes: OCPBUGS-82110
@sanchezl sanchezl force-pushed the fix-microshift-featuregate-crash branch from 69aba4c to d3b5a4d Compare April 8, 2026 19:28
@sanchezl

sanchezl commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn-techpreview

@sanchezl

sanchezl commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-microshift-release-4.22-periodics-e2e-aws-ovn-ocp-conformance

@openshift-ci

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@sanchezl: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/3b289870-3381-11f1-9d1b-0cd4a2b38680-0

@openshift-ci

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

@sanchezl: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-microshift-release-4.22-periodics-e2e-aws-ovn-ocp-conformance

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/3ba6a210-3381-11f1-819c-08aea589ab2e-0

@openshift-ci

openshift-ci Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

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

@benluddy

benluddy commented Apr 9, 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 Apr 9, 2026
@openshift-ci

openshift-ci Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: benluddy, sanchezl

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

@sanchezl

sanchezl commented Apr 9, 2026

Copy link
Copy Markdown
Contributor Author

/verified by CI

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

Copy link
Copy Markdown
Contributor

@sanchezl: This PR has been marked as verified by CI.

Details

In response to this:

/verified by CI

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

Copy link
Copy Markdown
Contributor

@sanchezl: This pull request references Jira Issue OCPBUGS-82110, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

Summary

  • Consolidate feature gate forwarding from the operator to the controller Deployment via a single --feature-gates CLI arg built from a map[string]bool, replacing individual bool parameters
  • Remove FeatureGate/ClusterVersion runtime detection from the controller process — feature gates are now exclusively received via CLI args forwarded by the operator
  • Config informers for the PKI resource are only created when ConfigurablePKI is explicitly enabled

Root Cause

PR #327 added FeatureGateAccess initialization to the controller process (pkg/controller/servingcert/starter/starter.go) that creates informers for ClusterVersion and FeatureGate CRDs. On MicroShift, these CRDs do not exist, so the informers fail repeatedly and the controller crashes after a 1-minute timeout.

Test Plan

  • make build
  • make test-unit
  • Verify service-ca-controller starts successfully on MicroShift without ClusterVersion/FeatureGate CRDs
  • Verify ConfigurablePKI still works on full OpenShift when the feature gate is enabled

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-merge-bot openshift-merge-bot Bot merged commit 7b3033b into openshift:main Apr 9, 2026
12 checks passed
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@sanchezl: Jira Issue OCPBUGS-82110: Some pull requests linked via external trackers have merged:

The following pull request, linked via external tracker, has not merged:

All associated pull requests must be merged or unlinked from the Jira bug in order for it to move to the next state. Once unlinked, request a bug refresh with /jira refresh.

Jira Issue OCPBUGS-82110 has not been moved to the MODIFIED state.

This PR is marked as verified. If the remaining PRs listed above are marked as verified before merging, the issue will automatically be moved to VERIFIED after all of the changes from the PRs are available in an accepted nightly payload.

Details

In response to this:

Summary

  • Consolidate feature gate forwarding from the operator to the controller Deployment via a single --feature-gates CLI arg built from a map[string]bool, replacing individual bool parameters
  • Remove FeatureGate/ClusterVersion runtime detection from the controller process — feature gates are now exclusively received via CLI args forwarded by the operator
  • Config informers for the PKI resource are only created when ConfigurablePKI is explicitly enabled

Root Cause

PR #327 added FeatureGateAccess initialization to the controller process (pkg/controller/servingcert/starter/starter.go) that creates informers for ClusterVersion and FeatureGate CRDs. On MicroShift, these CRDs do not exist, so the informers fail repeatedly and the controller crashes after a 1-minute timeout.

Test Plan

  • make build
  • make test-unit
  • Verify service-ca-controller starts successfully on MicroShift without ClusterVersion/FeatureGate CRDs
  • Verify ConfigurablePKI still works on full OpenShift when the feature gate is enabled

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.

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. jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. 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.

3 participants