This directory provides the Helm chart for Feast installation.
This chart installs Feast Core and Feast Serving components of Feast, along with
the required and optional dependencies. Components and dependencies can be
enabled or disabled by changing the corresponding enabled flag. Feast Core and
Feast Serving are subcharts of this parent Feast chart. The structure of the charts
are as follows:
feast // top level feast chart
│
├── feast-core // feast-core subchart
│ ├── postgresql // Postgresql dependency for feast-core (Feast database)
│ └── kafka // Kafka dependency for feast-core (default stream source)
│
├── feast-serving-online // feast-serving subchart
│ └── redis // Redis dependency for installation of store together with feast-serving
│
└── feast-serving-batch // feast-serving subchart
- Kubernetes 1.13 or newer cluster
- Helm 2.15.2 or newer
The chart deploys pods that consume minimum resources as specified in the resources configuration parameter.
Add repository for Feast chart:
helm repo add feast-charts https://feast-charts.storage.googleapis.com
helm repo updateInstall Feast release with minimal features, without batch serving and persistence:
RELEASE_NAME=demo
helm install feast-charts/feast --name $RELEASE_NAME -f values-demo.yamlInstall Feast release for typical use cases, with batch and online serving:
# To install Feast Batch serving, BigQuery and Google Cloud service account
# is required. The service account needs to have these roles:
# - bigquery.dataEditor
# - bigquery.jobUser
#
# Assuming a service account JSON file has been downloaded to /home/user/key.json,
# run the following command to create a secret in Kubernetes
# (make sure the file name is called key.json):
kubectl create secret generic feast-gcp-service-account --from-file=/home/user/key.json
# Set these required configuration in Feast Batch Serving
STAGING_LOCATION=gs://bucket/path
PROJECT_ID=google-cloud-project-id
DATASET_ID=bigquery-dataset-id
# Install the Helm release using default values.yaml
helm install feast-charts/feast --name feast \
--set feast-serving-batch."application\.yaml".feast.jobs.staging-location=$STAGING_LOCATION \
--set feast-serving-batch."store\.yaml".bigquery_config.project_id=$PROJECT_ID \
--set feast-serving-batch."store\.yaml".bigquery_config.dataset_id=$DATASET_IDThe following table lists the configurable parameters of the Feast chart and their default values.
| Parameter | Description | Default |
|---|---|---|
feast-core.enabled |
Flag to install Feast Core | true |
feast-core.postgresql.enabled |
Flag to install Postgresql as Feast database | true |
feast-core.postgresql.postgresqlDatabase |
Name of the database used by Feast Core | feast |
feast-core.postgresql.postgresqlUsername |
Username to authenticate to Feast database | postgres |
feast-core.postgresql.postgresqlPassword |
Passsword to authenticate to Feast database | password |
feast-core.kafka.enabled |
Flag to install Kafka as the default source for Feast | true |
feast-core.kafka.topics[0].name |
Default topic name in Kafka | feast |
feast-core.kafka.topics[0].replicationFactor |
No of replication factor for the topic | 1 |
feast-core.kafka.topics[0].partitions |
No of partitions for the topic | 1 |
feast-core.prometheus-statsd-exporter.enabled |
Flag to install Prometheus StatsD Exporter | false |
feast-core.prometheus-statsd-exporter.* |
Refer to this [link](charts/feast-core/charts/prometheus-statsd-exporter/values.yaml | |
feast-core.replicaCount |
No of pods to create | 1 |
feast-core.image.repository |
Repository for Feast Core Docker image | gcr.io/kf-feast/feast-core |
feast-core.image.tag |
Tag for Feast Core Docker image | 0.4.4 |
feast-core.image.pullPolicy |
Image pull policy for Feast Core Docker image | IfNotPresent |
feast-core.prometheus.enabled |
Add annotations to enable Prometheus scraping | false |
feast-core.application.yaml |
Configuration for Feast Core application | Refer to this link |
feast-core.springConfigMountPath |
Directory to mount application.yaml | /etc/feast/feast-core |
feast-core.gcpServiceAccount.useExistingSecret |
Flag to use existing secret for GCP service account | false |
feast-core.gcpServiceAccount.existingSecret.name |
Secret name for the service account | feast-gcp-service-account |
feast-core.gcpServiceAccount.existingSecret.key |
Secret key for the service account | key.json |
feast-core.gcpServiceAccount.mountPath |
Directory to mount the JSON key file | /etc/gcloud/service-accounts |
feast-core.gcpProjectId |
Project ID to set GOOGLE_CLOUD_PROJECT to change default project used by SDKs |
"" |
feast-core.jarPath |
Path to Jar file in the Docker image | /opt/feast/feast-core.jar |
feast-core.jvmOptions |
Options for the JVM | [] |
feast-core.logLevel |
Application logging level | warn |
feast-core.logType |
Application logging type (JSON or Console) |
JSON |
feast-core.springConfigProfiles |
Map of profile name to file content for additional Spring profiles | {} |
feast-core.springConfigProfilesActive |
CSV of profiles to enable from springConfigProfiles |
"" |
feast-core.livenessProbe.enabled |
Flag to enable liveness probe | true |
feast-core.livenessProbe.initialDelaySeconds |
Delay before liveness probe is initiated | 60 |
feast-core.livenessProbe.periodSeconds |
How often to perform the probe | 10 |
feast-core.livenessProbe.timeoutSeconds |
Timeout duration for the probe | 5 |
feast-core.livenessProbe.successThreshold |
Minimum no of consecutive successes for the probe to be considered successful | 1 |
feast-core.livenessProbe.failureThreshold |
Minimum no of consecutive failures for the probe to be considered failed | 5 |
feast-core.readinessProbe.enabled |
Flag to enable readiness probe | true |
feast-core.readinessProbe.initialDelaySeconds |
Delay before readiness probe is initiated | 30 |
feast-core.readinessProbe.periodSeconds |
How often to perform the probe | 10 |
feast-core.readinessProbe.timeoutSeconds |
Timeout duration for the probe | 10 |
feast-core.readinessProbe.successThreshold |
Minimum no of consecutive successes for the probe to be considered successful | 1 |
feast-core.service.type |
Kubernetes Service Type | ClusterIP |
feast-core.http.port |
Kubernetes Service port for HTTP request | 80 |
feast-core.http.targetPort |
Container port for HTTP request | 8080 |
feast-core.grpc.port |
Kubernetes Service port for GRPC request | 6565 |
feast-core.grpc.targetPort |
Container port for GRPC request | 6565 |
feast-core.resources |
CPU and memory allocation for the pod | {} |
feast-core.ingress |
See Ingress Parameters below | {} |
feast-serving-online.enabled |
Flag to install Feast Online Serving | true |
feast-serving-online.redis.enabled |
Flag to install Redis in Feast Serving | false |
feast-serving-online.redis.usePassword |
Flag to use password to access Redis | false |
feast-serving-online.redis.cluster.enabled |
Flag to enable Redis cluster | false |
feast-serving-online.core.enabled |
Flag for Feast Serving to use Feast Core in the same Helm release | true |
feast-serving-online.replicaCount |
No of pods to create | 1 |
feast-serving-online.image.repository |
Repository for Feast Serving Docker image | gcr.io/kf-feast/feast-serving |
feast-serving-online.image.tag |
Tag for Feast Serving Docker image | 0.4.4 |
feast-serving-online.image.pullPolicy |
Image pull policy for Feast Serving Docker image | IfNotPresent |
feast-serving-online.prometheus.enabled |
Add annotations to enable Prometheus scraping | true |
feast-serving-online.application.yaml |
Application configuration for Feast Serving | Refer to this link |
feast-serving-online.store.yaml |
Store configuration for Feast Serving | Refer to this link |
feast-serving-online.springConfigMountPath |
Directory to mount application.yaml and store.yaml | /etc/feast/feast-serving |
feast-serving-online.gcpServiceAccount.useExistingSecret |
Flag to use existing secret for GCP service account | false |
feast-serving-online.gcpServiceAccount.existingSecret.name |
Secret name for the service account | feast-gcp-service-account |
feast-serving-online.gcpServiceAccount.existingSecret.key |
Secret key for the service account | key.json |
feast-serving-online.gcpServiceAccount.mountPath |
Directory to mount the JSON key file | /etc/gcloud/service-accounts |
feast-serving-online.gcpProjectId |
Project ID to set GOOGLE_CLOUD_PROJECT to change default project used by SDKs |
"" |
feast-serving-online.jarPath |
Path to Jar file in the Docker image | /opt/feast/feast-serving.jar |
feast-serving-online.jvmOptions |
Options for the JVM | [] |
feast-serving-online.logLevel |
Application logging level | warn |
feast-serving-online.logType |
Application logging type (JSON or Console) |
JSON |
feast-serving-online.springConfigProfiles |
Map of profile name to file content for additional Spring profiles | {} |
feast-serving-online.springConfigProfilesActive |
CSV of profiles to enable from springConfigProfiles |
"" |
feast-serving-online.livenessProbe.enabled |
Flag to enable liveness probe | true |
feast-serving-online.livenessProbe.initialDelaySeconds |
Delay before liveness probe is initiated | 60 |
feast-serving-online.livenessProbe.periodSeconds |
How often to perform the probe | 10 |
feast-serving-online.livenessProbe.timeoutSeconds |
Timeout duration for the probe | 5 |
feast-serving-online.livenessProbe.successThreshold |
Minimum no of consecutive successes for the probe to be considered successful | 1 |
feast-serving-online.livenessProbe.failureThreshold |
Minimum no of consecutive failures for the probe to be considered failed | 5 |
feast-serving-online.readinessProbe.enabled |
Flag to enable readiness probe | true |
feast-serving-online.readinessProbe.initialDelaySeconds |
Delay before readiness probe is initiated | 30 |
feast-serving-online.readinessProbe.periodSeconds |
How often to perform the probe | 10 |
feast-serving-online.readinessProbe.timeoutSeconds |
Timeout duration for the probe | 10 |
feast-serving-online.readinessProbe.successThreshold |
Minimum no of consecutive successes for the probe to be considered successful | 1 |
feast-serving-online.service.type |
Kubernetes Service Type | ClusterIP |
feast-serving-online.http.port |
Kubernetes Service port for HTTP request | 80 |
feast-serving-online.http.targetPort |
Container port for HTTP request | 8080 |
feast-serving-online.grpc.port |
Kubernetes Service port for GRPC request | 6566 |
feast-serving-online.grpc.targetPort |
Container port for GRPC request | 6566 |
feast-serving-online.resources |
CPU and memory allocation for the pod | {} |
feast-serving-online.ingress |
See Ingress Parameters below | {} |
feast-serving-batch.enabled |
Flag to install Feast Batch Serving | true |
feast-serving-batch.redis.enabled |
Flag to install Redis in Feast Serving | false |
feast-serving-batch.redis.usePassword |
Flag to use password to access Redis | false |
feast-serving-batch.redis.cluster.enabled |
Flag to enable Redis cluster | false |
feast-serving-batch.core.enabled |
Flag for Feast Serving to use Feast Core in the same Helm release | true |
feast-serving-batch.replicaCount |
No of pods to create | 1 |
feast-serving-batch.image.repository |
Repository for Feast Serving Docker image | gcr.io/kf-feast/feast-serving |
feast-serving-batch.image.tag |
Tag for Feast Serving Docker image | 0.4.4 |
feast-serving-batch.image.pullPolicy |
Image pull policy for Feast Serving Docker image | IfNotPresent |
feast-serving-batch.prometheus.enabled |
Add annotations to enable Prometheus scraping | true |
feast-serving-batch.application.yaml |
Application configuration for Feast Serving | Refer to this link |
feast-serving-batch.store.yaml |
Store configuration for Feast Serving | Refer to this link |
feast-serving-batch.springConfigMountPath |
Directory to mount application.yaml and store.yaml | /etc/feast/feast-serving |
feast-serving-batch.gcpServiceAccount.useExistingSecret |
Flag to use existing secret for GCP service account | false |
feast-serving-batch.gcpServiceAccount.existingSecret.name |
Secret name for the service account | feast-gcp-service-account |
feast-serving-batch.gcpServiceAccount.existingSecret.key |
Secret key for the service account | key.json |
feast-serving-batch.gcpServiceAccount.mountPath |
Directory to mount the JSON key file | /etc/gcloud/service-accounts |
feast-serving-batch.gcpProjectId |
Project ID to set GOOGLE_CLOUD_PROJECT to change default project used by SDKs |
"" |
feast-serving-batch.jarPath |
Path to Jar file in the Docker image | /opt/feast/feast-serving.jar |
feast-serving-batch.jvmOptions |
Options for the JVM | [] |
feast-serving-batch.logLevel |
Application logging level | warn |
feast-serving-batch.logType |
Application logging type (JSON or Console) |
JSON |
feast-serving-batch.springConfigProfiles |
Map of profile name to file content for additional Spring profiles | {} |
feast-serving-batch.springConfigProfilesActive |
CSV of profiles to enable from springConfigProfiles |
"" |
feast-serving-batch.livenessProbe.enabled |
Flag to enable liveness probe | true |
feast-serving-batch.livenessProbe.initialDelaySeconds |
Delay before liveness probe is initiated | 60 |
feast-serving-batch.livenessProbe.periodSeconds |
How often to perform the probe | 10 |
feast-serving-batch.livenessProbe.timeoutSeconds |
Timeout duration for the probe | 5 |
feast-serving-batch.livenessProbe.successThreshold |
Minimum no of consecutive successes for the probe to be considered successful | 1 |
feast-serving-batch.livenessProbe.failureThreshold |
Minimum no of consecutive failures for the probe to be considered failed | 5 |
feast-serving-batch.readinessProbe.enabled |
Flag to enable readiness probe | true |
feast-serving-batch.readinessProbe.initialDelaySeconds |
Delay before readiness probe is initiated | 30 |
feast-serving-batch.readinessProbe.periodSeconds |
How often to perform the probe | 10 |
feast-serving-batch.readinessProbe.timeoutSeconds |
Timeout duration for the probe | 10 |
feast-serving-batch.readinessProbe.successThreshold |
Minimum no of consecutive successes for the probe to be considered successful | 1 |
feast-serving-batch.service.type |
Kubernetes Service Type | ClusterIP |
feast-serving-batch.http.port |
Kubernetes Service port for HTTP request | 80 |
feast-serving-batch.http.targetPort |
Container port for HTTP request | 8080 |
feast-serving-batch.grpc.port |
Kubernetes Service port for GRPC request | 6566 |
feast-serving-batch.grpc.targetPort |
Container port for GRPC request | 6566 |
feast-serving-batch.resources |
CPU and memory allocation for the pod | {} |
feast-serving-batch.ingress |
See Ingress Parameters below | {} |
The following table lists the configurable parameters of the ingress section for each Feast module.
Note, there are two ingresses available for each module - grpc and http.
| Parameter | Description | Default |
|---|---|---|
ingress.grcp.enabled |
Enables an ingress (endpoint) for the gRPC server | false |
ingress.grcp.* |
See below | |
ingress.http.enabled |
Enables an ingress (endpoint) for the HTTP server | false |
ingress.http.* |
See below | |
ingress.*.class |
Value for kubernetes.io/ingress.class |
nginx |
ingress.*.hosts |
List of host-names for the ingress | [] |
ingress.*.annotations |
Additional ingress annotations | {} |
ingress.*.https.enabled |
Add a tls section to the ingress | true |
ingress.*.https.secretNames |
Map of hostname to TLS secret name | {} If not specified, defaults to domain-tld-tls e.g. feast.example.com uses secret example-com-tls |
ingress.*.auth.enabled |
Enable auth on the ingress (only applicable for nginx type |
false |
ingress.*.auth.signinHost |
External hostname of the OAuth2 proxy to use | First item in ingress.hosts, replacing the sub-domain with 'auth' e.g. feast.example.com uses auth.example.com |
ingress.*.auth.authUrl |
Internal URI to internal auth endpoint | http://auth-server.auth-ns.svc.cluster.local/auth |
ingress.*.whitelist |
Subnet masks to whitelist (i.e. value for nginx.ingress.kubernetes.io/whitelist-source-range) |
""" |
To enable all the ingresses will a config like the following (while also adding the hosts etc):
feast-core:
ingress:
grpc:
enabled: true
http:
enabled: true
feast-serving-online:
ingress:
grpc:
enabled: true
http:
enabled: true
feast-serving-batch:
ingress:
grpc:
enabled: true
http:
enabled: true