Skip to content

chore: remove standalone OLM operator packaging - #1343

Draft
Patryk-Stefanski wants to merge 3 commits into
mainfrom
chore/remove-olm-artifacts
Draft

chore: remove standalone OLM operator packaging#1343
Patryk-Stefanski wants to merge 3 commits into
mainfrom
chore/remove-olm-artifacts

Conversation

@Patryk-Stefanski

@Patryk-Stefanski Patryk-Stefanski commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Removes all standalone OLM operator packaging from mcp-gateway. Under the kuadrant-operator umbrella operator pattern (RFC 0019), kuadrant-operator manages mcp-gateway as a component controller via Helm chart rendering. The preferred standalone install path is Helm.

Closes #1327

What's removed

  • `bundle/` — OLM bundle manifests, CSV, CRDs, metadata
  • `catalog/` — FBC catalog Dockerfile and channel entry
  • `config/manifests/` — OLM CSV base template
  • `config/deploy/olm/` — OLM CatalogSource, OperatorGroup, Subscription resources
  • `bundle.Dockerfile` — OLM bundle image build file
  • `build/olm.mk` — all OLM make targets (bundle, catalog, deploy-olm, etc.)
  • `utils/generate-catalog.sh` — FBC catalog generation script
  • `build-bundle` and `build-catalog` CI jobs from `images.yaml`
  • `operator-sdk` and `opm` tool definitions from `build/tools.mk`

What's updated

  • Makefile: remove `BUNDLE_VERSION`, `BUNDLE_IMG`, `CATALOG_IMG`, `CHANNELS`, `DEFAULT_CHANNEL` variables; remove `check-bundle-crd-sync` and `local-env-setup-olm` targets
  • scripts/set-release-version.sh: remove CSV and CatalogSource version update steps
  • RELEASING.md: remove bundle regeneration steps from release process
  • .github/workflows/verify-crd-sync.yaml: remove `bundle/manifests/**` path triggers
  • RC test matrix template: update OLM install item to kuadrant-operator managed path
  • Minor reference cleanup in README, build/auth.mk, build/kuadrant.mk

What's kept

Summary by CodeRabbit

  • Changes

    • Removed Operator Lifecycle Manager installation and deployment options.
    • Releases now focus on container images and Helm charts; OLM bundles and catalogs are no longer built or published.
    • Removed OLM-specific Kubernetes resources and installation artifacts.
  • Documentation

    • Updated setup, release, and testing guidance to use the standard local environment workflow and Helm-based installation.
    • Simplified release verification and synchronization instructions.

mcp-gateway is no longer a standalone OLM operator. Under the kuadrant-operator
umbrella operator pattern (RFC 0019), kuadrant-operator manages mcp-gateway
as a component controller via Helm chart rendering. The preferred standalone
install path is Helm.

Remove:
- bundle/ — OLM bundle manifests and metadata
- catalog/ — FBC catalog Dockerfile and channel entry
- config/manifests/ — OLM CSV template
- config/deploy/olm/ — OLM deployment resources
- bundle.Dockerfile — OLM bundle image build
- build/olm.mk — all OLM make targets
- utils/generate-catalog.sh — FBC catalog generation script
- build-bundle and build-catalog CI jobs from images.yaml
- operator-sdk and opm tool definitions from build/tools.mk

Update:
- Makefile: remove BUNDLE_VERSION, BUNDLE_IMG, CATALOG_IMG, CHANNELS,
  DEFAULT_CHANNEL variables; remove check-bundle-crd-sync target and
  local-env-setup-olm target
- scripts/set-release-version.sh: remove CSV and CatalogSource update steps
- RELEASING.md: remove bundle regeneration steps
- .github/workflows/verify-crd-sync.yaml: remove bundle/ path triggers
- RC test matrix template: update OLM install item to kuadrant-operator path
- Minor reference cleanup in README, build/auth.mk, build/kuadrant.mk

Closes #1327

Signed-off-by: Patryk Stefanski <pstefans@redhat.com>
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@Patryk-Stefanski, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 26 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 78a520ea-2ada-4c22-ad16-2f8329f8617e

📥 Commits

Reviewing files that changed from the base of the PR and between 435f799 and bfa71ae.

📒 Files selected for processing (2)
  • Makefile
  • linkinator.config.json
📝 Walkthrough

Walkthrough

The change removes OLM bundle, catalog, deployment, tooling, and release workflows. Make targets and installation guidance now use Helm-based setup. CRD synchronization excludes bundle manifests, and RC testing references kuadrant-operator for OpenShift OLM coverage.

Changes

OLM removal

Layer / File(s) Summary
Remove OLM packaging and tooling
Makefile, build/*.mk, bundle.Dockerfile, config/deploy/olm/*
OLM Make targets, tools, bundle packaging, and deployment configuration are removed.
Remove OLM release automation
.github/workflows/*, RELEASING.md, scripts/set-release-version.sh
Bundle and catalog builds, synchronization checks, release artifacts, and version updates are removed.
Update installation guidance and testing
.github/ISSUE_TEMPLATE/rc-test-matrix.md, README.md, build/auth.mk, build/kuadrant.mk
Setup instructions and RC test guidance now reference Helm or kuadrant-operator installation paths.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related issues

  • Kuadrant/kuadrant-operator issue 2157 — Removes standalone MCP Gateway OLM artifacts and Subscription/CSV installation paths.

Possibly related PRs

Suggested labels: review-effort/large, high-risk

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the removal of standalone OLM operator packaging.
Linked Issues check ✅ Passed The changes remove OLM artifacts and related tooling while retaining Helm as the standalone packaging mechanism for issue [#1327].
Out of Scope Changes check ✅ Passed The changes are limited to removing OLM packaging, deployment, automation, documentation, and related references.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/remove-olm-artifacts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot added high-risk Touches concurrency, auth, sessions, CRDs, ext_proc, or routing review-effort/large High review effort (4-5): many files, complex, cross-cutting labels Aug 4, 2026

@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: 3

🤖 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 @.github/ISSUE_TEMPLATE/rc-test-matrix.md:
- Line 46: Update or remove the OLM Install checklist entry in the release
candidate test matrix. If OLM setup remains supported, update the referenced OLM
installation documentation and its commands to use kuadrant-operator instead of
the outdated local-env-setup-olm, bundle, catalog-*, and deploy-olm flow;
otherwise remove the checklist entry.

In `@build/kuadrant.mk`:
- Line 11: Update the echo message in the Kuadrant CRD existence check to state
only that the Kuadrant CRDs are already present and Helm installation is being
skipped; remove the unsupported claim that they were installed via Helm.

In `@scripts/set-release-version.sh`:
- Around line 73-77: Update the GUIDE list in the release-version update loop to
include docs/guides/olm-install.md, preserving the existing updates for the
other guides; do not remove the guide or its OLM references.
🪄 Autofix

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: db93c564-63cf-4021-a695-3800b55f4472

📥 Commits

Reviewing files that changed from the base of the PR and between 5d75e5b and 435f799.

📒 Files selected for processing (27)
  • .github/ISSUE_TEMPLATE/rc-test-matrix.md
  • .github/workflows/images.yaml
  • .github/workflows/verify-crd-sync.yaml
  • Makefile
  • README.md
  • RELEASING.md
  • build/auth.mk
  • build/kuadrant.mk
  • build/olm.mk
  • build/tools.mk
  • bundle.Dockerfile
  • bundle/manifests/mcp-gateway.clusterserviceversion.yaml
  • bundle/manifests/mcp.kuadrant.io_mcpgatewayextensions.yaml
  • bundle/manifests/mcp.kuadrant.io_mcpserverregistrations.yaml
  • bundle/manifests/mcp.kuadrant.io_mcpvirtualservers.yaml
  • bundle/metadata/annotations.yaml
  • bundle/metadata/dependencies.yaml
  • catalog/mcp-gateway-channel-entry.yaml
  • config/deploy/olm/catalogsource.yaml
  • config/deploy/olm/kustomization.yaml
  • config/deploy/olm/namespace.yaml
  • config/deploy/olm/operatorgroup.yaml
  • config/deploy/olm/subscription.yaml
  • config/manifests/bases/mcp-gateway.clusterserviceversion.yaml
  • config/manifests/kustomization.yaml
  • scripts/set-release-version.sh
  • utils/generate-catalog.sh
💤 Files with no reviewable changes (19)
  • config/deploy/olm/namespace.yaml
  • catalog/mcp-gateway-channel-entry.yaml
  • bundle/metadata/dependencies.yaml
  • utils/generate-catalog.sh
  • bundle/manifests/mcp-gateway.clusterserviceversion.yaml
  • config/manifests/bases/mcp-gateway.clusterserviceversion.yaml
  • build/olm.mk
  • config/manifests/kustomization.yaml
  • bundle/metadata/annotations.yaml
  • bundle/manifests/mcp.kuadrant.io_mcpvirtualservers.yaml
  • config/deploy/olm/subscription.yaml
  • bundle/manifests/mcp.kuadrant.io_mcpserverregistrations.yaml
  • config/deploy/olm/operatorgroup.yaml
  • bundle/manifests/mcp.kuadrant.io_mcpgatewayextensions.yaml
  • bundle.Dockerfile
  • build/tools.mk
  • config/deploy/olm/kustomization.yaml
  • .github/workflows/images.yaml
  • config/deploy/olm/catalogsource.yaml

- [ ] [External MCP Server](https://github.com/Kuadrant/mcp-gateway/blob/release-X.Y.Z/docs/guides/external-mcp-server.md)
- [ ] [Virtual MCP Servers](https://github.com/Kuadrant/mcp-gateway/blob/release-X.Y.Z/docs/guides/virtual-mcp-servers.md)
- [ ] [OLM Install](https://github.com/Kuadrant/mcp-gateway/blob/release-X.Y.Z/docs/guides/olm-install.md)
- [ ] [OLM Install (via kuadrant-operator)](https://github.com/Kuadrant/mcp-gateway/blob/release-X.Y.Z/docs/guides/olm-install.md)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

rg -n -C 3 'local-env-setup-olm|bundle|catalog|olm' docs/guides/olm-install.md

Repository: Kuadrant/mcp-gateway

Length of output: 2025


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== repo files of interest =="
git ls-files Makefile config deploy config/deploy docs | sed -n '1,220p'

echo
echo "== Make targets containing olm/local-env setup/deploy =="
rg -n -C 2 'local-env-setup-olm|kuadrant-operator|deploy-olm|bundle|catalog|olm-inst|undeploy-olm|deploy-kuadrant' Makefile docs Makefile 2>/dev/null || true

echo
echo "== README/READMEs references to olm/local-env setup =="
rg -n -C 2 'local-env-setup-olm|kuadrant-operator|olm-install|Undeploy|make undeploy|Deploy' -g 'README*' -g 'docs/*' .

Repository: Kuadrant/mcp-gateway

Length of output: 50379


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
p = Path('docs/guides/olm-install.md')
text = p.read_text()
terms = ['local-env-setup-olm', 'bundle', 'catalog', 'kuadrant-operator', 'olm-install']
for term in terms:
    print(f"{term}: {text.count(term)} occurrences")
PY

Repository: Kuadrant/mcp-gateway

Length of output: 298


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Makefile relevant targets/dictionary =="
python3 - <<'PY'
from pathlib import Path
for line in Path('Makefile').read_text().splitlines():
    if line.startswith('.PHONY') or line.endswith(':') or 'local-env-setup-olm' in line or 'olm-install' in line or 'kuadrant-operator' in line or 'deploy-olm' in line:
        print(line)
PY

echo
echo "== docs/guides/olm-install.md =="
cat -n docs/guides/olm-install.md

echo
echo "== template checklist line =="
cat -n .github/ISSUE_TEMPLATE/rc-test-matrix.md | sed -n '40,50p'

Repository: Kuadrant/mcp-gateway

Length of output: 6880


Update or remove the OLM checklist entry.

docs/guides/olm-install.md still lists make local-env-setup-olm, make bundle, make catalog-*, and make deploy-olm; update those sections to use kuadrant-operator, or remove this checklist entry if OLM setup is no longer supported.

🤖 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 @.github/ISSUE_TEMPLATE/rc-test-matrix.md at line 46, Update or remove the
OLM Install checklist entry in the release candidate test matrix. If OLM setup
remains supported, update the referenced OLM installation documentation and its
commands to use kuadrant-operator instead of the outdated local-env-setup-olm,
bundle, catalog-*, and deploy-olm flow; otherwise remove the checklist entry.

Comment thread build/kuadrant.mk
kuadrant-install-impl: $(HELM)
@if kubectl get crd kuadrants.kuadrant.io >/dev/null 2>&1; then \
echo "Kuadrant CRDs already present (installed via OLM or Helm), skipping Helm install."; \
echo "Kuadrant CRDs already present (installed via Helm), skipping Helm install."; \

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Report only what the condition proves.

The condition checks only whether kuadrants.kuadrant.io exists. It does not prove that Helm installed the CRD. The CRD can come from kuadrant-operator through OLM or another existing installation.

Use a neutral message:

Proposed fix
-		echo "Kuadrant CRDs already present (installed via Helm), skipping Helm install."; \
+		echo "Kuadrant CRDs already present, skipping Helm install."; \
📝 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
echo "Kuadrant CRDs already present (installed via Helm), skipping Helm install."; \
echo "Kuadrant CRDs already present, skipping Helm install."; \
🤖 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 `@build/kuadrant.mk` at line 11, Update the echo message in the Kuadrant CRD
existence check to state only that the Kuadrant CRDs are already present and
Helm installation is being skipped; remove the unsupported claim that they were
installed via Helm.

Comment on lines 73 to +77
# Update docs/guides MCP_GATEWAY_VERSION
for GUIDE in \
"$REPO_ROOT/docs/guides/quick-start.md" \
"$REPO_ROOT/docs/guides/isolated-gateway-deployment.md" \
"$REPO_ROOT/docs/guides/how-to-install-and-configure.md" \
"$REPO_ROOT/docs/guides/olm-install.md"; do
"$REPO_ROOT/docs/guides/how-to-install-and-configure.md"; do

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify olm-install.md removal and check for dangling references.
fd olm-install.md
rg -n 'olm-install' docs/ README.md RELEASING.md 2>/dev/null

Repository: Kuadrant/mcp-gateway

Length of output: 314


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- set-release-version.sh relevant sections ---\n'
sed -n '60,90p' scripts/set-release-version.sh

printf '\n--- olm-install.md outline/size ---\n'
wc -l docs/guides/olm-install.md
sed -n '1,80p' docs/guides/olm-install.md

Repository: Kuadrant/mcp-gateway

Length of output: 249


Restore the OLM install guide update.

docs/guides/olm-install.md still exists and only contains OLM install steps, so it should not be omitted from the release-version update loop. Add it back or remove it and all OLM install references together.

🤖 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 `@scripts/set-release-version.sh` around lines 73 - 77, Update the GUIDE list
in the release-version update loop to include docs/guides/olm-install.md,
preserving the existing updates for the other guides; do not remove the guide or
its OLM references.

Signed-off-by: Patryk Stefanski <pstefans@redhat.com>
release-X.Y.Z and vX.Y.Z placeholder URLs in the RC test matrix template
always 404 — skip them in the link checker.

Signed-off-by: Patryk Stefanski <pstefans@redhat.com>
@Patryk-Stefanski
Patryk-Stefanski marked this pull request as draft August 5, 2026 10:31
Patryk-Stefanski added a commit that referenced this pull request Aug 13, 2026
The standalone mcp-gateway OLM operator packaging is being removed
(#1343). On OLM clusters, MCP Gateway is now installed and managed by
the Kuadrant Operator, which embeds the controller and deploys it on
startup (RFC 0019).

Rewrite olm-install.md to install via the Kuadrant Operator subscription,
create an MCPGatewayExtension to deploy the data plane, and cross-link
Helm (standalone) and the standalone-to-operator upgrade guide. Drop the
removed bundle/catalog/make-target content. Add the guide to the index.
Patryk-Stefanski added a commit that referenced this pull request Aug 13, 2026
MCP Gateway does not ship a standalone OLM operator. On OLM-based
clusters it is installed and managed by the Kuadrant Operator, which
embeds the MCP Gateway controller and deploys it on startup (RFC 0019).
Standalone installs use Helm (see how-to-install-and-configure.md).

- olm-install.md: rewrite for the Kuadrant Operator install path —
  subscribe to the operator, create an MCPGatewayExtension to deploy the
  data plane. No Kuadrant CR is required for the controller to run. Drops
  the removed standalone bundle/catalog/make-target content (#1343).
- olm-upgrade.md: new how-to for migrating an existing OLM-installed
  standalone MCP Gateway to the consolidated Kuadrant Operator
  deployment. Zero-downtime; verified end-to-end on OpenShift 4.22.
- README.md: add both guides to the index.

Signed-off-by: Patryk Stefanski <pstefans@redhat.com>
@Patryk-Stefanski

Copy link
Copy Markdown
Contributor Author

Nice — this already covers the two big doc items from a docs audit I ran for the umbrella move: the dead make local-env-setup-olm reference in README.md and the OLM bundle/catalog steps in RELEASING.md are both handled here. 👍

One doc this PR leaves stale that's worth folding in: docs/design/operator-based-install.md still describes packaging mcp-gateway as its own standalone OLM operator as a goal/completed work ("Package for OLM", "Generate OLM bundle (CatalogSource, Package, Bundle metadata)", "OLM based installation and upgrade"). Once this PR removes that packaging, the design doc contradicts the umbrella model. A short "superseded by the Kuadrant Operator umbrella model (RFC 0019)" banner at the top would keep it honest — a full rewrite isn't needed since it's a design/history doc.

For context, the user-facing install/upgrade guides are handled separately in #1283 (rewritten olm-install.md + new olm-upgrade.md).

@coderabbitai coderabbitai Bot mentioned this pull request Aug 20, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

high-risk Touches concurrency, auth, sessions, CRDs, ext_proc, or routing review-effort/large High review effort (4-5): many files, complex, cross-cutting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove OLM artefacts from mcp-gateway

1 participant