feast
feast copied to clipboard
feat: Add Operator support for spec.feastProject & status.applied fields
What this PR does / why we need it:
Initial Operator functionality. Adds ability to provision a feast registry w/ ephemeral sqlite file-based DB. Also adds key fields to the FeatureStore.status... including conditions, feastVersion, serviceUrls, clientConfigMap, & applied spec. With this change the operator will create the following objects for each FeatureStore CR -
- Registry Deployment
- Registry Service
- Client ConfigMap w/
feature_store.yaml
configured for remote registry access
Which issue(s) this PR fixes:
relates to https://github.com/feast-dev/feast/issues/4561
Misc
$ oc get feast example -oyaml
apiVersion: feast.dev/v1alpha1
kind: FeatureStore
metadata:
creationTimestamp: "2024-10-20T23:41:29Z"
generation: 1
name: example
namespace: feast-operator-system
resourceVersion: "760632"
uid: 48f0d556-3778-4288-88ac-9a1d846ae30c
spec:
feastProject: test
status:
applied:
feastProject: test
clientConfigMap: feast-example-client
conditions:
- lastTransitionTime: "2024-10-20T23:41:29Z"
message: Registry installation complete
reason: Ready
status: "True"
type: Registry
- lastTransitionTime: "2024-10-20T23:41:29Z"
message: Client installation complete
reason: Ready
status: "True"
type: Client
- lastTransitionTime: "2024-10-20T23:41:29Z"
message: FeatureStore installation complete
reason: Ready
status: "True"
type: FeatureStore
feastVersion: 0.40.0
serviceUrls:
registry: feast-example-registry.feast-operator-system.svc.cluster.local:80
$ oc get all -l "feast.dev/name=example"
NAME READY STATUS RESTARTS AGE
pod/feast-example-registry-86b9c8f6c4-pkztz 1/1 Running 0 78s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/feast-example-registry ClusterIP 172.30.224.170 <none> 80/TCP 78s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/feast-example-registry 1/1 1 1 78s
NAME DESIRED CURRENT READY AGE
replicaset.apps/feast-example-registry-86b9c8f6c4 1 1 1 78s
$ oc get configmap feast-example-client -oyaml
apiVersion: v1
data:
feature_store.yaml: |
project: test
provider: local
registry:
path: feast-example-registry.feast-operator-system.svc.cluster.local:80
registry_type: remote
entity_key_serialization_version: 3
kind: ConfigMap
metadata:
creationTimestamp: "2024-10-20T23:41:29Z"
labels:
feast.dev/name: example
feast.dev/service-type: client
name: feast-example-client
namespace: feast-operator-system
ownerReferences:
- apiVersion: feast.dev/v1alpha1
blockOwnerDeletion: true
controller: true
kind: FeatureStore
name: example
uid: 48f0d556-3778-4288-88ac-9a1d846ae30c
resourceVersion: "760628"
uid: a9e962ef-0472-4c61-9650-8111620ad5eb