Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
79ee291
added HTTPRoute to all charts with ingresses via Copilot
DanielRaapDev Feb 13, 2026
996e8b6
All chart versions have been incremented following semantic versionin…
DanielRaapDev Feb 13, 2026
5b96abd
update test-values.yamls with httproute values
DanielRaapDev Feb 13, 2026
425a012
sophora-server: add grpc-httproute
DanielRaapDev Feb 13, 2026
a95073b
[sophora-webclient] use service.port of values for ingress and HttpRoute
DanielRaapDev Feb 13, 2026
4cf5855
updated HTTPROUTE_CHANGES to reflect manual addition for grpcHttproute
DanielRaapDev Feb 13, 2026
b7343a6
rename values to `httpRoute`
DanielRaapDev Feb 13, 2026
d025b79
camel-case name for `extraHttpRoutes` in sophora-image-access-service
DanielRaapDev Feb 13, 2026
30c3048
rename values to `httpRoute` in HTTPROUTE_CHANGES.md
DanielRaapDev Feb 13, 2026
9f61090
comment parameters like recommended by Helm: "begin with the name of …
DanielRaapDev Feb 13, 2026
3c5fa3b
Merge branch 'main' into SALI-7187_add_gateway_route
DanielRaapDev Feb 13, 2026
07b773d
document comment style in values.yaml
DanielRaapDev Feb 13, 2026
0e34e23
Merge branch 'main' into SALI-7187_add_gateway_route
DanielRaapDev Feb 13, 2026
b5c0d2c
move decisions/0002 to toplevel folder
DanielRaapDev Feb 13, 2026
288f764
use hostname "my-service.example.com" for example in comments
DanielRaapDev Feb 13, 2026
5d1e8a8
make configuration more flexible with `matches` and `filters` blocks
DanielRaapDev Feb 13, 2026
2be4c9e
merged sophora-importer httpRoute.rules with new settings for matches…
DanielRaapDev Feb 13, 2026
8df2fdd
Apply suggestions from code review of Copilot
DanielRaapDev Feb 13, 2026
5db495e
fix typo
DanielRaapDev Feb 13, 2026
3381836
less example for httpRoute.rules in sophora-importer chart
DanielRaapDev Feb 13, 2026
bf40aff
also provide a GRPCRoute in sophora-server
DanielRaapDev Feb 13, 2026
4958c09
document new httpRoute properties of sophora-server charts
DanielRaapDev Feb 13, 2026
fb685a7
replaced remaining 'pathMatchType', extended test-values for sophora-…
DanielRaapDev Feb 17, 2026
23825da
generated helm unittests for sophora-contentapi
DanielRaapDev Feb 17, 2026
8a81ee1
Revert "generated helm unittests for sophora-contentapi"
DanielRaapDev Feb 17, 2026
ef26d18
add helm unittest for httproute in sophora-contentapi
DanielRaapDev Feb 17, 2026
1b8bf04
add httproute tests to all relevant charts, fixed problems in templates
DanielRaapDev Feb 17, 2026
bcaae13
fixed test of sophora-image-ai
DanielRaapDev Feb 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions HTTPROUTE_CHANGES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# HTTPRoute Support Added to Helm Charts

## Summary

All Helm charts in the `helm-charts` repository that contain Kubernetes Ingress resources have been extended to also provide optional HTTPRoute resources for the Gateway API. Chart versions have been incremented to new minor versions to reflect these changes.

## Charts Updated

The following 18 charts now support HTTPRoute (Gateway API) in addition to Ingress:

1. **o-neko** - v2.0.1 → v2.1.0
2. **o-neko-catnip** - v1.3.4 → v1.4.0
3. **sophora-admin-dashboard** - v1.5.0 → v1.6.0
4. **sophora-ai** - v2.0.4 → v2.1.0
5. **sophora-contentapi** - v1.0.2 → v1.1.0
6. **sophora-image-access-service** - v1.4.0 → v1.5.0
7. **sophora-image-ai** - v2.1.3 → v2.2.0
8. **sophora-importer** - v2.4.1 → v2.5.0 (HTTPRoute support already existed, updated for consistency)
9. **sophora-indexing-service** - v1.5.0 → v1.6.0
10. **sophora-linkchecker** - v0.1.4 → v0.2.0
11. **sophora-media-finder** - v0.2.6 → v0.3.0
12. **sophora-metadata-supplier** - v1.3.6 → v1.4.0
13. **sophora-schema-docs** - v2.1.4 → v2.2.0
14. **sophora-seo-check** - v1.0.3 → v1.1.0
15. **sophora-server** - v3.1.2 → v3.2.0
16. **sophora-ugc** - v2.0.15 → v2.1.0
17. **sophora-webclient** - v1.4.5 → v1.5.0
18. **sophora-youtube-connector** - v1.2.4 → v1.3.0

## Implementation Details

### HTTPRoute Templates

Each chart now includes a `templates/httproute.yaml` file that:
- Is conditionally created based on `httpRoute.enabled` value
- Uses the Gateway API v1 specification
- Supports parentRefs for Gateway attachment
- Supports hostname filtering
- Supports path matching (PathPrefix, Exact, or RegularExpression)
- Includes the same labels and annotations pattern as Ingress resources
- Routes traffic to the same backend service as the Ingress

### Values.yaml Configuration

Each chart's `values.yaml` file now includes an `httpRoute` section with the following configuration options:

```yaml
httpRoute:
enabled: false # Whether to create HTTPRoute (disabled by default)
parentRefs: [] # Gateway references
hostnames: [] # Hostnames for routing
matches: [] # array of HTTPRouteMatch objects for matching HTTP requests
filters: [] # array of HTTPRouteFilter objects for modifying requests/responses
annotations: {} # Additional annotations
```

### Special Cases

1. **sophora-image-access-service**: Supports multiple HTTPRoutes via `extraHttpRoutes` array, similar to its `extraIngress` support.

2. **sophora-importer**: Already had HTTPRoute support with a more advanced configuration including custom rules and filters.

3. **sophora-server**: Supports additional HTTPRoute for gRPC service via `grpcHttproute`, similar to its `grpcIngress` support.

## Usage Example

To enable HTTPRoute for a chart deployment:

```yaml
httpRoute:
enabled: true
parentRefs:
- name: my-gateway
namespace: gateway-system
hostnames:
- "myapp.example.com"
pathMatchType: PathPrefix
pathValue: /
annotations:
custom.annotation: "value"
```

## Migration Path

Users can:
1. Continue using Ingress resources (default behavior)
2. Enable HTTPRoute alongside Ingress for testing
3. Migrate to HTTPRoute exclusively by disabling Ingress and enabling HTTPRoute

All changes are backward compatible - existing deployments will continue to work without modification.

## Gateway API Compatibility

The HTTPRoute resources use the `gateway.networking.k8s.io/v1` API version, which is the stable Gateway API specification.
4 changes: 2 additions & 2 deletions charts/o-neko-catnip/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ apiVersion: v2
name: o-neko-catnip
description: A Helm chart for the O-Neko URL trigger
type: application
version: 1.3.4
version: 1.4.0
annotations:
artifacthub.io/changes: |
- kind: added
description: "added Artifacthub changelog annotation"
description: "Added HTTPRoute support for Gateway API"

appVersion: "1.3.2"
sources:
Expand Down
35 changes: 35 additions & 0 deletions charts/o-neko-catnip/templates/httproute.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{{- if .Values.httpRoute.enabled -}}
{{- $fullName := include "o-neko-catnip.fullname" . -}}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
labels: {{- include "o-neko-catnip.labels" . | nindent 4 }}
name: {{ $fullName }}
{{- with .Values.httpRoute.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.httpRoute.parentRefs }}
parentRefs:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- if .Values.httpRoute.hostnames }}
hostnames:
{{- range .Values.httpRoute.hostnames }}
- {{ required "A hostname for the HTTPRoute must be provided in .Values.httpRoute.hostnames" . | quote }}
{{- end }}
{{- end }}
rules:
- backendRefs:
- name: {{ $fullName }}
port: 8080
{{- with .Values.httpRoute.matches }}
matches:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.httpRoute.filters }}
filters:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
61 changes: 61 additions & 0 deletions charts/o-neko-catnip/tests/httproute_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
suite: test httproute
templates:
- httproute.yaml
chart:
version: 0.9.8
appVersion: 1.2.3
tests:
- it: should not create httproute by default
asserts:
- hasDocuments:
count: 0

- it: should create httproute with values
release:
name: values-test-release
values:
- ./values/httproute.yaml
asserts:
- hasDocuments:
count: 1
- containsDocument:
kind: HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
name: values-test-release-o-neko-catnip
- equal:
path: metadata
value:
name: values-test-release-o-neko-catnip
labels:
helm.sh/chart: o-neko-catnip-0.9.8
app.kubernetes.io/name: o-neko-catnip
app.kubernetes.io/version: 1.2.3
app.kubernetes.io/instance: values-test-release
app.kubernetes.io/managed-by: Helm
annotations:
example.com/test: "simple"
example.com/text: some text value
- equal:
path: spec
value:
parentRefs:
- name: my-gateway
namespace: gateway-namespace
hostnames:
- my-service.example.com
- other.example.com
rules:
- backendRefs:
- name: values-test-release-o-neko-catnip
port: 8080
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Custom-Header
value: custom-value
matches:
- path:
type: PathPrefix
value: /
- notFailedTemplate: {}
21 changes: 21 additions & 0 deletions charts/o-neko-catnip/tests/values/httproute.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
httpRoute:
enabled: true
parentRefs:
- name: my-gateway
namespace: gateway-namespace
hostnames:
- my-service.example.com
- other.example.com
matches:
- path:
type: PathPrefix
value: /
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Custom-Header
value: custom-value
annotations:
example.com/test: simple
example.com/text: some text value
Loading