From a9870443645db21e9067f42f588dcd817855bd89 Mon Sep 17 00:00:00 2001 From: Tommy Hughes Date: Mon, 29 Apr 2024 11:43:27 -0500 Subject: [PATCH] addt'l operator documentation Signed-off-by: Tommy Hughes --- .../running-feast-in-production.md | 2 + infra/charts/feast-feature-server/README.md | 1 + infra/feast-operator/README.md | 38 ++++++++++++++++--- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/docs/how-to-guides/running-feast-in-production.md b/docs/how-to-guides/running-feast-in-production.md index 4663c928c6..256fa82b0a 100644 --- a/docs/how-to-guides/running-feast-in-production.md +++ b/docs/how-to-guides/running-feast-in-production.md @@ -244,6 +244,8 @@ helm install feast-release feast-charts/feast-feature-server \ This will deploy a single service. The service must have read access to the registry file on cloud storage and to the online store (e.g. via [podAnnotations](https://kubernetes-on-aws.readthedocs.io/en/latest/user-guide/iam-roles.html)). It will keep a copy of the registry in their memory and periodically refresh it, so expect some delays in update propagation in exchange for better performance. +> Alternatively, deploy the same helm chart with a [Kubernetes Operator](/infra/feast-operator). + ## 5. Using environment variables in your yaml configuration You might want to dynamically set parts of your configuration from your environment. For instance to deploy Feast to production and development with the same configuration, but a different server. Or to inject secrets without exposing them in your git repo. To do this, it is possible to use the `${ENV_VAR}` syntax in your `feature_store.yaml` file. For instance: diff --git a/infra/charts/feast-feature-server/README.md b/infra/charts/feast-feature-server/README.md index 0730e39e63..a9c609c3d6 100644 --- a/infra/charts/feast-feature-server/README.md +++ b/infra/charts/feast-feature-server/README.md @@ -17,6 +17,7 @@ A base64 encoded version of the `feature_store.yaml` file is needed. Helm instal ``` helm install feast-feature-server feast-charts/feast-feature-server --set feature_store_yaml_base64=$(base64 feature_store.yaml) ``` +> Alternatively, deploy this helm chart with a [Kubernetes Operator](/infra/feast-operator). ## Tutorial See [here](https://github.com/feast-dev/feast/tree/master/examples/python-helm-demo) for a sample tutorial on testing this helm chart with a demo feature repository and a local Redis instance. diff --git a/infra/feast-operator/README.md b/infra/feast-operator/README.md index 851edffa55..9ebfd5bd66 100644 --- a/infra/feast-operator/README.md +++ b/infra/feast-operator/README.md @@ -1,11 +1,39 @@ # Feast Feature Server Helm-based Operator -Leverages [operator-sdk](https://github.com/operator-framework/operator-sdk) and the [feast-feature-server helm chart](/infra/charts/feast-feature-server). +This Operator was built with the [operator-sdk](https://github.com/operator-framework/operator-sdk) and leverages the [feast-feature-server helm chart](/infra/charts/feast-feature-server). + +## Installation + +1. __Install [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)__ +2. __Install the Operator on a Kubernetes cluster__ -### To run against an K8S cluster - ```bash -$ make deploy +make deploy +``` -# test the operator by deploying a feature server sample CR -$ oc apply -f config/samples/charts_v1alpha1_feastfeatureserver.yaml +3. __Install a Feast Feature Server on Kubernetes__ + +A base64 encoded version of the `feature_store.yaml` file is required. FeastFeatureServer CR install example: +```bash +cat < To install the aforementioned sample FeastFeatureServer, run this command - `kubectl create -f config/samples/charts_v1alpha1_feastfeatureserver.yaml`