Skip to content

Document release.openshift.io/feature-gate annotation and CVO manifest inclusion#112607

Open
nikhilprajapati-world wants to merge 2 commits into
openshift:mainfrom
nikhilprajapati-world:docs/featuregate-annotation-cvo-manifest-inclusion
Open

Document release.openshift.io/feature-gate annotation and CVO manifest inclusion#112607
nikhilprajapati-world wants to merge 2 commits into
openshift:mainfrom
nikhilprajapati-world:docs/featuregate-annotation-cvo-manifest-inclusion

Conversation

@nikhilprajapati-world
Copy link
Copy Markdown
Contributor

@nikhilprajapati-world nikhilprajapati-world commented Jun 2, 2026

Summary

  • Document the new CVO feature-gate-based manifest inclusion/exclusion mechanism introduced in OCP 4.22 (OCPSTRAT-2485)
  • Add a new section "Understanding feature-gate-based manifest inclusion" to the feature gates guide
  • Add a cross-reference NOTE in the "Understanding feature gates" concept module

Why this is needed

OpenShift 4.22 introduces a CVO capability where release payload manifests annotated with release.openshift.io/feature-gate are conditionally included or excluded based on which feature gates are enabled on the cluster. There is zero user-facing documentation for this feature despite:

  1. ~48 manifests in the 4.22 payload being gated across 5 distinct feature gates (ClusterAPIMachineManagement, CRDCompatibilityRequirementOperator, GatewayAPIWithoutOLM, InsightsConfig, CRIOCredentialProviderConfig)
  2. CVO logs referencing the mechanism with messages like excluding ... feature gate ClusterAPIMachineManagement is required but not enabled — administrators have no documentation to explain these messages
  3. Annotation name confusion already causing real issues — a tester used the wrong annotation name (feature-gates plural vs feature-gate singular) and couldn't get the feature to work
  4. Orphaned resource behavior being non-obvious — when a gate is disabled, previously applied resources remain on the cluster; CVO does not delete them

What changed

New file

  • modules/nodes-cluster-enabling-features-manifest-inclusion.adoc — New CONCEPT module covering:
    • How CVO uses the release.openshift.io/feature-gate annotation
    • Annotation syntax table (positive gate, negated gate, AND logic with multiple gates)
    • Procedure to discover gated manifests using oc adm release extract and grep
    • Orphaned resource behavior with IMPORTANT callout
    • CVO log message examples with explanations

Modified files

  • nodes/clusters/nodes-cluster-enabling-features.adoc — Added include for the new module
  • modules/nodes-cluster-enabling-features-about.adoc — Added a NOTE with cross-reference to the new section

Implementation references

Duplicate check

No existing PR or doc bug found. Searched:

  • openshift/openshift-docs PRs — none document release.openshift.io/feature-gate
  • Red Hat Jira — no OCPDOCS-* ticket found referencing this annotation
  • CVO PR Bug 1277029: edit link to storage options #1273 contains no documentation update

Testing

Verified on OCP 4.22.0-rc.4 (AWS us-east-2):

  • CVO correctly excludes gated manifests when gates are disabled
  • CVO includes gated manifests after enabling CustomNoUpgrade with the target gate
  • CVO logs confirm exclusion/inclusion messages match the documented examples
  • Orphaned resources remain after disabling a previously enabled gate

Test plan

  • Annotation syntax table covers all three formats (positive, negated, AND)
  • Discovery procedure tested with oc adm release extract
  • CVO log examples from live cluster testing
  • Cross-reference from "Understanding feature gates" to new section
  • Peer review for AsciiDoc formatting and style guide compliance

Made with Cursor

…and CVO manifest inclusion

Add a new section "Understanding feature-gate-based manifest inclusion"
to the feature gates guide documenting the CVO capability introduced in
OCP 4.22 that conditionally includes or excludes release payload manifests
based on which feature gates are enabled.

Covers:
- How CVO uses the release.openshift.io/feature-gate annotation
- Annotation syntax (positive, negated, AND logic)
- How to discover gated manifests in a release using oc adm release extract
- Orphaned resource behavior when a gate is disabled
- CVO log messages for manifest inclusion/exclusion

Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 2, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Jun 2, 2026

@nikhilprajapati-world: This pull request references OCPSTRAT-2485 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 feature to target either version "5.0." or "openshift-5.0.", but it targets "openshift-4.22" instead.

Details

In response to this:

Summary

  • Document the new CVO feature-gate-based manifest inclusion/exclusion mechanism introduced in OCP 4.22 (OCPSTRAT-2485)
  • Add a new section "Understanding feature-gate-based manifest inclusion" to the feature gates guide
  • Add a cross-reference NOTE in the "Understanding feature gates" concept module

Why this is needed

OpenShift 4.22 introduces a CVO capability where release payload manifests annotated with release.openshift.io/feature-gate are conditionally included or excluded based on which feature gates are enabled on the cluster. There is zero user-facing documentation for this feature despite:

  1. ~48 manifests in the 4.22 payload being gated across 5 distinct feature gates (ClusterAPIMachineManagement, CRDCompatibilityRequirementOperator, GatewayAPIWithoutOLM, InsightsConfig, CRIOCredentialProviderConfig)
  2. CVO logs referencing the mechanism with messages like excluding ... feature gate ClusterAPIMachineManagement is required but not enabled — administrators have no documentation to explain these messages
  3. Annotation name confusion already causing real issues — a tester used the wrong annotation name (feature-gates plural vs feature-gate singular) and couldn't get the feature to work
  4. Orphaned resource behavior being non-obvious — when a gate is disabled, previously applied resources remain on the cluster; CVO does not delete them

What changed

New file

  • modules/nodes-cluster-enabling-features-manifest-inclusion.adoc — New CONCEPT module covering:
  • How CVO uses the release.openshift.io/feature-gate annotation
  • Annotation syntax table (positive gate, negated gate, AND logic with multiple gates)
  • Procedure to discover gated manifests using oc adm release extract and grep
  • Orphaned resource behavior with IMPORTANT callout
  • CVO log message examples with explanations

Modified files

  • nodes/clusters/nodes-cluster-enabling-features.adoc — Added include for the new module
  • modules/nodes-cluster-enabling-features-about.adoc — Added a NOTE with cross-reference to the new section

Implementation references

Duplicate check

No existing PR or doc bug found. Searched:

  • openshift/openshift-docs PRs — none document release.openshift.io/feature-gate
  • Red Hat Jira — no OCPDOCS-* ticket found referencing this annotation
  • CVO PR Bug 1277029: edit link to storage options #1273 contains no documentation update

Testing

Verified on OCP 4.22.0-rc.4 (AWS us-east-2):

  • CVO correctly excludes gated manifests when gates are disabled
  • CVO includes gated manifests after enabling CustomNoUpgrade with the target gate
  • CVO logs confirm exclusion/inclusion messages match the documented examples
  • Orphaned resources remain after disabling a previously enabled gate

Test plan

  • Annotation syntax table covers all three formats (positive, negated, AND)
  • Discovery procedure tested with oc adm release extract
  • CVO log examples from live cluster testing
  • Cross-reference from "Understanding feature gates" to new section
  • Peer review for AsciiDoc formatting and style guide compliance

Made with Cursor

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 added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Jun 2, 2026
@ocpdocs-previewbot
Copy link
Copy Markdown

ocpdocs-previewbot commented Jun 2, 2026

🤖 Tue Jun 02 02:11:43 - Prow CI generated the docs preview:

https://112607--ocpdocs-pr.netlify.app/openshift-enterprise/latest/nodes/clusters/nodes-cluster-enabling-features.html


[NOTE]
====
Starting in {product-title} 4.22, the Cluster Version Operator (CVO) can conditionally include or exclude release payload manifests based on which feature gates are enabled. For details, see xref:../../nodes/clusters/nodes-cluster-enabling-features.adoc#nodes-cluster-enabling-features-manifest-inclusion_nodes-cluster-enabling[Understanding feature-gate-based manifest inclusion].
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 [error] OpenShiftAsciiDoc.NoXrefInModules: Do not include xrefs in modules, only assemblies (exception: release notes modules).


[NOTE]
====
Starting in {product-title} 4.22, the Cluster Version Operator (CVO) can conditionally include or exclude release payload manifests based on which feature gates are enabled. For details, see xref:../../nodes/clusters/nodes-cluster-enabling-features.adoc#nodes-cluster-enabling-features-manifest-inclusion_nodes-cluster-enabling[Understanding feature-gate-based manifest inclusion].
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 [error] AsciiDocDITA.ConceptLink: Move all links and cross references to Additional resources.


You can discover which manifests in a release payload are gated behind feature gates by extracting the payload and searching for the annotation.

.Prerequisites
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 [error] AsciiDocDITA.BlockTitle: Block titles can only be assigned to examples, figures, and tables in DITA.

* You have installed the {oc-first}.
* You have access to the release image for your cluster version.

.Procedure
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 [error] AsciiDocDITA.BlockTitle: Block titles can only be assigned to examples, figures, and tables in DITA.


CVO logs information about excluded and included gated manifests. You can view these messages to understand which manifests are affected by your feature gate configuration.

.Procedure
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 [error] AsciiDocDITA.BlockTitle: Block titles can only be assigned to examples, figures, and tables in DITA.

@nikhilprajapati-world nikhilprajapati-world changed the title OCPSTRAT-2485: Document release.openshift.io/feature-gate annotation and CVO manifest inclusion Document release.openshift.io/feature-gate annotation and CVO manifest inclusion Jun 2, 2026
@openshift-ci-robot openshift-ci-robot removed the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 2, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@nikhilprajapati-world: No Jira issue is referenced in the title of this pull request.
To reference a jira issue, add 'XYZ-NNN:' to the title of this pull request and request another refresh with /jira refresh.

Details

In response to this:

Summary

  • Document the new CVO feature-gate-based manifest inclusion/exclusion mechanism introduced in OCP 4.22 (OCPSTRAT-2485)
  • Add a new section "Understanding feature-gate-based manifest inclusion" to the feature gates guide
  • Add a cross-reference NOTE in the "Understanding feature gates" concept module

Why this is needed

OpenShift 4.22 introduces a CVO capability where release payload manifests annotated with release.openshift.io/feature-gate are conditionally included or excluded based on which feature gates are enabled on the cluster. There is zero user-facing documentation for this feature despite:

  1. ~48 manifests in the 4.22 payload being gated across 5 distinct feature gates (ClusterAPIMachineManagement, CRDCompatibilityRequirementOperator, GatewayAPIWithoutOLM, InsightsConfig, CRIOCredentialProviderConfig)
  2. CVO logs referencing the mechanism with messages like excluding ... feature gate ClusterAPIMachineManagement is required but not enabled — administrators have no documentation to explain these messages
  3. Annotation name confusion already causing real issues — a tester used the wrong annotation name (feature-gates plural vs feature-gate singular) and couldn't get the feature to work
  4. Orphaned resource behavior being non-obvious — when a gate is disabled, previously applied resources remain on the cluster; CVO does not delete them

What changed

New file

  • modules/nodes-cluster-enabling-features-manifest-inclusion.adoc — New CONCEPT module covering:
  • How CVO uses the release.openshift.io/feature-gate annotation
  • Annotation syntax table (positive gate, negated gate, AND logic with multiple gates)
  • Procedure to discover gated manifests using oc adm release extract and grep
  • Orphaned resource behavior with IMPORTANT callout
  • CVO log message examples with explanations

Modified files

  • nodes/clusters/nodes-cluster-enabling-features.adoc — Added include for the new module
  • modules/nodes-cluster-enabling-features-about.adoc — Added a NOTE with cross-reference to the new section

Implementation references

Duplicate check

No existing PR or doc bug found. Searched:

  • openshift/openshift-docs PRs — none document release.openshift.io/feature-gate
  • Red Hat Jira — no OCPDOCS-* ticket found referencing this annotation
  • CVO PR Bug 1277029: edit link to storage options #1273 contains no documentation update

Testing

Verified on OCP 4.22.0-rc.4 (AWS us-east-2):

  • CVO correctly excludes gated manifests when gates are disabled
  • CVO includes gated manifests after enabling CustomNoUpgrade with the target gate
  • CVO logs confirm exclusion/inclusion messages match the documented examples
  • Orphaned resources remain after disabling a previously enabled gate

Test plan

  • Annotation syntax table covers all three formats (positive, negated, AND)
  • Discovery procedure tested with oc adm release extract
  • CVO log examples from live cluster testing
  • Cross-reference from "Understanding feature gates" to new section
  • Peer review for AsciiDoc formatting and style guide compliance

Made with Cursor

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.

…ocks to prose

- Remove xref NOTE from about.adoc module (NoXrefInModules, ConceptLink)
- Move cross-reference to assembly Additional resources section
- Convert .Prerequisites and .Procedure block titles to prose in the
  CONCEPT module (AsciiDocDITA.BlockTitle)

Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Jun 2, 2026

@nikhilprajapati-world: 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

size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants