Skip to content

Conversation

camilamacedo86
Copy link
Contributor

No description provided.

@camilamacedo86 camilamacedo86 requested a review from a team as a code owner October 14, 2025 11:01
@openshift-ci openshift-ci bot requested review from pedjak and trgeiger October 14, 2025 11:01
Copy link

openshift-ci bot commented Oct 14, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

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

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

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

Copy link

netlify bot commented Oct 14, 2025

Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit af47a95
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/68f26adfaa2b590008bbf1f4
😎 Deploy Preview https://deploy-preview-2267--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link

codecov bot commented Oct 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.18%. Comparing base (292c0db) to head (af47a95).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2267      +/-   ##
==========================================
- Coverage   73.00%   70.18%   -2.83%     
==========================================
  Files          88       88              
  Lines        8743     8743              
==========================================
- Hits         6383     6136     -247     
- Misses       1947     2192     +245     
- Partials      413      415       +2     
Flag Coverage Δ
e2e 45.23% <ø> (+5.81%) ⬆️
experimental-e2e 14.30% <ø> (-32.50%) ⬇️
unit 58.11% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@camilamacedo86 camilamacedo86 changed the title ✨ Promote Webhook FeatureGates to GA ✨ Promote Webhook FeatureGates to GA (OPRUN-4098) Oct 14, 2025
@tmshort
Copy link
Contributor

tmshort commented Oct 14, 2025

/hold
We can't have both feature gates enabled simultaneously, as one is meant for upstream (WebhookProviderCertManager), and the other is meant for downstream (WebhookProviderOpenshiftServiceCA).

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 14, 2025
@tmshort
Copy link
Contributor

tmshort commented Oct 14, 2025

I think my preference would be to leave the feature-gates off by default, and put just the one we want into the helm/olmv1/values.yaml file, but this would mean also leaving them in the experimental.yaml file as well, which is not desirable (i.e. have it in two places). The alternative is to use an if/.Values.openshift.enabled/else sequence to separate the two flags.

BUT, the strangeness comes from the fact that we have cluster-olm-operator getting feature-gates from Openshift. I have a downstream change that would "remove" all upstream gates from values.yaml, and that might be needed before this is merged downstream.

BUT, another strangeness occurs because helm does not merge/combine lists; they are overwritten.

I need to think about this some more.

@camilamacedo86
Copy link
Contributor Author

/hold

Until we decide how to do

@tmshort
Copy link
Contributor

tmshort commented Oct 14, 2025

That we have two feature-gates that can't be enabled simultaneously is causing us this headache (this should not be an issue with 99%of other features).

Although the CertManager one takes priority:

func getCertificateProvider() render.CertificateProvider {
if features.OperatorControllerFeatureGate.Enabled(features.WebhookProviderCertManager) {
return certproviders.CertManagerCertificateProvider{}
} else if features.OperatorControllerFeatureGate.Enabled(features.WebhookProviderOpenshiftServiceCA) {
return certproviders.OpenshiftServiceCaCertificateProvider{}
}
return nil
}

Which I guess is a reasonable default. But it means we have to explicitly turn off CertManager to get OpenshiftServiceCA, and we don't really have that capability downstream.

Due to the downstream mapping of feature-gates, we only handle "enabled" flags (i.e. we can't turn things off), and we couldn't turn things off without a way in the helm chart to do so (i.e. additional upstream effort).

And disabling features just sounds wrong to me. I really think we need to enable features.

Add in the fact that helm doesn't merge lists makes this more challenging.

I'm envisioning a number of possible solutions, none of which I really like, so I'm wondering if this is something to be discussed in a meeting (office hours)?

@tmshort
Copy link
Contributor

tmshort commented Oct 14, 2025

Options?

  1. Keep these feature-gates off, explicitly turn on CertManager upstream through a new standard.yaml file, which means that experimental.yaml would also need to include it. Downstream, the OpenshiftServiceCA value would be enabled via the Openshift feature-gates.

1a. Add a new "standardFeatures" list that parallels the existing helm feature lists so that the value doesn't have to be duplicated in both standard.yaml and experimental.yaml. (this is a bunch of effort to avoid duplication of a value in a list).

  1. Change the feature-gates to be on, but then add upstream and downstream and cluster-olm-operator mechanisms to be able to disable the feature gates. This would be a lot of additional work.

  2. Add a new --webhook-provider option to operator-controller to select between CertManager and OpenshiftServiceCA (the default would be no provider). This effectively replaces the feature-gates with a tri-state, and would be enabled in the chart via .Values.openshift.enabled or .Values.certManager.enabled settings.

@camilamacedo86 camilamacedo86 force-pushed the promote-webhook-ga branch 2 times, most recently from 562998c to 61ead05 Compare October 15, 2025 07:43
@tmshort
Copy link
Contributor

tmshort commented Oct 15, 2025

There is no default certificate provider in OLMv1. We provide explicit options to turn on and use cert-manager and/or Openshift serviceca, and I think we need to be able to reflect that.

Some fairly small changes would be needed to make the --certificate-provider a true tri-state.

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 16, 2025
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 17, 2025
@camilamacedo86 camilamacedo86 force-pushed the promote-webhook-ga branch 2 times, most recently from 0063256 to b6e90d7 Compare October 17, 2025 06:37
Promote to GA WebhookProviderOpenshiftServiceCA and WebhookProviderCertManager. For upstream WebhookProviderCertManager is used by default when WebhookProviderOpenshiftServiceCA is disabled by default.
@camilamacedo86
Copy link
Contributor Author

Hey folks 👋

@perdasilva @tmshort

I’ve updated this PR — it now reflects what we discussed.
It looks good to merge once we get the green light from you and downstream is ready to receive it.

Please feel free to review when you get a chance 🙏

Copy link
Contributor

@michaelryanpeter michaelryanpeter left a comment

Choose a reason for hiding this comment

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

Some suggestions for clarity. Feel free to apply what makes sense and disregard any comments that feel off topic.

Comment on lines +4 to +7
OLMv1 supports the installation of bundles containing webhooks by default.
The controller uses the `WebhookProviderCertManager`
feature-gate unless you override it. To switch to the OpenShift Service CA provider,
start the controller with `--feature-gates=WebhookProviderCertManager=false` and enable `--feature-gates=WebhookProviderOpenshiftServiceCA=true`.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
OLMv1 supports the installation of bundles containing webhooks by default.
The controller uses the `WebhookProviderCertManager`
feature-gate unless you override it. To switch to the OpenShift Service CA provider,
start the controller with `--feature-gates=WebhookProviderCertManager=false` and enable `--feature-gates=WebhookProviderOpenshiftServiceCA=true`.
OLM v1 supports installing bundles that use admission webhooks.
By default, OLM v1 uses the community Cert Manager package for admission webhook validation. To use the OpenShift Service CA provider, set the `--feature-gates=WebhookProviderOpenshiftServiceCA=true` flag at startup.

Copy link
Contributor Author

@camilamacedo86 camilamacedo86 Oct 17, 2025

Choose a reason for hiding this comment

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

We have more than one kind of webhook that is supported.
certManager is used only for the admission webhook
So, I think it would not be very accurate.

The other suggestion was accepted :-)

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm confused, isn't that what I wrote?
"By default, OLM v1 uses the community Cert Manager package for admission webhook validation."

(I'm totally fine if you don't take the suggestion, but I thought we are both saying the same thing?)

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

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants