Skip to content

feat(lightspeed): replace RAG init container with OKP deployment - #3370

Open
maysunfaisal wants to merge 3 commits into
redhat-developer:mainfrom
maysunfaisal:okp-integration-1
Open

feat(lightspeed): replace RAG init container with OKP deployment #3370
maysunfaisal wants to merge 3 commits into
redhat-developer:mainfrom
maysunfaisal:okp-integration-1

Conversation

@maysunfaisal

@maysunfaisal maysunfaisal commented Aug 18, 2026

Copy link
Copy Markdown

Description

Replace the Lightspeed RAG init container / FAISS vector store with an OKP (Offline Knowledge Portal) backend and swap the Lightspeed dynamic plugins to the Intelligent Assistant plugins.

OKP deployment

  • Add OKP as an operator-managed Deployment, Service, and Route (Solr 8983 + httpd 8080) — new internal/controller/okp.go, wired in backstage_controller.go.
  • Gated on OpenShift. Vanilla K8s swaps in lightspeed-stack-no-okp.yaml so LCORE does not crash without an OKP backend (operator has no Ingress support — RHDHPLAN-423/RHIDP-2176).
  • Inject OKP_SERVICE_URL into the lightspeed-core sidecar before applying objects, avoiding a dual-ReplicaSet rollout.

Plugin swap (Intelligent Assistant)

  • Default lightspeed flavour plugins → oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant(-backend):{{inherit}}, enabled: true; FE carries the full pluginConfig (dynamicRoutes/mountPoints).
  • Uses quay.io/rhdh (not registry.access.redhat.com) to match the operator's CATALOG_INDEX_IMAGE + RHDH image, so {{inherit}} resolves at the container level (install-dynamic-plugins).

Config & images

  • Align the LCORE sidecar with the OGX image, add HF_HOME + --synthesized-config-output for read-only rootfs, and pin the OKP image to registry.redhat.io/offline-knowledge-portal/rhokp-rhel9:1.2.10-1786628394.
  • Sync vendored Lightspeed configs from lightspeed-configs@main (hack/sync-lightspeed-configs.sh).
  • Regenerate dist/rhdh/install.yaml + bundle/rhdh/manifests/rhdh-flavour-lightspeed-config_v1_configmap.yaml.

Which issue(s) does this PR fix or relate to

https://redhat.atlassian.net/browse/RHIDP-16103

PR acceptance criteria

  • Tests
  • Documentation

How to test changes / Special notes to the reviewer

On OpenShift:

  1. Deploy the operator: make deploy IMG=<operator-image> PROFILE=rhdh
  2. Create the Lightspeed secret with your inference key (e.g. OPENAI_API_KEY) — see examples/lightspeed.yaml.
  3. Apply a Backstage CR with the lightspeed flavour enabled and the secret wired into the lightspeed-core container.
  4. Verify:
    • developer-hub pod 2/2 Running; OKP Deployment/Service/Route 1/1 Running.
    • OKP_SERVICE_URL + HF_HOME injected into the lightspeed-core sidecar; LCORE GET /v1/models returns 200.
    • IA FE/BE plugins resolve via {{inherit}} (digests match the RHDH image's catalog).
    • Intelligent Assistant UI: general chat returns OKP RAG sources; Notebooks answers from an uploaded doc.

On vanilla K8s: OKP is skipped, lightspeed-stack-no-okp.yaml is used, and LCORE starts without crashing.

Building Container Images for Testing

Need to test container images from this PR?

For Maintainers: To trigger a test image build, review the code and comment /build-images.
This always builds the HEAD of the PR branch.

For Contributors: Ask a maintainer to run /build-images.

Images will be built and pushed to Quay with links posted in comments.

@maysunfaisal
maysunfaisal requested review from a team as code owners August 18, 2026 19:16
@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.59763% with 48 lines in your changes missing coverage. Please review.
✅ Project coverage is 65.74%. Comparing base (22ee1d4) to head (ec0b6e3).
⚠️ Report is 13 commits behind head on main.

Files with missing lines Patch % Lines
pkg/model/runtime.go 48.64% 14 Missing and 5 partials ⚠️
internal/controller/okp.go 23.52% 13 Missing ⚠️
pkg/model/flavour.go 0.00% 8 Missing ⚠️
pkg/model/okp.go 73.68% 5 Missing ⚠️
internal/controller/backstage_controller.go 0.00% 3 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #3370      +/-   ##
==========================================
+ Coverage   63.97%   65.74%   +1.76%     
==========================================
  Files          38       43       +5     
  Lines        2365     2633     +268     
==========================================
+ Hits         1513     1731     +218     
- Misses        702      747      +45     
- Partials      150      155       +5     
Flag Coverage Δ
nightly ?
unittests 65.74% <71.59%> (+1.76%) ⬆️

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

Files with missing lines Coverage Δ
pkg/model/okp-deployment.go 100.00% <100.00%> (ø)
pkg/model/okp-route.go 100.00% <100.00%> (ø)
pkg/model/okp-service.go 100.00% <100.00%> (ø)
internal/controller/backstage_controller.go 0.00% <0.00%> (ø)
pkg/model/okp.go 73.68% <73.68%> (ø)
pkg/model/flavour.go 66.12% <0.00%> (-9.80%) ⬇️
internal/controller/okp.go 23.52% <23.52%> (ø)
pkg/model/runtime.go 67.17% <48.64%> (-11.72%) ⬇️

... and 1 file with indirect coverage changes

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

@maysunfaisal
maysunfaisal force-pushed the okp-integration-1 branch 2 times, most recently from 51db81c to 3bbec01 Compare August 18, 2026 20:51
Comment thread docs/lightspeed.md
Comment thread internal/controller/okp.go Outdated
selectorLabels := okpSelectorLabels(backstage.Name)

// OKP Deployment
deployment := &appsv1.Deployment{

@michael-valdron michael-valdron Aug 18, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@maysunfaisal Though I'll mostly let the @redhat-developer/rhdh-install team comment on the operator source changes I'll make one comment on this part.

It makes sense to have controller parsing for OpenShift only parts, I wondering if it would be better to have the OKP deployment specification either in a OKP flavour or a separate OKP deployment specification within the lightspeed (intelligent-assistant) flavour that this controller source parses?

I'm considering the different non-lightspeed flavours users and customers may use as well as any automated patching that may be used here (i.e. patching the OKP image).

fyi @gazarenkov @rm3l

@maysunfaisal maysunfaisal Aug 18, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Valid concern @michael-valdron

Midstream digest-pinning scans YAML manifests, not Go source, so it would miss the OKP image ref in okp.go. A couple of things worth noting:

  • OKP is already lightspeed-only at runtime — applyOkpResources gates on IsFlavourEnabled("lightspeed") && IsOpenshift(), so non-lightspeed users get zero OKP resources today. That said, having it described declaratively in the flavour is cleaner.
  • The move is non-trivial:
    • the operator's config kinds (deployment, service, route) are singletons tied to the main RHDH app, so OKP would need new registered kinds + factories. The existing .ocp/.k8s suffix mechanism also doesn't handle "create-or-skip-entirely" gating, so some Go code will still be needed for the
      OpenShift-only conditional logic.

I'm going to explore options on how best to approach this. Would appreciate any suggestions or guidance from @gazarenkov / @rm3l on the preferred pattern for flavour-owned sidecar resources.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@michael-valdron

The OKP Deployment/Service/Route are now defined in the lightspeed flavour YAML (config/profile/rhdh/default-config/flavours/lightspeed/okp-*.yaml) and applied via the normal model path, rather than constructed imperatively in okp.go.

Each is a separately registered key, still gated to OpenShift. The only bit kept in Go is injecting OKP_SERVICE_URL into the lightspeed-core sidecar, since that value is computed at runtime (CR name/namespace + ingress domain) and can't be a static YAML env. This also means the OKP image string now rides in the bundle ConfigMap, so midstream image pinning can see it.

@maysunfaisal

Copy link
Copy Markdown
Author

Corresponding rhdh-chart PR redhat-developer/rhdh-chart#500

maysunfaisal added a commit to maysunfaisal/rhdh-operator that referenced this pull request Aug 21, 2026
Move the OKP (Offline Knowledge Portal) Deployment, Service, and Route
out of imperative Go construction in internal/controller/okp.go and into
the lightspeed flavour as YAML manifests, so OKP is described like every
other flavour resource and its image string rides in the bundle
ConfigMap (visible to midstream image pinning). Addresses PR redhat-developer#3370
review comment: "should OKP be in the flavour YAML rather than Go?".

Each OKP object is a separately registered model key (OkpDeploymentKey,
OkpServiceKey, OkpRouteKey) with its own MergeFunc, and stays gated to
OpenShift in addToModel. Flavour gating is implicit (files live only in
flavours/lightspeed/). The runtime behavior is unchanged: same objects,
same OpenShift-only gating, same OKP_SERVICE_URL injection into the
lightspeed-core sidecar before apply (no dual ReplicaSet).

Remove applyOkpResources; OKP now flows through the normal
applyObjects(GetRuntimeObjects()) SSA path. Keep prepareOkpEnvVar and
prepareOkpConfig as controller wiring. Regenerate bundle manifests and
dist/rhdh/install.yaml.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
maysunfaisal added a commit to maysunfaisal/rhdh-operator that referenced this pull request Aug 21, 2026
Move the OKP (Offline Knowledge Portal) Deployment, Service, and Route
out of imperative Go construction in internal/controller/okp.go and into
the lightspeed flavour as YAML manifests, so OKP is described like every
other flavour resource and its image string rides in the bundle
ConfigMap (visible to midstream image pinning). Addresses PR redhat-developer#3370
review comment: "should OKP be in the flavour YAML rather than Go?".

Each OKP object is a separately registered model key (OkpDeploymentKey,
OkpServiceKey, OkpRouteKey) with its own MergeFunc, and stays gated to
OpenShift in addToModel. Flavour gating is implicit (files live only in
flavours/lightspeed/). The runtime behavior is unchanged: same objects,
same OpenShift-only gating, same OKP_SERVICE_URL injection into the
lightspeed-core sidecar before apply (no dual ReplicaSet).

Remove applyOkpResources; OKP now flows through the normal
applyObjects(GetRuntimeObjects()) SSA path. Keep prepareOkpEnvVar and
prepareOkpConfig as controller wiring. Regenerate bundle manifests and
dist/rhdh/install.yaml.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rm3l

rm3l commented Aug 24, 2026

Copy link
Copy Markdown
Member

/build-images

@github-actions

Copy link
Copy Markdown
Contributor

Image build failed

See workflow run for details: https://github.com/redhat-developer/rhdh-operator/actions/runs/32705736214

Triggered by @rm3l

@rm3l

rm3l commented Aug 24, 2026

Copy link
Copy Markdown
Member

/build-images

@github-actions

Copy link
Copy Markdown
Contributor

Image build failed

See workflow run for details: https://github.com/redhat-developer/rhdh-operator/actions/runs/32705962118

Triggered by @rm3l

maysunfaisal and others added 2 commits August 24, 2026 13:41
…DP-16103]

Remove the init-rag-data init container and FAISS vector store from the
lightspeed flavour. Add OKP (Offline Knowledge Portal) as a Deployment,
Service, and Route managed by the operator, gated on OpenShift; vanilla
K8s swaps in the lightspeed-stack-no-okp.yaml config to avoid LCORE
crashing without an OKP backend. Inject OKP_SERVICE_URL into the
lightspeed-core sidecar before applying objects to avoid a dual
ReplicaSet rollout. Align the LCORE sidecar with the OGX image and pin
the OKP image. Sync vendored Lightspeed configs from
lightspeed-configs@main.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Move the OKP (Offline Knowledge Portal) Deployment, Service, and Route
out of imperative Go construction in internal/controller/okp.go and into
the lightspeed flavour as YAML manifests, so OKP is described like every
other flavour resource and its image string rides in the bundle
ConfigMap (visible to midstream image pinning). Addresses PR redhat-developer#3370
review comment: "should OKP be in the flavour YAML rather than Go?".

Each OKP object is a separately registered model key (OkpDeploymentKey,
OkpServiceKey, OkpRouteKey) with its own MergeFunc, and stays gated to
OpenShift in addToModel. Flavour gating is implicit (files live only in
flavours/lightspeed/). The runtime behavior is unchanged: same objects,
same OpenShift-only gating, same OKP_SERVICE_URL injection into the
lightspeed-core sidecar before apply (no dual ReplicaSet).

Remove applyOkpResources; OKP now flows through the normal
applyObjects(GetRuntimeObjects()) SSA path. Keep prepareOkpEnvVar and
prepareOkpConfig as controller wiring. Regenerate bundle manifests and
dist/rhdh/install.yaml.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@maysunfaisal

Copy link
Copy Markdown
Author

/build-images

@github-actions

Copy link
Copy Markdown
Contributor

PR images built successfully!

Images are available for testing:

  1. Operator: quay.io/rhdh-community/operator:2.0.0-pr-3370-9726670
  2. Bundle: quay.io/rhdh-community/operator-bundle:2.0.0-pr-3370-9726670
  3. Catalog: quay.io/rhdh-community/operator-catalog:2.0.0-pr-3370-9726670

Also available with PR number tag:

  • quay.io/rhdh-community/operator:2.0.0-pr-3370
  • quay.io/rhdh-community/operator-bundle:2.0.0-pr-3370
  • quay.io/rhdh-community/operator-catalog:2.0.0-pr-3370

Triggered by @maysunfaisal

@Jdubrick Jdubrick left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Just a general question as well: will OKP get cleaned up if someone disables the lightspeed flavour?

# Lightspeed Plugins
- package: oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-lightspeed:{{inherit}}
# Intelligent Assistant Plugins
- package: oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant:{{inherit}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Question more for @rm3l instead of us: since the next tag of the plugin catalog has the plugins listed as quay.io we have to change the reference here. Do we need to swap them back to registry.access.redhat.com eventually?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I haven't tested it yet, but can you adopt the new ref:// pattern going forward (see redhat-developer/rhdh#5204)? This way, it won't be affected by registry changes in the DPDY. Can you try this?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

ok switched to ref:// in the new commit and plugins install successfully

======= No plugin path specified for oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c, auto-detecting from OCI manifest

======= Auto-resolving OCI package oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c to use plugin path: red-hat-developer-hub-backstage-plugin-intelligent-assistant

======= Adding new dynamic plugin configuration for version `sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c` of oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant:!red-hat-developer-hub-backstage-plugin-intelligent-assis
======= No plugin path specified for oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend@sha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84, auto-detecting from OCI manifest
                                                                                                                                         ======= Auto-resolving OCI package oci://quay.io/rhdh/red-hat-developer-hub-backstage-pluginkend@sha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84 to use pluginpath: red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend

======= Adding new dynamic plugin configuration for version `sha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84` of oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend:!redge-plugin-intelligent-assistant-backend

======= No plugin path specified for oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c, auto-detecting from OCI manifest

======= Auto-resolving OCI package oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c to use plugin path: red-hat-developer-hub-backstage-plugin-intelligent-assistant

======= Overriding dynamic plugin configuration oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant:!red-hat-developer-hub-backstage-plugin-intelligent-assistant

======= No plugin path specified for oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend@sha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84, auto-detecting from OCI manifest

======= Auto-resolving OCI package oci://quay.io/rhdh/red-hat-developer-hub-backstage-pluginkend@sha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84 to use pluginpath: red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend

======= Overriding dynamic plugin configuration oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend:!red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend

======= Installing OCI plugin oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c!red-hat-developer-hub-backsta
ge-plugin-intelligent-assistant
      ==> Downloading oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c

======= Installing OCI plugin oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intesha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84!red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend
      ==> Downloading oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-6c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84

      ==> Installed oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant@sha256:88cccf46912392c8be10aa9a454c5f5fd2257968bee1007ab8430a22cdc3d65c!red-hat-developer-hub-backstage-plugin-igent-assistant
      ==> Installed oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-intelligent-assistant-backend@sha256:76c597cd1e44b6fff262ad9fa8bacf0123f55bb97139138dbde8fa401dc4dc84!red-hat-developer-hub-backstagen-intelligent-assistant-backend

======= All plugins installed successfully

Comment thread docs/lightspeed.md Outdated
Comment on lines +79 to +80
> [!NOTE]
> The `{{inherit}}` tag resolves the plugin version from the RHDH catalog index that ships with the operator's RHDH image, so the assistant stays aligned with the platform. The `quay.io/rhdh` registry is significant — it matches the operator's `CATALOG_INDEX_IMAGE`, allowing the reference to resolve at the container level.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we need this blurb? Since inherit is an RHDH specific thing that multiple plugins use, maybe it should be top-level/already covered?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Yeah i can update to remove it

Comment thread docs/lightspeed.md Outdated
The assistant uses **OKP (Offline Knowledge Portal)** for document retrieval (RAG), replacing the previous RAG init container and FAISS vector store.

- **OpenShift:** the operator deploys OKP as a `Deployment`, `Service`, and `Route` (Solr on `8983`, httpd on `8080`), and injects `OKP_SERVICE_URL` into the `lightspeed-core` sidecar so the assistant queries it for grounded answers.
- **Vanilla Kubernetes:** OKP is **not** deployed (the operator has no Ingress support). The Lightspeed Core config falls back to `lightspeed-stack-no-okp.yaml` (the `rag`/`okp` sections stripped out) so the service starts cleanly without an OKP backend. General chat and Notebooks still work; OKP-backed retrieval is unavailable.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mention that responses related to RHDH/Lightspeed (Intelligent Assistant)/etc may not be as accurate without a knowledge base to draw on

@rm3l

rm3l commented Aug 26, 2026

Copy link
Copy Markdown
Member

/cc @gazarenkov

@openshift-ci
openshift-ci Bot requested a review from gazarenkov August 26, 2026 13:13
…ext, docs [RHIDP-16103]

Switch IA plugin references from oci://...inherit to ref:// pattern
(per rm3l review, rhdh#5204). Add OTEL_SDK_DISABLED=true to LCORE env
to prevent crash when OTEL collector unreachable. Add securityContext to
LCORE and OKP containers matching the operator RHDH deployment precedent.
Update docs: remove inherit note, add accuracy caveat for vanilla K8s
without OKP knowledge base.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@maysunfaisal

Copy link
Copy Markdown
Author

/build-images

@github-actions

Copy link
Copy Markdown
Contributor

PR images built successfully!

Images are available for testing:

  1. Operator: quay.io/rhdh-community/operator:2.0.0-pr-3370-ec0b6e3
  2. Bundle: quay.io/rhdh-community/operator-bundle:2.0.0-pr-3370-ec0b6e3
  3. Catalog: quay.io/rhdh-community/operator-catalog:2.0.0-pr-3370-ec0b6e3

Also available with PR number tag:

  • quay.io/rhdh-community/operator:2.0.0-pr-3370
  • quay.io/rhdh-community/operator-bundle:2.0.0-pr-3370
  • quay.io/rhdh-community/operator-catalog:2.0.0-pr-3370

Triggered by @maysunfaisal

@gazarenkov gazarenkov left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

To add the additional resources needed for your plugin please use Plugin dependencies feature instead.

You can see how it implemented in orchestrator flavour as well (it uses sonataflow dependencies).

@maysunfaisal

maysunfaisal commented Aug 27, 2026

Copy link
Copy Markdown
Author

To add the additional resources needed for your plugin please use Plugin dependencies feature instead.

You can see how it implemented in orchestrator flavour as well (it uses sonataflow dependencies).

Thanks @gazarenkov, looked into plugin-deps for OKP. Our manifests are already declarative YAML, not imperative Go:

config/profile/rhdh/default-config/flavours/lightspeed/
  okp-deployment.yaml
  okp-service.yaml
  okp-route.yaml

The Go wrappers (pkg/model/okp-*.go) only add metadata + platform gating. okp.go creates nothing and it just handles two things plugin-deps can't:

  1. OpenShift gating — OKP uses a Route, which doesn't exist on vanilla K8s. LCORE also crashes if rag/okp config is present but Solr is unreachable, so the operator must strip those config sections on non-OpenShift. Plugin-deps applies unconditionally.

  2. OKP_SERVICE_URL injection — LCORE needs to know where OKP lives. The URL is built at runtime from the CR name + cluster ingress domain (e.g. http://lightspeed-okp-<name>-<ns>.<domain>), then injected into the LCORE container env. Plugin-deps only creates standalone resources — it can't modify another container's env.

plugin-deps OKP needs
Platform gating No Skip all 3 resources on vanilla K8s
Env injection into another container No OKP_SERVICE_URL → LCORE
Config swap by platform No Strip rag/okp on K8s

Orchestrator's sonataflow deps are standalone resources, no cross-container wiring or platform gating needed. OKP needs both.

Open to discussion if there's a path to extend plugin-deps for these cases!

@openshift-ci

openshift-ci Bot commented Aug 27, 2026

Copy link
Copy Markdown

PR needs rebase.

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.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants