Skip to content

Commit c52a373

Browse files
committed
chore: manifests
1 parent e181090 commit c52a373

2 files changed

Lines changed: 116 additions & 0 deletions

File tree

deploy/charts/operator-crds/templates/toolhive.stacklok.dev_mcpremoteproxies.yaml

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,63 @@ spec:
438438
- ClientIP
439439
- None
440440
type: string
441+
sessionStorage:
442+
description: |-
443+
SessionStorage configures session storage for stateful horizontal scaling.
444+
When nil, no session storage is configured and the proxy falls back to
445+
pod-local in-memory session state — incompatible with multi-replica
446+
deployments behind load balancers that don't preserve client-IP affinity
447+
(e.g. AWS ALB across multiple AZs).
448+
449+
The transparent proxy validates `Mcp-Session-Id` against this store on
450+
every non-initialize request (see pkg/transport/proxy/transparent/
451+
transparent_proxy.go) and rewrites client-facing session IDs to backend
452+
session IDs using session metadata. Both lookups require shared state
453+
across replicas.
454+
455+
Mirrors MCPServer.spec.sessionStorage and VirtualMCPServer.spec.sessionStorage.
456+
properties:
457+
address:
458+
description: Address is the Redis server address (required when
459+
provider is redis)
460+
minLength: 1
461+
type: string
462+
db:
463+
default: 0
464+
description: DB is the Redis database number
465+
format: int32
466+
minimum: 0
467+
type: integer
468+
keyPrefix:
469+
description: KeyPrefix is an optional prefix for all Redis keys
470+
used by ToolHive
471+
type: string
472+
passwordRef:
473+
description: PasswordRef is a reference to a Secret key containing
474+
the Redis password
475+
properties:
476+
key:
477+
description: Key is the key within the secret
478+
type: string
479+
name:
480+
description: Name is the name of the secret
481+
type: string
482+
required:
483+
- key
484+
- name
485+
type: object
486+
provider:
487+
description: Provider is the session storage backend type
488+
enum:
489+
- memory
490+
- redis
491+
type: string
492+
required:
493+
- provider
494+
type: object
495+
x-kubernetes-validations:
496+
- message: address is required
497+
rule: 'self.provider == ''redis'' ? has(self.address) : true'
441498
telemetryConfigRef:
442499
description: |-
443500
TelemetryConfigRef references an MCPTelemetryConfig resource for shared telemetry configuration.
@@ -1021,6 +1078,63 @@ spec:
10211078
- ClientIP
10221079
- None
10231080
type: string
1081+
sessionStorage:
1082+
description: |-
1083+
SessionStorage configures session storage for stateful horizontal scaling.
1084+
When nil, no session storage is configured and the proxy falls back to
1085+
pod-local in-memory session state — incompatible with multi-replica
1086+
deployments behind load balancers that don't preserve client-IP affinity
1087+
(e.g. AWS ALB across multiple AZs).
1088+
1089+
The transparent proxy validates `Mcp-Session-Id` against this store on
1090+
every non-initialize request (see pkg/transport/proxy/transparent/
1091+
transparent_proxy.go) and rewrites client-facing session IDs to backend
1092+
session IDs using session metadata. Both lookups require shared state
1093+
across replicas.
1094+
1095+
Mirrors MCPServer.spec.sessionStorage and VirtualMCPServer.spec.sessionStorage.
1096+
properties:
1097+
address:
1098+
description: Address is the Redis server address (required when
1099+
provider is redis)
1100+
minLength: 1
1101+
type: string
1102+
db:
1103+
default: 0
1104+
description: DB is the Redis database number
1105+
format: int32
1106+
minimum: 0
1107+
type: integer
1108+
keyPrefix:
1109+
description: KeyPrefix is an optional prefix for all Redis keys
1110+
used by ToolHive
1111+
type: string
1112+
passwordRef:
1113+
description: PasswordRef is a reference to a Secret key containing
1114+
the Redis password
1115+
properties:
1116+
key:
1117+
description: Key is the key within the secret
1118+
type: string
1119+
name:
1120+
description: Name is the name of the secret
1121+
type: string
1122+
required:
1123+
- key
1124+
- name
1125+
type: object
1126+
provider:
1127+
description: Provider is the session storage backend type
1128+
enum:
1129+
- memory
1130+
- redis
1131+
type: string
1132+
required:
1133+
- provider
1134+
type: object
1135+
x-kubernetes-validations:
1136+
- message: address is required
1137+
rule: 'self.provider == ''redis'' ? has(self.address) : true'
10241138
telemetryConfigRef:
10251139
description: |-
10261140
TelemetryConfigRef references an MCPTelemetryConfig resource for shared telemetry configuration.

docs/operator/crd-api.md

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)