Visitar URL original
feat: Add dualStack server option to the Feast operator by dbbvitor · Pull Request #6887 · feast-dev/feast · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .secrets.baseline

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/feature-servers/mcp-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ See [sdk/python/feast/mcp/docker/README.md](https://github.com/feast-dev/feast/b

## Deploying with the Feast Operator

Setting `spec.services.mcpServer` adds a dedicated `feast mcp` container to the FeatureStore deployment, exposed on its own Service on port 8100. The operator sets `--host` and `--port` so that they match the generated Service. Every other setting comes from a `feast_mcp.yaml` supplied in a ConfigMap, which the operator mounts read-only at `/etc/feast/mcp`.
Setting `spec.services.mcpServer` adds a dedicated `feast mcp` container to the FeatureStore deployment, exposed on its own Service on port 8100. The operator sets `--host` and `--port` so that they match the generated Service. `--host` is `0.0.0.0` unless `spec.services.mcpServer.dualStack` is `true`, which sets it to `::` and needs an image with `feast mcp --host ::` support (#6977). Every other setting comes from a `feast_mcp.yaml` supplied in a ConfigMap, which the operator mounts read-only at `/etc/feast/mcp`.

The ConfigMap must set `server.transport` to `http`, `streamable-http` or `sse`, because the default `stdio` cannot serve the Service. Without a ConfigMap, the operator passes `--transport http`, unless `FEAST_MCP_TRANSPORT` is set in the container `env`.

Expand Down
5 changes: 5 additions & 0 deletions infra/feast-operator/api/v1/featurestore_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -935,6 +935,11 @@ type ServerConfigs struct {
LogLevel *string `json:"logLevel,omitempty"`
// Metrics exposes Prometheus-compatible metrics for the Feast server when enabled.
Metrics *bool `json:"metrics,omitempty"`
// DualStack binds the server to the IPv6 wildcard address instead of 0.0.0.0,
// which serves both IPv6 and IPv4 clients on Linux. Enable it on IPv6-only or dual-stack clusters.
// Unset or false binds 0.0.0.0 (IPv4 only) for every server that takes a host flag, including the registry's REST server.
// +optional
DualStack *bool `json:"dualStack,omitempty"`
// VolumeMounts defines the list of volumes that should be mounted into the feast container.
// This allows attaching persistent storage, config files, secrets, or other resources
// required by the Feast components. Ensure that each volume mount has a corresponding
Expand Down
5 changes: 5 additions & 0 deletions infra/feast-operator/api/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ metadata:
}
]
capabilities: Basic Install
createdAt: "2026-08-21T03:30:58Z"
createdAt: "2026-09-25T01:00:43Z"
operators.operatorframework.io/builder: operator-sdk-v1.41.0
operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
name: feast-operator.v0.66.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1012,6 +1012,10 @@ spec:
description: Server configuration (image, resources, env,
TLS, etc.).
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -2290,6 +2294,10 @@ spec:
- message: configMapRef.name is required
rule: has(self.configMapRef.name) && size(self.configMapRef.name)
> 0
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable present
Expand Down Expand Up @@ -2827,6 +2835,10 @@ spec:
server:
description: Creates a remote offline server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -3379,6 +3391,10 @@ spec:
server:
description: Creates a feature server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -4040,6 +4056,10 @@ spec:
server:
description: Creates a registry server container
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -5409,6 +5429,10 @@ spec:
ui:
description: Creates a UI server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable present
Expand Down Expand Up @@ -8309,6 +8333,10 @@ spec:
description: Server configuration (image, resources,
env, TLS, etc.).
properties:
dualStack:
description: DualStack binds the server to the
IPv6 wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment
Expand Down Expand Up @@ -9601,6 +9629,10 @@ spec:
- message: configMapRef.name is required
rule: has(self.configMapRef.name) && size(self.configMapRef.name)
> 0
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -10144,6 +10176,10 @@ spec:
server:
description: Creates a remote offline server container
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -10704,6 +10740,10 @@ spec:
server:
description: Creates a feature server container
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -11379,6 +11419,10 @@ spec:
server:
description: Creates a registry server container
properties:
dualStack:
description: DualStack binds the server to the
IPv6 wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment
Expand Down Expand Up @@ -12766,6 +12810,10 @@ spec:
ui:
description: Creates a UI server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1012,6 +1012,10 @@ spec:
description: Server configuration (image, resources, env,
TLS, etc.).
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -2290,6 +2294,10 @@ spec:
- message: configMapRef.name is required
rule: has(self.configMapRef.name) && size(self.configMapRef.name)
> 0
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable present
Expand Down Expand Up @@ -2827,6 +2835,10 @@ spec:
server:
description: Creates a remote offline server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -3379,6 +3391,10 @@ spec:
server:
description: Creates a feature server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -4040,6 +4056,10 @@ spec:
server:
description: Creates a registry server container
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -5409,6 +5429,10 @@ spec:
ui:
description: Creates a UI server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable present
Expand Down Expand Up @@ -8309,6 +8333,10 @@ spec:
description: Server configuration (image, resources,
env, TLS, etc.).
properties:
dualStack:
description: DualStack binds the server to the
IPv6 wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment
Expand Down Expand Up @@ -9601,6 +9629,10 @@ spec:
- message: configMapRef.name is required
rule: has(self.configMapRef.name) && size(self.configMapRef.name)
> 0
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -10144,6 +10176,10 @@ spec:
server:
description: Creates a remote offline server container
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -10704,6 +10740,10 @@ spec:
server:
description: Creates a feature server container
properties:
dualStack:
description: DualStack binds the server to the IPv6
wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down Expand Up @@ -11379,6 +11419,10 @@ spec:
server:
description: Creates a registry server container
properties:
dualStack:
description: DualStack binds the server to the
IPv6 wildcard address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment
Expand Down Expand Up @@ -12766,6 +12810,10 @@ spec:
ui:
description: Creates a UI server container
properties:
dualStack:
description: DualStack binds the server to the IPv6 wildcard
address instead of 0.0.0.
type: boolean
env:
items:
description: EnvVar represents an environment variable
Expand Down
Loading
Loading