feast icon indicating copy to clipboard operation
feast copied to clipboard

feat: Add Operator support for spec.feastProject & status.applied fields

Open tchughesiv opened this issue 4 months ago • 0 comments

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

tchughesiv avatar Oct 20 '24 23:10 tchughesiv