Skip to content

Commit 455d56c

Browse files
authored
feat: Batch_engine config injection in feature_store.yaml through operator (feast-dev#5938)
* feat: batch_engine config injection in feature_store.yaml through operator Signed-off-by: Aniket Paluskar <apaluska@redhat.com> * Updated repo_config test with added parameter for getServiceRepoConfig func Signed-off-by: Aniket Paluskar <apaluska@redhat.com> * Removed image tag change from ustomization.yaml Signed-off-by: Aniket Paluskar <apaluska@redhat.com> --------- Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
1 parent ea7d4fa commit 455d56c

14 files changed

Lines changed: 283 additions & 23 deletions

File tree

go/internal/feast/onlineserving/serving.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ func getQualifiedFeatureName(viewName string, featureName string, fullFeatureNam
652652
func validateJoinKeys(
653653
joinKeyValues map[string]*prototypes.RepeatedValue,
654654
expectedJoinKeysSet map[string]interface{}) error {
655-
for joinKey, _ := range joinKeyValues {
655+
for joinKey := range joinKeyValues {
656656
if _, ok := expectedJoinKeysSet[joinKey]; !ok {
657657
return fmt.Errorf("Invalid entity join key. key=%s", joinKey)
658658
}

go/internal/feast/server/grpc_server.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
prototypes "github.com/feast-dev/feast/go/protos/feast/types"
1010
"github.com/feast-dev/feast/go/types"
1111
"github.com/google/uuid"
12-
1312
)
1413

1514
const feastServerVersion = "0.0.1"

go/internal/feast/server/server_commons.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import (
44
"os"
55

66
"github.com/rs/zerolog"
7-
"go.opentelemetry.io/otel/trace"
87
"go.opentelemetry.io/otel"
8+
"go.opentelemetry.io/otel/trace"
99
)
1010

1111
var tracer = otel.Tracer("github.com/feast-dev/feast/go/server")

infra/feast-operator/api/v1/featurestore_types.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ type FeatureStoreSpec struct {
7575
Services *FeatureStoreServices `json:"services,omitempty"`
7676
AuthzConfig *AuthzConfig `json:"authz,omitempty"`
7777
CronJob *FeastCronJob `json:"cronJob,omitempty"`
78+
BatchEngine *BatchEngineConfig `json:"batchEngine,omitempty"`
7879
}
7980

8081
// FeastProjectDir defines how to create the feast project directory.
@@ -155,6 +156,15 @@ type FeastCronJob struct {
155156
FailedJobsHistoryLimit *int32 `json:"failedJobsHistoryLimit,omitempty"`
156157
}
157158

159+
// BatchEngineConfig defines the batch compute engine configuration.
160+
type BatchEngineConfig struct {
161+
// Reference to a ConfigMap containing the batch engine configuration.
162+
// The ConfigMap should contain YAML-formatted config with 'type' and engine-specific fields.
163+
ConfigMapRef *corev1.LocalObjectReference `json:"configMapRef,omitempty"`
164+
// Key name in the ConfigMap. Defaults to "config" if not specified.
165+
ConfigMapKey string `json:"configMapKey,omitempty"`
166+
}
167+
158168
// JobSpec describes how the job execution will look like.
159169
type JobSpec struct {
160170
// PodTemplateAnnotations are annotations to be applied to the CronJob's PodTemplate

infra/feast-operator/api/v1/zz_generated.deepcopy.go

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

infra/feast-operator/bundle/manifests/feast-operator.clusterserviceversion.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ metadata:
5050
}
5151
]
5252
capabilities: Basic Install
53-
createdAt: "2026-01-31T05:08:59Z"
53+
createdAt: "2026-02-03T08:12:50Z"
5454
operators.operatorframework.io/builder: operator-sdk-v1.38.0
5555
operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
5656
name: feast-operator.v0.59.0

infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,27 @@ spec:
8383
x-kubernetes-validations:
8484
- message: One selection required between kubernetes or oidc.
8585
rule: '[has(self.kubernetes), has(self.oidc)].exists_one(c, c)'
86+
batchEngine:
87+
description: BatchEngineConfig defines the batch compute engine configuration.
88+
properties:
89+
configMapKey:
90+
description: Key name in the ConfigMap. Defaults to "config" if
91+
not specified.
92+
type: string
93+
configMapRef:
94+
description: Reference to a ConfigMap containing the batch engine
95+
configuration.
96+
properties:
97+
name:
98+
default: ""
99+
description: |-
100+
Name of the referent.
101+
This field is effectively required, but due to backwards compatibility is
102+
allowed to be empty.
103+
type: string
104+
type: object
105+
x-kubernetes-map-type: atomic
106+
type: object
86107
cronJob:
87108
description: FeastCronJob defines a CronJob to execute against a Feature
88109
Store deployment.
@@ -4287,6 +4308,28 @@ spec:
42874308
- message: One selection required between kubernetes or oidc.
42884309
rule: '[has(self.kubernetes), has(self.oidc)].exists_one(c,
42894310
c)'
4311+
batchEngine:
4312+
description: BatchEngineConfig defines the batch compute engine
4313+
configuration.
4314+
properties:
4315+
configMapKey:
4316+
description: Key name in the ConfigMap. Defaults to "config"
4317+
if not specified.
4318+
type: string
4319+
configMapRef:
4320+
description: Reference to a ConfigMap containing the batch
4321+
engine configuration.
4322+
properties:
4323+
name:
4324+
default: ""
4325+
description: |-
4326+
Name of the referent.
4327+
This field is effectively required, but due to backwards compatibility is
4328+
allowed to be empty.
4329+
type: string
4330+
type: object
4331+
x-kubernetes-map-type: atomic
4332+
type: object
42904333
cronJob:
42914334
description: FeastCronJob defines a CronJob to execute against
42924335
a Feature Store deployment.

infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,27 @@ spec:
8383
x-kubernetes-validations:
8484
- message: One selection required between kubernetes or oidc.
8585
rule: '[has(self.kubernetes), has(self.oidc)].exists_one(c, c)'
86+
batchEngine:
87+
description: BatchEngineConfig defines the batch compute engine configuration.
88+
properties:
89+
configMapKey:
90+
description: Key name in the ConfigMap. Defaults to "config" if
91+
not specified.
92+
type: string
93+
configMapRef:
94+
description: Reference to a ConfigMap containing the batch engine
95+
configuration.
96+
properties:
97+
name:
98+
default: ""
99+
description: |-
100+
Name of the referent.
101+
This field is effectively required, but due to backwards compatibility is
102+
allowed to be empty.
103+
type: string
104+
type: object
105+
x-kubernetes-map-type: atomic
106+
type: object
86107
cronJob:
87108
description: FeastCronJob defines a CronJob to execute against a Feature
88109
Store deployment.
@@ -4287,6 +4308,28 @@ spec:
42874308
- message: One selection required between kubernetes or oidc.
42884309
rule: '[has(self.kubernetes), has(self.oidc)].exists_one(c,
42894310
c)'
4311+
batchEngine:
4312+
description: BatchEngineConfig defines the batch compute engine
4313+
configuration.
4314+
properties:
4315+
configMapKey:
4316+
description: Key name in the ConfigMap. Defaults to "config"
4317+
if not specified.
4318+
type: string
4319+
configMapRef:
4320+
description: Reference to a ConfigMap containing the batch
4321+
engine configuration.
4322+
properties:
4323+
name:
4324+
default: ""
4325+
description: |-
4326+
Name of the referent.
4327+
This field is effectively required, but due to backwards compatibility is
4328+
allowed to be empty.
4329+
type: string
4330+
type: object
4331+
x-kubernetes-map-type: atomic
4332+
type: object
42904333
cronJob:
42914334
description: FeastCronJob defines a CronJob to execute against
42924335
a Feature Store deployment.

infra/feast-operator/dist/install.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,27 @@ spec:
9191
x-kubernetes-validations:
9292
- message: One selection required between kubernetes or oidc.
9393
rule: '[has(self.kubernetes), has(self.oidc)].exists_one(c, c)'
94+
batchEngine:
95+
description: BatchEngineConfig defines the batch compute engine configuration.
96+
properties:
97+
configMapKey:
98+
description: Key name in the ConfigMap. Defaults to "config" if
99+
not specified.
100+
type: string
101+
configMapRef:
102+
description: Reference to a ConfigMap containing the batch engine
103+
configuration.
104+
properties:
105+
name:
106+
default: ""
107+
description: |-
108+
Name of the referent.
109+
This field is effectively required, but due to backwards compatibility is
110+
allowed to be empty.
111+
type: string
112+
type: object
113+
x-kubernetes-map-type: atomic
114+
type: object
94115
cronJob:
95116
description: FeastCronJob defines a CronJob to execute against a Feature
96117
Store deployment.
@@ -4295,6 +4316,28 @@ spec:
42954316
- message: One selection required between kubernetes or oidc.
42964317
rule: '[has(self.kubernetes), has(self.oidc)].exists_one(c,
42974318
c)'
4319+
batchEngine:
4320+
description: BatchEngineConfig defines the batch compute engine
4321+
configuration.
4322+
properties:
4323+
configMapKey:
4324+
description: Key name in the ConfigMap. Defaults to "config"
4325+
if not specified.
4326+
type: string
4327+
configMapRef:
4328+
description: Reference to a ConfigMap containing the batch
4329+
engine configuration.
4330+
properties:
4331+
name:
4332+
default: ""
4333+
description: |-
4334+
Name of the referent.
4335+
This field is effectively required, but due to backwards compatibility is
4336+
allowed to be empty.
4337+
type: string
4338+
type: object
4339+
x-kubernetes-map-type: atomic
4340+
type: object
42984341
cronJob:
42994342
description: FeastCronJob defines a CronJob to execute against
43004343
a Feature Store deployment.

infra/feast-operator/docs/api/markdown/ref.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@ _Appears in:_
2828
| `oidc` _[OidcAuthz](#oidcauthz)_ | |
2929

3030

31+
#### BatchEngineConfig
32+
33+
34+
35+
BatchEngineConfig defines the batch compute engine configuration.
36+
37+
_Appears in:_
38+
- [FeatureStoreSpec](#featurestorespec)
39+
40+
| Field | Description |
41+
| --- | --- |
42+
| `configMapRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#localobjectreference-v1-core)_ | Reference to a ConfigMap containing the batch engine configuration.
43+
The ConfigMap should contain YAML-formatted config with 'type' and engine-specific fields. |
44+
| `configMapKey` _string_ | Key name in the ConfigMap. Defaults to "config" if not specified. |
45+
46+
3147
#### ContainerConfigs
3248

3349

@@ -226,6 +242,7 @@ _Appears in:_
226242
| `services` _[FeatureStoreServices](#featurestoreservices)_ | |
227243
| `authz` _[AuthzConfig](#authzconfig)_ | |
228244
| `cronJob` _[FeastCronJob](#feastcronjob)_ | |
245+
| `batchEngine` _[BatchEngineConfig](#batchengineconfig)_ | |
229246

230247

231248
#### FeatureStoreStatus

0 commit comments

Comments
 (0)