Thanks to visit codestin.com
Credit goes to GitHub.com

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
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,12 @@ build-feast-operator-docker: ## Build Feast Operator Docker image
VERSION=$(VERSION) \
$(MAKE) docker-build

build-feast-operator-docker-on-mac: ## Build Feast Operator Docker image on Mac

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why can't we just Donna if statement for the OS?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding OS auto-detection would force --platform linux/amd64 on all Mac builds, breaking users who intentionally want native ARM images for local development/testing. Keeping separate _on_mac targets gives explicit control: native arch by default, cross-platform when explicitly requested.

Alternatively, we could use an environment variable (e.g., DOCKER_PLATFORM) or configure Docker's default platform at the system level, but these add extra configuration overhead for contributors to remember.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to remember to use this command though so still same problem but okay

cd infra/feast-operator && \
IMAGE_TAG_BASE=$(REGISTRY)/feast-operator \
VERSION=$(VERSION) \
$(MAKE) docker-build-on-mac

build-go-feature-server-docker: ## Build Go Feature Server Docker iamge
make compile-protos-go
docker buildx build --build-arg VERSION=$(VERSION) \
Expand Down
38 changes: 38 additions & 0 deletions infra/feast-operator/api/v1/featurestore_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,44 @@ type ServerConfigs struct {
// required by the Feast components. Ensure that each volume mount has a corresponding
// volume definition in the Volumes field.
VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
// WorkerConfigs defines the worker configuration for the Feast server.
// These options are primarily used for production deployments to optimize performance.
WorkerConfigs *WorkerConfigs `json:"workerConfigs,omitempty"`
}

// WorkerConfigs defines the worker configuration for Feast servers.
// These settings control gunicorn worker processes for production deployments.
type WorkerConfigs struct {
// Workers is the number of worker processes. Use -1 to auto-calculate based on CPU cores (2 * CPU + 1).
// Defaults to 1 if not specified.
// +kubebuilder:validation:Minimum=-1
// +optional
Workers *int32 `json:"workers,omitempty"`
// WorkerConnections is the maximum number of simultaneous clients per worker process.
// Defaults to 1000.
// +kubebuilder:validation:Minimum=1
// +optional
WorkerConnections *int32 `json:"workerConnections,omitempty"`
// MaxRequests is the maximum number of requests a worker will process before restarting.
// This helps prevent memory leaks. Defaults to 1000.
// +kubebuilder:validation:Minimum=0
// +optional
MaxRequests *int32 `json:"maxRequests,omitempty"`
// MaxRequestsJitter is the maximum jitter to add to max-requests to prevent
// thundering herd effect on worker restart. Defaults to 50.
// +kubebuilder:validation:Minimum=0
// +optional
MaxRequestsJitter *int32 `json:"maxRequestsJitter,omitempty"`
// KeepAliveTimeout is the timeout for keep-alive connections in seconds.
// Defaults to 30.
// +kubebuilder:validation:Minimum=1
// +optional
KeepAliveTimeout *int32 `json:"keepAliveTimeout,omitempty"`
// RegistryTTLSeconds is the number of seconds after which the registry is refreshed.
// Higher values reduce refresh overhead but increase staleness. Defaults to 60.
// +kubebuilder:validation:Minimum=0
// +optional
RegistryTTLSeconds *int32 `json:"registryTTLSeconds,omitempty"`
}

// RegistryServerConfigs creates a registry server for the feast service, with specified container configurations.
Expand Down
50 changes: 50 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.

38 changes: 38 additions & 0 deletions infra/feast-operator/api/v1alpha1/featurestore_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,44 @@ type ServerConfigs struct {
// required by the Feast components. Ensure that each volume mount has a corresponding
// volume definition in the Volumes field.
VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
// WorkerConfigs defines the worker configuration for the Feast server.
// These options are primarily used for production deployments to optimize performance.
WorkerConfigs *WorkerConfigs `json:"workerConfigs,omitempty"`
}

// WorkerConfigs defines the worker configuration for Feast servers.
// These settings control gunicorn worker processes for production deployments.
type WorkerConfigs struct {
// Workers is the number of worker processes. Use -1 to auto-calculate based on CPU cores (2 * CPU + 1).
// Defaults to 1 if not specified.
// +kubebuilder:validation:Minimum=-1
// +optional
Workers *int32 `json:"workers,omitempty"`
// WorkerConnections is the maximum number of simultaneous clients per worker process.
// Defaults to 1000.
// +kubebuilder:validation:Minimum=1
// +optional
WorkerConnections *int32 `json:"workerConnections,omitempty"`
// MaxRequests is the maximum number of requests a worker will process before restarting.
// This helps prevent memory leaks. Defaults to 1000.
// +kubebuilder:validation:Minimum=0
// +optional
MaxRequests *int32 `json:"maxRequests,omitempty"`
// MaxRequestsJitter is the maximum jitter to add to max-requests to prevent
// thundering herd effect on worker restart. Defaults to 50.
// +kubebuilder:validation:Minimum=0
// +optional
MaxRequestsJitter *int32 `json:"maxRequestsJitter,omitempty"`
// KeepAliveTimeout is the timeout for keep-alive connections in seconds.
// Defaults to 30.
// +kubebuilder:validation:Minimum=1
// +optional
KeepAliveTimeout *int32 `json:"keepAliveTimeout,omitempty"`
// RegistryTTLSeconds is the number of seconds after which the registry is refreshed.
// Higher values reduce refresh overhead but increase staleness. Defaults to 60.
// +kubebuilder:validation:Minimum=0
// +optional
RegistryTTLSeconds *int32 `json:"registryTTLSeconds,omitempty"`
}

// RegistryServerConfigs creates a registry server for the feast service, with specified container configurations.
Expand Down
50 changes: 50 additions & 0 deletions infra/feast-operator/api/v1alpha1/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 @@ -50,7 +50,7 @@ metadata:
}
]
capabilities: Basic Install
createdAt: "2026-01-16T21:11:14Z"
createdAt: "2026-01-31T05:08:59Z"
operators.operatorframework.io/builder: operator-sdk-v1.38.0
operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
name: feast-operator.v0.59.0
Expand Down
Loading
Loading