This chart adds all the components required to run feast, sans the stores to which you might want to ingest your features. Those will have to be deployed seperately.
# Add feast-charts repository
helm repo add feast-charts https://feast-charts.storage.googleapis.com
helm repo update
# Install Feast chart with release name "feast-release" and optional custom
# values "value-feast.yaml"
helm install --name feast-release feast-charts/feast [-f value-feast.yaml]
The feast deployment requires access to the following components:
gcs: read/write
As well as the following, depending on your use case:
bigquery: read/writebigtable: read/write/tableAdmin
The recommended way to give your deployment these permissions is to deploy Feast on a cluster with the required permissions.
The components included in this chart are:
feast-core: the main API controller of feastfeast-metadata: postgres db that persists feast's metadata- The stable postgres chart is being used for this deployment - any of the parameters described here can be overridden to customise your postgres deployment.
feast-serving: service that serves up features from the various serving stores
Components that Feast supports, but this installation will not include are:
- Serving Storage
RedisorBigtabledbs for feature serving storage
- TICK stack for metrics monitoring
- Set
statsd.hostandstatsd.portto direct job metrics to your metrics store. - Note that if you do not provision a metrics store, feast will only retain the latest metrics from your jobs.
- Set
- Jaeger tracing for serving performance.
- Set
serving.jaeger.enabledtotrue, and configure the following parameters:serving.jaeger.portserving.jaeger.options.samplerTypeserving.jaeger.options.samplerParam
- Set
To uninstall the feast deployment:
helm del feast
kubectl delete persistentvolumeclaim feast-postgresql
The following table lists the configurable parameters of the Feast chart and their default values.
| var | desc | default |
|---|---|---|
core.image.registry |
core docker image registry | feast |
core.image.repository |
core docker image repository | feast-core |
core.image.tag |
core docker image version | 0.1.0 |
core.jobs.monitoring.initialDelay |
delay before a job starts to be monitored in ms | 60000 |
core.jobs.monitoring.period |
polling interval for jobs monitoring in ms | 5000 |
core.jobs.options |
additional options to be provided to the beam job. Should be a char escaped json k-v object | {} |
core.jobs.runner |
beam job runner - one of DirectRunner, FlinkRunner or DataflowRunner |
DirectRunner |
core.jobs.workspace |
workspace path for ingestion jobs, used for separate job workspaces to share importJobSpecs.yaml with ingestion and for writing errors to if no default errors store is configured | nil |
core.jobs.writeFeatureMetricsToInfluxDb |
specifies whether Feast import job will write feature metrics (such as feature lag and values summaries) to Influx DB for monitoring and alert purpose | false |
core.jobs.influxDbUrl |
Influx DB url e.g. http://localhost:8086 (required if core.jobs.writeFeatureMetricsToInfluxDb = true) |
|
core.jobs.influxDbDatabase |
Influx DB database name (required if core.jobs.writeFeatureMetricsToInfluxDb = true) |
|
core.jobs.influxDbMeasurement |
Influx DB measurement name (required if core.jobs.writeFeatureMetricsToInfluxDb = true) |
|
core.replicaCount |
core deployment replica count | 3 |
core.resources.limits.cpu |
core cpu limits | 1 |
core.resources.limits.memory |
core memory limits | 2G |
core.resources.requests.cpu |
core cpu requested | 1 |
core.resources.requests.memory |
core memory requested | 2G |
core.service.extIPAdr |
Internal load balancer IP Address for core, required so jobs on external runners can connect to core | nil |
core.service.loadBalancerSourceRanges |
IP source ranges that will have access to core. If not set, will default to 0.0.0.0/0 | nil |
core.service.grpc.port |
core service exposed grpc port | 8433 |
core.service.grpc.targetPort |
core service target grpc port | 8433 |
core.service.http.port |
core service exposed http port | 80 |
core.service.http.targetPort |
core service target http port | 8080 |
core.projectId |
GCP project ID core service resides at | gcp-project-id |
core.trainingDatasetPrefix |
prefix for training datasets created in bq | fs |
dataflow.location |
desired dataflow's region | nil |
dataflow.projectID |
desired dataflow's project id | nil |
serving.config.maxEntityPerBatch |
max entities that can be requested at a time | 2000 |
serving.config.maxNumberOfThread |
max number of threads per instance of serving | 256 |
serving.config.redisPool.maxIdle |
max idle connections to redis | 16 |
serving.config.redisPool.maxSize |
max number of connections to redis | 256 |
serving.config.timeout |
request timeout in seconds | 5 |
serving.image.registry |
serving docker image registry | feast |
serving.image.repository |
serving docker image repository | feast-serving |
serving.image.tag |
serving docker image version | 0.1.0 |
serving.replicaCount |
serving replica count | 4 |
serving.resources.limits.cpu |
serving cpu limits | 1 |
serving.resources.limits.memory |
serving memory limits | 2G |
serving.resources.requests.cpu |
serving cpu requested | 1 |
serving.resources.requests.memory |
serving memory requested | 2G |
serving.service.grpc.port |
serving service exposed grpc port | 8433 |
serving.service.grpc.targetPort |
serving service target grpc port | 8433 |
serving.service.http.port |
serving service exposed http port | 80 |
serving.service.http.targetPort |
serving service target http port | 8080 |
serving.service.extIPAdr |
Internal load balancer IP Address for serving, required so jobs on external runners can connect to the service | nil |
serving.service.loadBalancerSourceRanges |
IP source ranges that will have access to serving. If not set, will default to 0.0.0.0/0 | nil |
serviceAccount.name |
service account secret name to mount to deployments | nil |
serviceAccount.key |
service account secret key to mount to deployments | nil |
statsd.host |
host of statsd daemon for job metrics to be sent to | nil |
statsd.port |
port of statsd daemon for job metrics to be sent to | nil |
store.errors.type |
type of default errors store to write errors to. One of stdout, stderr, file.json |
nil |
store.errors.options |
additional options for the default error store in json string format | {} |
store.serving.type |
type of default serving store to write errors to. One of redis, bigtable |
nil |
store.serving.options |
additional options for the default serving store in json string format | {} |
store.warehouse.type |
type of default warehouse store to write errors to. One of bigquery, file.json |
nil |
store.warehouse.options |
additional options for the default warehouse store in json string format | {} |
postgresql.provision |
Provision PostgreSQL | true |
postgresql.postgresPassword |
specify password if you want the postgres password secret to be generated | nil |
postgresql.resources.requests.cpu |
postgres requested cpu | 100m |
postgresql.resources.requests.memory |
postgres requested memory | 256Mi |
redis.provision |
Provision Redis instance | true |
redis.name |
Helm release name for the Redis instance | feast-redis |