-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: PVC configuration and impl #4750
Conversation
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
@tchughesiv @tmihalac I also splitted the controller tests in multiple files to simplify them |
infra/feast-operator/config/samples/v1alpha1_featurestore_ephemeral_persistence.yaml
Outdated
Show resolved
Hide resolved
err := feast.setPVC(pvc, pvcCreate, feastType) | ||
if err != nil { | ||
return err | ||
} | ||
if op, err := controllerutil.CreateOrUpdate(feast.Context, feast.Client, pvc, controllerutil.MutateFn(func() error { | ||
return nil |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
err := feast.setPVC(pvc, pvcCreate, feastType) | |
if err != nil { | |
return err | |
} | |
if op, err := controllerutil.CreateOrUpdate(feast.Context, feast.Client, pvc, controllerutil.MutateFn(func() error { | |
return nil | |
if op, err := controllerutil.CreateOrUpdate(feast.Context, feast.Client, pvc, controllerutil.MutateFn(func() error { | |
return feast.setPVC(pvc, pvcCreate, feastType) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the PVC object mods need to happen within the CreateOrUpdate func ()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
was this moved because of the immutable nature of the PVC?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if so, we could be explicit with PVC creation and use feast.Client.Create()
here instead? it could be used alongside if !apierrors.IsAlreadyExists(err) {}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tried the Create option but creation was not an issue. Deletion seems to fail, at least in the tests (just restored them to see the failure)
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
type RegistryFilePersistence struct { | ||
Path string `json:"path,omitempty"` | ||
Path string `json:"path,omitempty"` | ||
PvcConfig *PvcConfig `json:"pvc,omitempty"` | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OnlineStoreFilePersistence
and RegistryFilePersistence
are identical. Any reason we shouldn't make a single FilePersistence
struct instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Registry also supports the s3_additional_kwargs
options (which will go under the Registry.Persistence.File
section). Will we add it to a new PR dedicated to object store settings.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, so this is in prep for future work... got it, thanks
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
@lokeshrangineni @redhatHameed can you take a look? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks lgtm
some minor comments.
infra/feast-operator/internal/controller/services/repo_config.go
Outdated
Show resolved
Hide resolved
infra/feast-operator/config/samples/v1alpha1_featurestore_objectstore_persistence.yaml
Outdated
Show resolved
Hide resolved
infra/feast-operator/config/samples/v1alpha1_featurestore_pvc_persistence.yaml
Show resolved
Hide resolved
206f3a7
to
6644853
Compare
Signed-off-by: Daniele Martinoli <[email protected]>
Signed-off-by: Daniele Martinoli <[email protected]>
infra/feast-operator/internal/controller/featurestore_controller_pvc_test.go
Outdated
Show resolved
Hide resolved
Signed-off-by: Daniele Martinoli <[email protected]>
* PVC configuration and impl Signed-off-by: Daniele Martinoli <[email protected]> * typo in sample manifest Signed-off-by: Daniele Martinoli <[email protected]> * removing private images Signed-off-by: Daniele Martinoli <[email protected]> * More logs for PVC deletion and changing create strategy Signed-off-by: Daniele Martinoli <[email protected]> * using createNewPVC Signed-off-by: Daniele Martinoli <[email protected]> * fixed broken test Signed-off-by: Daniele Martinoli <[email protected]> * validating PVC config in applied status Signed-off-by: Daniele Martinoli <[email protected]> * simplified PVC deletion logic Signed-off-by: Daniele Martinoli <[email protected]> * ignoring err when PVC is deleted Signed-off-by: Daniele Martinoli <[email protected]> * object store validation and additional field Signed-off-by: Daniele Martinoli <[email protected]> --------- Signed-off-by: Daniele Martinoli <[email protected]>
* PVC configuration and impl Signed-off-by: Daniele Martinoli <[email protected]> * typo in sample manifest Signed-off-by: Daniele Martinoli <[email protected]> * removing private images Signed-off-by: Daniele Martinoli <[email protected]> * More logs for PVC deletion and changing create strategy Signed-off-by: Daniele Martinoli <[email protected]> * using createNewPVC Signed-off-by: Daniele Martinoli <[email protected]> * fixed broken test Signed-off-by: Daniele Martinoli <[email protected]> * validating PVC config in applied status Signed-off-by: Daniele Martinoli <[email protected]> * simplified PVC deletion logic Signed-off-by: Daniele Martinoli <[email protected]> * ignoring err when PVC is deleted Signed-off-by: Daniele Martinoli <[email protected]> * object store validation and additional field Signed-off-by: Daniele Martinoli <[email protected]> --------- Signed-off-by: Daniele Martinoli <[email protected]>
# [0.42.0](v0.41.0...v0.42.0) (2024-12-05) ### Bug Fixes * Add adapters for sqlite datetime conversion ([#4797](#4797)) ([e198b17](e198b17)) * Added grpcio extras to default feature-server image ([#4737](#4737)) ([e9cd373](e9cd373)) * Changing node version in release ([7089918](7089918)) * Feast create empty online table when FeatureView attribute online=False ([#4666](#4666)) ([237c453](237c453)) * Fix db store types in Operator CRD ([#4798](#4798)) ([f09339e](f09339e)) * Fix the config issue for postgres ([#4776](#4776)) ([a36f7e5](a36f7e5)) * Fixed example materialize-incremental and improved explanation ([#4734](#4734)) ([ca8a7ab](ca8a7ab)) * Fixed SparkSource docstrings so it wouldn't used inhereted class docstrings ([#4722](#4722)) ([32e6aa1](32e6aa1)) * Fixing PGVector integration tests ([#4778](#4778)) ([88a0320](88a0320)) * Incorrect type passed to assert_permissions in materialize endpoints ([#4727](#4727)) ([b72c2da](b72c2da)) * Issue of DataSource subclasses using parent abstract class docstrings ([#4730](#4730)) ([b24acd5](b24acd5)) * Operator envVar positioning & tls.SecretRef.Name ([#4806](#4806)) ([1115d96](1115d96)) * Populates project created_time correctly according to created ti… ([#4686](#4686)) ([a61b93c](a61b93c)) * Reduce feast-server container image size & fix dev image build ([#4781](#4781)) ([ccc9aea](ccc9aea)) * Removed version func from feature_store.py ([#4748](#4748)) ([f902bb9](f902bb9)) * Support registry instantiation for read-only users ([#4719](#4719)) ([ca3d3c8](ca3d3c8)) * Syntax Error in BigQuery While Retrieving Columns that Start wit… ([#4713](#4713)) ([60fbc62](60fbc62)) * Update release version in a pertinent Operator file ([#4708](#4708)) ([764a8a6](764a8a6)) ### Features * Add api contract to fastapi docs ([#4721](#4721)) ([1a165c7](1a165c7)) * Add Couchbase as an online store ([#4637](#4637)) ([824859b](824859b)) * Add Operator support for spec.feastProject & status.applied fields ([#4656](#4656)) ([430ac53](430ac53)) * Add services functionality to Operator ([#4723](#4723)) ([d1d80c0](d1d80c0)) * Add TLS support to the Operator ([#4796](#4796)) ([a617a6c](a617a6c)) * Added feast Go operator db stores support ([#4771](#4771)) ([3302363](3302363)) * Added support for setting env vars in feast services in feast controller ([#4739](#4739)) ([84b24b5](84b24b5)) * Adding docs outlining native Python transformations on singletons ([#4741](#4741)) ([0150278](0150278)) * Adding first feast operator e2e test. ([#4791](#4791)) ([8339f8d](8339f8d)) * Adding github action to run the operator end-to-end tests. ([#4762](#4762)) ([d8ccb00](d8ccb00)) * Adding ssl support for registry server. ([#4718](#4718)) ([ccf7a55](ccf7a55)) * Adding SSL support for the React UI server and feast UI command. ([#4736](#4736)) ([4a89252](4a89252)) * Adding support for native Python transformations on a single dictionary ([#4724](#4724)) ([9bbc1c6](9bbc1c6)) * Adding TLS support for offline server. ([#4744](#4744)) ([5d8d03f](5d8d03f)) * Building the feast image ([#4775](#4775)) ([6635dde](6635dde)) * File persistence definition and implementation ([#4742](#4742)) ([3bad4a1](3bad4a1)) * Object store persistence in operator ([#4758](#4758)) ([0ae86da](0ae86da)) * OIDC authorization in Feast Operator ([#4801](#4801)) ([eb111d6](eb111d6)) * Operator will create k8s serviceaccount for each feast service ([#4767](#4767)) ([cde5760](cde5760)) * Printing more verbose logs when we start the offline server ([#4660](#4660)) ([9d8d3d8](9d8d3d8)) * PVC configuration and impl ([#4750](#4750)) ([785a190](785a190)) * Qdrant vectorstore support ([#4689](#4689)) ([86573d2](86573d2)) * RBAC Authorization in Feast Operator ([#4786](#4786)) ([0ef5acc](0ef5acc)) * Support for nested timestamp fields in Spark Offline store ([#4740](#4740)) ([d4d94f8](d4d94f8)) * Update the go feature server from Expedia code repo. ([#4665](#4665)) ([6406625](6406625)) * Updated feast Go operator db stores ([#4809](#4809)) ([2c5a6b5](2c5a6b5)) * Updated sample secret following review ([#4811](#4811)) ([dc9f825](dc9f825))
What this PR does / why we need it:
Adds durable persistence configuration to Feast services deployed with the operator.
PVC configuration allows to either create a new PVC or use an existing one:
Which issue(s) this PR fixes:
Relates to #4561