Skip to content

Commit ec6f1b7

Browse files
feat: Adding volumes and volumeMounts support to Feature Store CR. (#4983)
* Squashed volume and volumeMounts commits for rebase Signed-off-by: lrangine <[email protected]> * resolving master rebase conflicts. Signed-off-by: lrangine <[email protected]> * resolving master rebase conflicts. few more missing files. Signed-off-by: lrangine <[email protected]> * Modifying the sample file as per the new code changes. Signed-off-by: lrangine <[email protected]> * Modifying the sample file as per the new code changes. Signed-off-by: lrangine <[email protected]> * incorporating code review comments. Signed-off-by: lrangine <[email protected]> --------- Signed-off-by: lrangine <[email protected]>
1 parent b16fb40 commit ec6f1b7

File tree

8 files changed

+5187
-1400
lines changed

8 files changed

+5187
-1400
lines changed

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

+12-2
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ type FeatureStoreServices struct {
8181
DeploymentStrategy *appsv1.DeploymentStrategy `json:"deploymentStrategy,omitempty"`
8282
// Disable the 'feast repo initialization' initContainer
8383
DisableInitContainers bool `json:"disableInitContainers,omitempty"`
84+
// Volumes specifies the volumes to mount in the FeatureStore deployment. A corresponding `VolumeMount` should be added to whichever feast service(s) require access to said volume(s).
85+
Volumes []corev1.Volume `json:"volumes,omitempty"`
8486
}
8587

8688
// OfflineStore configures the deployed offline store service
@@ -112,6 +114,7 @@ var ValidOfflineStoreFilePersistenceTypes = []string{
112114

113115
// OfflineStoreDBStorePersistence configures the DB store persistence for the offline store service
114116
type OfflineStoreDBStorePersistence struct {
117+
// Type of the persistence type you want to use. Allowed values are: snowflake.offline, bigquery, redshift, spark, postgres, trino, redis, athena, mssql
115118
// +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;redis;athena;mssql
116119
Type string `json:"type"`
117120
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
@@ -146,7 +149,7 @@ type OnlineStorePersistence struct {
146149
DBPersistence *OnlineStoreDBStorePersistence `json:"store,omitempty"`
147150
}
148151

149-
// OnlineStoreFilePersistence configures the file-based persistence for the offline store service
152+
// OnlineStoreFilePersistence configures the file-based persistence for the online store service
150153
// +kubebuilder:validation:XValidation:rule="(!has(self.pvc) && has(self.path)) ? self.path.startsWith('/') : true",message="Ephemeral stores must have absolute paths."
151154
// +kubebuilder:validation:XValidation:rule="(has(self.pvc) && has(self.path)) ? !self.path.startsWith('/') : true",message="PVC path must be a file name only, with no slashes."
152155
// +kubebuilder:validation:XValidation:rule="has(self.path) ? !(self.path.startsWith('s3://') || self.path.startsWith('gs://')) : true",message="Online store does not support S3 or GS buckets."
@@ -155,8 +158,9 @@ type OnlineStoreFilePersistence struct {
155158
PvcConfig *PvcConfig `json:"pvc,omitempty"`
156159
}
157160

158-
// OnlineStoreDBStorePersistence configures the DB store persistence for the offline store service
161+
// OnlineStoreDBStorePersistence configures the DB store persistence for the online store service
159162
type OnlineStoreDBStorePersistence struct {
163+
// Type of the persistence type you want to use. Allowed values are: snowflake.online, redis, ikv, datastore, dynamodb, bigtable, postgres, cassandra, mysql, hazelcast, singlestore, hbase, elasticsearch, qdrant, couchbase, milvus
160164
// +kubebuilder:validation:Enum=snowflake.online;redis;ikv;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase;milvus
161165
Type string `json:"type"`
162166
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
@@ -211,6 +215,7 @@ type RegistryFilePersistence struct {
211215

212216
// RegistryDBStorePersistence configures the DB store persistence for the registry service
213217
type RegistryDBStorePersistence struct {
218+
// Type of the persistence type you want to use. Allowed values are: sql, snowflake.registry
214219
// +kubebuilder:validation:Enum=sql;snowflake.registry
215220
Type string `json:"type"`
216221
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
@@ -289,6 +294,11 @@ type ServerConfigs struct {
289294
// Allowed values: "debug", "info", "warning", "error", "critical".
290295
// +kubebuilder:validation:Enum=debug;info;warning;error;critical
291296
LogLevel *string `json:"logLevel,omitempty"`
297+
// VolumeMounts defines the list of volumes that should be mounted into the feast container.
298+
// This allows attaching persistent storage, config files, secrets, or other resources
299+
// required by the Feast components. Ensure that each volume mount has a corresponding
300+
// volume definition in the Volumes field.
301+
VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
292302
}
293303

294304
// ContainerConfigs k8s container settings for the server

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

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)