feat: Add Operator support for spec.feastProject & status.applied fields by tchughesiv · Pull Request #4656 · feast-dev/feast
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, phase, & 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.yamlconfigured for remote registry access
Which issue(s) this PR fixes:
relates to #4561
Misc
% oc get feast NAME STATUS AGE example Ready 15h
$ 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: "855212" 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 phase: Ready 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