This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new ef459c21e82 fix(helm): add MCP HTTPRoute configuration (#42219)
ef459c21e82 is described below
commit ef459c21e8293f5a7669a05a9a1bd9fbbfb19d65
Author: David <[email protected]>
AuthorDate: Thu Jul 23 02:08:16 2026 +0200
fix(helm): add MCP HTTPRoute configuration (#42219)
---
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 6 ++-
helm/superset/templates/httproute.yaml | 12 +++++
helm/superset/tests/httproute_test.yaml | 92 +++++++++++++++++++++++++++++++++
helm/superset/values.yaml | 9 +++-
5 files changed, 116 insertions(+), 5 deletions(-)
diff --git a/helm/superset/Chart.yaml b/helm/superset/Chart.yaml
index eae4b2a793d..a9b5b768d27 100644
--- a/helm/superset/Chart.yaml
+++ b/helm/superset/Chart.yaml
@@ -29,7 +29,7 @@ maintainers:
- name: craig-rueda
email: [email protected]
url: https://github.com/craig-rueda
-version: 0.22.1 # See
[README](https://github.com/apache/superset/blob/master/helm/superset/README.md#versioning)
for version details.
+version: 0.22.2 # See
[README](https://github.com/apache/superset/blob/master/helm/superset/README.md#versioning)
for version details.
dependencies:
- name: postgresql
version: 16.7.27
diff --git a/helm/superset/README.md b/helm/superset/README.md
index d9f74c1ce33..7758277b6f9 100644
--- a/helm/superset/README.md
+++ b/helm/superset/README.md
@@ -23,7 +23,7 @@ NOTE: This file is generated by helm-docs:
https://github.com/norwoodj/helm-docs
# superset
-
+
Apache Superset is a modern, enterprise-ready business intelligence web
application
@@ -131,7 +131,7 @@ Alternatively, perform a fresh install. This is a one-time
migration; subsequent
| httproute.hostnames | list | `[]` | Hostnames that match against the HTTP
Host header (templated) |
| httproute.labels | object | `{}` | Additional labels to add to the HTTPRoute
|
| httproute.parentRefs | list | `[]` | Gateways this HTTPRoute attaches to |
-| httproute.rules | list |
`[{"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]` | Routing rules.
Each rule is backed by the Superset service. Set `weight` per rule to leave
room for traffic splitting (defaults to 1). When `supersetWebsockets.enabled`
is true, an extra rule routing `supersetWebsockets.ingress.path` to the `-ws`
service is appended automatically, mirroring the ingress behavior. |
+| httproute.rules | list |
`[{"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]` | Routing rules.
Each rule is backed by the Superset service. Set `weight` per rule to leave
room for traffic splitting (defaults to 1). When `supersetWebsockets.enabled`
is true, an extra rule routing `supersetWebsockets.ingress.path` to the `-ws`
service is appended automatically, mirroring the ingress behavior. When both
`supersetMcp.enabled` and `supersetMcp.httproute.enabled` are true, an extra r
[...]
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string |
`"apachesuperset.docker.scarf.sh/apache/superset"` | |
| image.tag | string | `nil` | |
@@ -266,6 +266,8 @@ Alternatively, perform a fresh install. This is a one-time
migration; subsequent
| supersetMcp.extraContainers | list | `[]` | Launch additional containers
into supersetMcp pods |
| supersetMcp.extraInitContainers | list | `[]` | Extra init containers
appended after supersetMcp initContainers |
| supersetMcp.forceReload | bool | `false` | If true, forces deployment to
reload on each upgrade |
+| supersetMcp.httproute.enabled | bool | `false` | If true, the MCP server
will be exposed via the HTTPRoute /mcp subpath |
+| supersetMcp.httproute.path | string | `"/mcp"` | |
| supersetMcp.ingress.enabled | bool | `false` | If true, the MCP server will
be exposed via the ingress /mcp subpath |
| supersetMcp.ingress.path | string | `"/mcp"` | |
| supersetMcp.ingress.pathType | string | `"Prefix"` | |
diff --git a/helm/superset/templates/httproute.yaml
b/helm/superset/templates/httproute.yaml
index 38cb5099ce5..2d9325bfdd6 100644
--- a/helm/superset/templates/httproute.yaml
+++ b/helm/superset/templates/httproute.yaml
@@ -80,4 +80,16 @@ spec:
type: PathPrefix
value: {{ .Values.supersetWebsockets.ingress.path }}
{{- end }}
+ {{- if and .Values.supersetMcp.enabled
.Values.supersetMcp.httproute.enabled }}
+ - backendRefs:
+ - group: ''
+ kind: Service
+ name: {{ $fullName }}-mcp
+ port: {{ .Values.supersetMcp.service.port }}
+ weight: 1
+ matches:
+ - path:
+ type: PathPrefix
+ value: {{ .Values.supersetMcp.httproute.path }}
+ {{- end }}
{{- end }}
diff --git a/helm/superset/tests/httproute_test.yaml
b/helm/superset/tests/httproute_test.yaml
new file mode 100644
index 00000000000..72f7a42e613
--- /dev/null
+++ b/helm/superset/tests/httproute_test.yaml
@@ -0,0 +1,92 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+suite: HTTPRoute
+templates:
+ - httproute.yaml
+tests:
+ - it: routes the general Superset path
+ set:
+ httproute.enabled: true
+ asserts:
+ - lengthEqual:
+ path: spec.rules
+ count: 1
+ - equal:
+ path: spec.rules[0].backendRefs[0].name
+ value: RELEASE-NAME-superset
+ - equal:
+ path: spec.rules[0].backendRefs[0].port
+ value: 8088
+ - equal:
+ path: spec.rules[0].matches[0].path.value
+ value: /
+
+ - it: routes the WebSocket path when WebSockets are enabled
+ set:
+ httproute.enabled: true
+ supersetWebsockets.enabled: true
+ asserts:
+ - lengthEqual:
+ path: spec.rules
+ count: 2
+ - equal:
+ path: spec.rules[1].backendRefs[0].name
+ value: RELEASE-NAME-superset-ws
+ - equal:
+ path: spec.rules[1].backendRefs[0].port
+ value: 8080
+ - equal:
+ path: spec.rules[1].matches[0].path.value
+ value: /ws
+
+ - it: does not route the WebSocket path when WebSockets are disabled
+ set:
+ httproute.enabled: true
+ supersetWebsockets.enabled: false
+ asserts:
+ - lengthEqual:
+ path: spec.rules
+ count: 1
+
+ - it: routes the MCP path when MCP HTTPRoute is enabled
+ set:
+ httproute.enabled: true
+ supersetMcp.enabled: true
+ supersetMcp.httproute.enabled: true
+ asserts:
+ - lengthEqual:
+ path: spec.rules
+ count: 2
+ - equal:
+ path: spec.rules[1].backendRefs[0].name
+ value: RELEASE-NAME-superset-mcp
+ - equal:
+ path: spec.rules[1].backendRefs[0].port
+ value: 5008
+ - equal:
+ path: spec.rules[1].matches[0].path.value
+ value: /mcp
+
+ - it: does not route MCP when MCP HTTPRoute is disabled
+ set:
+ httproute.enabled: true
+ supersetMcp.enabled: true
+ supersetMcp.httproute.enabled: false
+ asserts:
+ - lengthEqual:
+ path: spec.rules
+ count: 1
diff --git a/helm/superset/values.yaml b/helm/superset/values.yaml
index aa7c199622e..e33ff652fb7 100644
--- a/helm/superset/values.yaml
+++ b/helm/superset/values.yaml
@@ -277,7 +277,9 @@ httproute:
# per rule to leave room for traffic splitting (defaults to 1). When
# `supersetWebsockets.enabled` is true, an extra rule routing
# `supersetWebsockets.ingress.path` to the `-ws` service is appended
- # automatically, mirroring the ingress behavior.
+ # automatically, mirroring the ingress behavior. When both
`supersetMcp.enabled` and
+ # `supersetMcp.httproute.enabled` are true, an extra rule routing
+ # `supersetMcp.httproute.path` to the `-mcp` service is also appended.
rules:
- matches:
- path:
@@ -987,7 +989,6 @@ supersetWebsockets:
# -- Set priorityClassName for supersetWebsockets pods
priorityClassName: ~
-
supersetMcp:
# -- Enables the Superset MCP Server. To expose it via the shared ingress at
/mcp,
# also set supersetMcp.ingress.enabled=true.
@@ -1015,6 +1016,10 @@ supersetMcp:
enabled: false
path: /mcp
pathType: Prefix
+ httproute:
+ # -- If true, the MCP server will be exposed via the HTTPRoute /mcp subpath
+ enabled: false
+ path: /mcp
service:
type: ClusterIP
annotations: {}