Conversation
Add support for Kubernetes Gateway API HTTPRoutes as an alternative to Ingress resources. When global.gatewayApi.enabled is true, HTTPRoutes are created instead of Ingress resources (mutually exclusive). Features: - Global configuration for gateway name and namespace reference - HTTPRoute templates for agent-ontology, rag-redis, and rag-webui - Mutual exclusion logic between Ingress and HTTPRoute - Support for cross-namespace gateway references - Disabled by default for backwards compatibility - PathType mapping from Ingress (Prefix) to Gateway API (PathPrefix) Also fixes bug in rag-webui ingress template where hostname wasn't extracted correctly from values structure. Signed-off-by: Luqmaan <luqmahme@cisco.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
📦 Pre-release Helm Charts PublishedRegistry: rag-stackVersion: helm upgrade --install rag oci://ghcr.io/cnoe-io/pre-release-helm-charts/rag-stack --version 0.0.7-httproutes-1ai-platform-engineeringVersion: helm upgrade --install ai-platform oci://ghcr.io/cnoe-io/pre-release-helm-charts/ai-platform-engineering --version 0.5.15-httproutes-1
|
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f1aabc977e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| rules: | ||
| {{- range .Values.ingress.hosts }} | ||
| {{- range .paths }} | ||
| - matches: | ||
| - path: |
There was a problem hiding this comment.
Preserve host-specific paths when generating HTTPRoutes
HTTPRoute hostnames are defined at the route level and apply to all rules. This template builds rules by iterating each host’s .paths (lines 28–32) after populating the hostnames list from all hosts, so if .Values.ingress.hosts contains multiple hosts with different path lists, every path becomes valid for every hostname. That changes routing behavior versus the Ingress template and can send requests for host B to paths intended only for host A. Consider creating separate HTTPRoute objects per host or grouping rules by hostname to keep paths scoped.
Useful? React with 👍 / 👎.
| rules: | ||
| {{- range .Values.ingress.hosts }} | ||
| {{- range .paths }} | ||
| - matches: | ||
| - path: |
There was a problem hiding this comment.
Preserve host-specific paths when generating HTTPRoutes
As written, rules are generated by iterating each host’s .paths (lines 28–32), but hostnames are specified at the route level and apply to all rules. If .Values.ingress.hosts contains multiple hosts with different paths, those paths become shared across all hostnames, changing behavior compared with the Ingress template. This can route host-specific paths to the wrong hostname. Consider emitting one HTTPRoute per host or otherwise scoping rules so host/path associations are preserved.
Useful? React with 👍 / 👎.
…support
This commit addresses two limitations in the Gateway API HTTPRoute implementation:
1. Per-service control for HTTPRoute rendering:
- Added httproute.shouldRender helper to rag-stack subcharts (agent-ontology, rag-redis, rag-webui)
- HTTPRoute now respects BOTH global.gatewayApi.enabled AND ingress.enabled flags
- Users can now disable HTTPRoute for specific services while keeping Gateway API enabled globally
2. Gateway API support for main agent charts:
- Added complete HTTPRoute support to supervisor-agent, agent (generic), and backstage-plugin-agent-forge
- Implemented 6 new helper templates per chart:
* gatewayApi.enabled - Check global Gateway API flag
* gatewayApi.gatewayName - Get gateway name from global config
* gatewayApi.gatewayNamespace - Get gateway namespace (defaults to release namespace)
* gatewayApi.pathType - Map Ingress pathType to Gateway API pathType
* httproute.shouldRender - Render when BOTH ingress.enabled AND gatewayApi enabled
* ingress.shouldRender - Render when ingress.enabled AND gatewayApi NOT enabled
- Created HTTPRoute templates for all 3 main agent charts
- Updated ingress templates to use new shouldRender helper for mutual exclusivity
Testing:
- Verified mutual exclusivity (Ingress XOR HTTPRoute)
- Verified per-service HTTPRoute disable functionality
- Verified pathType mapping (Prefix → PathPrefix)
- Verified cross-namespace gateway references
- All helm template tests pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Luqmaan <luqmahme@cisco.com>
📦 Pre-release Helm Charts PublishedRegistry: rag-stackVersion: helm upgrade --install rag oci://ghcr.io/cnoe-io/pre-release-helm-charts/rag-stack --version 0.0.7-httproutes-2ai-platform-engineeringVersion: helm upgrade --install ai-platform oci://ghcr.io/cnoe-io/pre-release-helm-charts/ai-platform-engineering --version 0.5.15-httproutes-2
|
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
Resolved version conflicts: - Adopted automated versioning scheme (0.2.8) from main - Removed Chart.lock files per main branch changes - Retained HTTPRoute feature changes from prebuild/httproutes Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
18a84df to
4dc48fb
Compare
…ervisor-agent rag-stack agent-ontology rag-redis rag-webui
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
📊 Test Coverage ReportMain Tests Coverage
📁 Coverage Artifacts
|
69b3b4d to
54ba9a9
Compare
Add support for Kubernetes Gateway API HTTPRoutes as an alternative to Ingress resources. When global.gatewayApi.enabled is true, HTTPRoutes are created instead of Ingress resources (mutually exclusive).
Features:
Also fixes bug in rag-webui ingress template where hostname wasn't extracted correctly from values structure.
🤖 Generated with Claude Code
Please ensure commits conform to the Commit Guideline
Type of Change
Pre-release Helm Charts (Optional)
For chart changes, you can test pre-release versions before merging:
pre/for automatic pre-release buildshelm-prereleaselabelghcr.io/cnoe-io/pre-release-helm-chartsChecklist