feat(helm): make gatewayClassName configurable in control and observability planes - #3915
Conversation
… plane Helm charts Signed-off-by: kavix <[email protected]>
… plane helm schemas Signed-off-by: kavix <[email protected]>
7c29af3 to
02651f7
Compare
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
📝 WalkthroughFile Changes by Folder
Total scope: 6 files changed, ~27 lines added/6 lines modified API/CRD Surface ChangesNone. This PR is purely a Helm values/template configuration change with zero impact to Kubernetes CRD or API surface. The Gateway resource itself (v1 from gateway.networking.k8s.io) is unchanged; only the templated field value source is externalized. Compatibility risk: Low — fully backward compatible as all changes default to TestsNo tests added. The PR modifies Helm templates and values files but introduces no unit tests, integration tests, or Helm test suites. Critical paths lacking test coverage:
Risk HotspotsMinimal risk profile:
WalkthroughBoth the ChangesConfigurable gatewayClassName across control and observability planes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
The control-plane and observability-plane charts rendered kgateway-specific TrafficPolicy resources (gateway.kgateway.dev/v1alpha1) unconditionally, gated only on the component and gateway being enabled. Since gateway.gatewayClassName is templatable (control plane and observability plane via openchoreo#3915; the data plane already supported it), a non-kgateway GatewayClass (e.g. Istio, Cilium) would still get these kgateway CRDs — inert at best, and a failed helm install/upgrade when the kgateway CRDs are not installed. Gate each TrafficPolicy template on gatewayClassName == "kgateway", using the same default fallback as the gateway.yaml templates. Fixes openchoreo#4068 Signed-off-by: Lahiru De Silva <[email protected]>
Gate all kgateway-specific TrafficPolicy resources in the control-plane and observability-plane Helm charts on gateway.gatewayClassName being "kgateway". This prevents installation and upgrade failures on non-kgateway configurations where KGateway CRDs are not present. Closes #4068 Refs #3915 Signed-off-by: kavix <[email protected]>
Add a default HTTPListenerPolicy targeting the default-gateway in the data-plane Helm chart. Enable it by default, gated on gatewayClassName being 'kgateway'. This allows workloads with Websocket endpoints to function correctly out of the box without requiring manual cluster-wide operations. Also, remove the manual HTTPListenerPolicy creation steps from the doclet and echo-websocket-service sample READMEs. Refs openchoreo#4068, openchoreo#3915 Signed-off-by: kavix <[email protected]>
* feat(helm): enable WebSocket upgrades by default on KGateway Add a default HTTPListenerPolicy targeting the default-gateway in the data-plane Helm chart. Enable it by default, gated on gatewayClassName being 'kgateway'. This allows workloads with Websocket endpoints to function correctly out of the box without requiring manual cluster-wide operations. Also, remove the manual HTTPListenerPolicy creation steps from the doclet and echo-websocket-service sample READMEs. Refs #4068, #3915 Signed-off-by: kavix <[email protected]> * feat(helm): scope HTTPListenerPolicy name per deployment Signed-off-by: kavix <[email protected]> --------- Signed-off-by: kavix <[email protected]>
Purpose
Currently, only the
openchoreo-data-planeHelm chart exposes a templatedgatewayClassName, allowing users to swap the defaultkgatewayimplementation. Theopenchoreo-control-planeandopenchoreo-observability-planecharts had hardcodedgatewayClassName: kgateway.This PR makes gateways modular across the whole platform by supporting a templated
gatewayClassNamein the control plane and observability plane, enabling users to run OpenChoreo on top of a service mesh like Istio or with a CNI like Cilium.Approach
templates/gateway/gateway.yamlin bothopenchoreo-control-planeandopenchoreo-observability-planeto template thegatewayClassNamefield with a fallback to"kgateway".gatewayClassNameproperty tovalues.yamlandvalues.schema.jsonfor both planes.Related Issues
Fixes #3700
Checklist
backport/<release-branch>label if this should be backported (e.g.,backport/release-v1.0)Remarks
N/A