@@ -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.
0 commit comments