Configuration Reference

View as Markdown

Use this reference for settings owned by the DSX Agent Gateway chart, including Model Context Protocol (MCP) upstreams. The checked-in values.yaml contains the exhaustive setting list and current defaults. Settings under agentgateway and valkey can also pass through values to their pinned subcharts.

Gateway

The following settings control the gateway dataplane and its Service:

SettingDefault or RequirementPurpose and Constraints
runtimeClassName""Selects a Kubernetes RuntimeClass for gateway, rate-limit, and bridge Pods.
gateway.replicaCount3Sets the dataplane replica count.
gateway.resources{}Sets dataplane Pod resource requests and limits.
gateway.nodeSelector{}Selects nodes for dataplane Pods.
gateway.tolerations[]Adds tolerations to dataplane Pods.
gateway.service.typeClusterIPAccepts ClusterIP or NodePort. The chart does not support LoadBalancer.
gateway.service.nodePortnullIs required when the Service type is NodePort.
gateway.ipv6.enabledtrueEnables or disables IPv6 in the dataplane.

The dataplane listens for plaintext HTTP on port 80. An operator-owned edge provides external routing and Transport Layer Security termination.

Authentication and Tenant Access

auth.jwt.providers must contain at least one provider. Each provider name must be a lowercase DNS label with no more than 56 characters.

The following settings define one provider and the shared tenant policy:

SettingDefault or RequirementPurpose and Constraints
auth.jwt.providers.<name>.issuerRequiredIdentifies the token issuer and must be unique across providers.
auth.jwt.providers.<name>.audiencesAt least one valueContains the accepted token audiences.
auth.jwt.providers.<name>.jwksUrlRequiredSpecifies a complete HTTP or HTTPS JSON Web Key Set URL with a host and path.
auth.jwt.providers.<name>.tenantIdExpressionRequiredDerives a nonempty tenant ID from verified jwt.* claims. Expressions that read request headers are rejected.
auth.cel.operatorTenantIdRequiredIdentifies the tenant that can access every configured MCP target.
auth.cel.unprivilegedTenantMCPs[]Lists targets available to every other authenticated tenant.

The gateway accepts a token when at least one token audience matches the provider configuration. The selected MCP server receives the caller’s original bearer token and remains responsible for operation-level authorization.

MCP Upstreams

Each key under upstreams identifies a selector or static upstream. The chart reserves the bridge key for an enabled hub bridge.

The following settings define upstream discovery and transport:

SettingDefault or RequirementPurpose and Constraints
upstreams.<name>.modeselectorAccepts selector or static.
upstreams.<name>.namespaceRequired for selectorIdentifies the Service namespace.
upstreams.<name>.serviceLabelsRequired for selectorMatches labels on Services. Selected ports must set appProtocol: agentgateway.dev/mcp.
upstreams.<name>.addressRequired for staticSpecifies the complete HTTP or HTTPS endpoint. Credentials, query strings, and fragments are not accepted.
upstreams.<name>.protocolStreamableHTTPAccepts StreamableHTTP or SSE (Server-Sent Events) for a static upstream.
upstreamRequestTimeout5sSets the default upstream response-header deadline.
upstreams.<name>.requestTimeoutInherits upstreamRequestTimeoutOverrides the response-header deadline for one upstream.
agentgateway.discoveryNamespaceSelectorsNot set by this chartRestricts the namespaces watched for selector upstreams.

Streaming response bodies can continue after the response-header deadline. An HTTPS static address enables Transport Layer Security to that upstream.

Rate Limiting and Valkey

The gateway applies one request budget to each verified tenant ID. The following settings control limits and counter storage:

SettingDefault or RequirementPurpose and Constraints
rateLimit.tenantRequestsPerSecond30Sets the shared tenant request rate and must be at least 1.
rateLimit.tenantOverrides[]Assigns a different rate or unlimited access to a tenant. Duplicate tenant entries are invalid.
rateLimit.failureModeFailOpenAccepts FailOpen or FailClosed. FailOpen serves requests without limit enforcement when rate limiting fails.
rateLimit.replicaCount2Sets the rate-limit service replica count.
rateLimit.resources{}Sets rate-limit Pod resource requests and limits.
rateLimit.nodeSelector{}Selects nodes for rate-limit Pods.
rateLimit.tolerations[]Adds tolerations to rate-limit Pods.
valkey.enabledtrueEnables bundled counter storage. Disable it when using an external Valkey service.
valkey.external{}Identifies an external Valkey destination by Kubernetes Service coordinates or by host and port. Do not mix both forms.

Bridge

Enable the bridge only when the deployment must route MCP traffic across DSX Event Bus shards. The following settings define one bridge role:

SettingDefault or RequirementPurpose and Constraints
bridge.enabledfalseEnables the optional bridge workload.
bridge.rolehubAccepts hub or leaf when the bridge is enabled.
bridge.shardIdRequired for leafIdentifies one leaf shard and must be one valid NATS subject token.
bridge.nats.endpointRequired when enabledIdentifies the in-cluster NATS Service and port.
bridge.nats.auth.modenoauthAccepts noauth or oauth. OAuth requires an issuer, scope, and client credentials Secret reference.
bridge.nats.tls{}Configures NATS server-name and certificate-authority validation.
bridge.http.requestTimeout5mLimits the lifetime of a hub HTTP request.
bridge.http.writeTimeout30sLimits how long one hub response write can block.

Observability

The following settings enable chart-managed observability integrations:

SettingDefault or RequirementPurpose and Constraints
observability.metrics.enabledtrueControls chart-managed metric export and Prometheus Operator monitor resources.
observability.metrics.scrapeNamespaces[dsx-obs]Permits metrics traffic from selected namespaces through chart-owned network policies.
observability.metrics.interval30sSets the shared metrics scrape interval.
observability.metrics.scrapeTimeout10sSets the shared metrics scrape timeout.
observability.tracing.enabledtrueEnables tracing for the dataplane, rate-limit service, and bridge.
observability.tracing.instrumentationRefdsx-obs/default-instrumentationIdentifies the required OpenTelemetry Operator Instrumentation resource.
observability.tracing.sidecarRefdsx-obs/default-sidecarIdentifies the required OpenTelemetry sidecar Collector resource.
observability.tracing.exporter{}Overrides the injected endpoint and protocol when both values are set. Protocol accepts grpc or http/protobuf.
observability.tracing.sampleRatio"1.0"Sets the trace sampling ratio from 0.0 through 1.0.
observability.alerts.enabledfalseEnables chart-provided Prometheus alert rules.

The bundled Agent Gateway controller and Valkey do not have chart-supported tracing integrations. The Valkey subchart controls its own metrics exporter and monitor.

Use the deployment guide for an installation workflow. The operations guide explains how to monitor and troubleshoot the configured deployment. Refer to supported capabilities for the direct and bridge method profiles.