Skip to content
Clone

refactor(deploy): point the sandbox fanout at the runtime host

sandbox-agent publishes its fanout on sandbox-agent.gitdata.ai (cross-origin, guarded by
server.corsOrigins), so the ExternalName service, stripPrefix middleware and IngressRoute
in this chart are no longer needed.
ZhenYi committed
parent cf92ac8 commit 8da6cf8 Browse files

3 files changed

+5 −89

File tree 3
Deleted chart/templates/sandbox-fanout.yaml
@@ -1,71 +0,0 @@
1{{- /*
2 浏览器直连的 sandbox 运行事件流(SSE)。
3
4 web 端拿着短时令牌直接连 `${fanout_endpoint}/v1/sessions/...`,所以这条路由必须
5 对公网可用。sandbox-agent-server 在 agent-sandbox-system 命名空间,而 traefik 的
6 kubernetesCRD provider 没有开 allowCrossNamespace,所以这里用 ExternalName Service
7 把跨命名空间的 service 映射成同命名空间的名字,再由 IngressRoute 去掉 /sandbox
8 前缀转发(与 web 开发期的 vite 代理行为一致)。
9
10 仅在 ingress.controller=traefik 时可用。
11*/}}
12{{- if and .Values.sandboxFanout.enabled .Values.sandboxFanout.host }}
13{{- $fullName := include "gitdata.fullname" . }}
14{{- $prefix := default "/sandbox" .Values.sandboxFanout.pathPrefix }}
15{{- $name := printf "%s-sandbox-fanout" $fullName }}
16{{- $tlsSecret := default (printf "%s-tls" $fullName) .Values.ingress.tls.secretName }}
17apiVersion: v1
18kind: Service
19metadata:
20 name: {{ $name }}
21 labels:
22 {{- include "gitdata.labels" . | nindent 4 }}
23 app.kubernetes.io/component: sandbox-fanout
24spec:
25 type: ExternalName
26 externalName: {{ printf "%s.%s.svc.cluster.local" .Values.sandboxFanout.service .Values.sandboxFanout.namespace | quote }}
27 ports:
28 - name: http
29 port: {{ .Values.sandboxFanout.port }}
30 targetPort: {{ .Values.sandboxFanout.port }}
31 protocol: TCP
32---
33apiVersion: traefik.io/v1alpha1
34kind: Middleware
35metadata:
36 name: {{ $name }}
37 labels:
38 {{- include "gitdata.labels" . | nindent 4 }}
39 app.kubernetes.io/component: sandbox-fanout
40spec:
41 stripPrefix:
42 prefixes:
43 - {{ $prefix | quote }}
44---
45apiVersion: traefik.io/v1alpha1
46kind: IngressRoute
47metadata:
48 name: {{ $name }}
49 labels:
50 {{- include "gitdata.labels" . | nindent 4 }}
51 app.kubernetes.io/component: sandbox-fanout
52spec:
53 entryPoints:
54 - web
55 - websecure
56 routes:
57 # 优先级高于主 IngressRoute/Ingress 的 "/",避免被 apihost 抢走
58 - kind: Rule
59 match: Host(`{{ .Values.sandboxFanout.host }}`) && PathPrefix(`{{ $prefix }}`)
60 priority: 1200
61 middlewares:
62 - name: {{ $name }}
63 services:
64 - name: {{ $name }}
65 port: {{ .Values.sandboxFanout.port }}
66 passHostHeader: true
67 {{- if .Values.ingress.tls.enabled }}
68 tls:
69 secretName: {{ $tlsSecret }}
70 {{- end }}
71{{- end }}
No newline at end of file
Modified chart/values.yaml View chart/values.yaml
@@ -174,16 +174,8 @@
174174 limits: { memory: 1Gi }
175175 extraEnv: []
176176
177# 浏览器直连的 sandbox 运行事件流(SSE)。chart 在 <host><pathPrefix> 上建
178# IngressRoute + stripPrefix 中间件,并用 ExternalName Service 跨命名空间指向
179# sandbox-agent-server(traefik 专用;controller=nginx 时不要开启)。
180sandboxFanout:
181 enabled: false
182 host: ""
183 pathPrefix: /sandbox
184 namespace: agent-sandbox-system
185 service: sandbox-agent-server
186 port: 8090
177# sandbox 运行事件流(SSE)由 sandbox-agent 自己在 sandbox-agent.gitdata.ai 暴露,
178# 平台侧只配置 APP_SANDBOX_RPC__FANOUT_ENDPOINT,因此这里不再有 chart 资源。
187179
188180mails:
189181 enabled: true
Modified deploy/values/prod.yaml View deploy/values/prod.yaml
@@ -66,9 +66,9 @@
6666 # 一致,否则 gRPC 返回 Unauthenticated。
6767 APP_SANDBOX_RPC__ENABLED: "true"
6868 APP_SANDBOX_RPC__ENDPOINT: "http://sandbox-agent-server.agent-sandbox-system.svc.cluster.local:8091"
69 # 浏览器直连的事件流网关:<host>/sandbox 由 chart 的 IngressRoute 去掉前缀转发到
70 # 同一 service 的 8090 端口;留空则前端回退轮询(streamsAvailable=false)。
71 APP_SANDBOX_RPC__FANOUT_ENDPOINT: "https://gitdata.ai/sandbox"
69 # 浏览器直连的事件流网关:sandbox-agent 自己暴露的 fanout 域名(跨源,靠
70 # server.corsOrigins 放行 https://gitdata.ai);留空则前端回退轮询(streamsAvailable=false)。
71 APP_SANDBOX_RPC__FANOUT_ENDPOINT: "https://sandbox-agent.gitdata.ai"
7272 APP_SANDBOX_RPC__REQUEST_TIMEOUT_SECS: "30"
7373 APP_SANDBOX_RPC__STREAM_TOKEN_TTL_SECS: "600"
7474 RUST_LOG: "info,session::session_store=error"
@@ -220,11 +220,6 @@
220220searchhost:
221221 enabled: true
222222 replicaCount: 1
223
224# 浏览器直连的 sandbox 事件流(SSE):gitdata.ai/sandbox → sandbox-agent-server:8090。
225sandboxFanout:
226 enabled: true
227 host: gitdata.ai
228223
229224mails:
230225 enabled: true