|
| 1 | +# feast-operator |
| 2 | + |
| 3 | +   |
| 4 | + |
| 5 | +Current chart version is `0.52.0` |
| 6 | + |
| 7 | +A Kubernetes operator for managing Feast feature stores |
| 8 | + |
| 9 | +## Installation |
| 10 | +```bash |
| 11 | +helm repo add feast https://feast-dev.github.io/feast |
| 12 | +helm repo update |
| 13 | +helm install feast-operator feast/feast-operator \ |
| 14 | + --namespace features --create-namespace |
| 15 | +``` |
| 16 | + |
| 17 | +```bash |
| 18 | +# From source (within the Feast repo) |
| 19 | +cd infra/charts/feast-operator |
| 20 | +helm install feast-operator . \ |
| 21 | + --namespace features --create-namespace |
| 22 | +``` |
| 23 | + |
| 24 | +## CRDs and Operator |
| 25 | +- This chart installs/updates the Feast Operator. |
| 26 | +- CRDs can be installed by setting `crds.install=true` (default). |
| 27 | +- Manage `FeatureStore` custom resources separately (your app chart/manifests, GitOps). |
| 28 | + |
| 29 | +## Service Account & RBAC |
| 30 | +- Creates a dedicated ServiceAccount by default (`serviceAccount.create=true`). |
| 31 | +- Includes ClusterRole/Binding and a namespaced Role/Binding for leader election. |
| 32 | + |
| 33 | +## Metrics and Monitoring |
| 34 | +- `metrics.enabled` exposes an HTTPS metrics service on port 8443. |
| 35 | +- `prometheus.serviceMonitor.enabled` creates a ServiceMonitor (only rendered if the CRD exists in the cluster). |
| 36 | + |
| 37 | +## Uninstall |
| 38 | +```bash |
| 39 | +helm uninstall feast-operator -n features |
| 40 | +``` |
| 41 | + |
| 42 | +## Values |
| 43 | + |
| 44 | +| Key | Type | Default | Description | |
| 45 | +|-----|------|---------|-------------| |
| 46 | +| advanced.healthProbeBindAddress | string | `":8081"` | | |
| 47 | +| advanced.leaderElection | bool | `true` | | |
| 48 | +| advanced.metricsBindAddress | string | `":8443"` | | |
| 49 | +| advanced.terminationGracePeriodSeconds | int | `10` | | |
| 50 | +| commonAnnotations | object | `{}` | | |
| 51 | +| commonLabels | object | `{}` | | |
| 52 | +| crds.install | bool | `true` | | |
| 53 | +| global.imagePullSecrets | list | `[]` | | |
| 54 | +| global.imageRegistry | string | `""` | | |
| 55 | +| metrics.enabled | bool | `true` | | |
| 56 | +| metrics.service.annotations | object | `{}` | | |
| 57 | +| metrics.service.port | int | `8443` | | |
| 58 | +| metrics.service.targetPort | int | `8443` | | |
| 59 | +| metrics.service.type | string | `"ClusterIP"` | | |
| 60 | +| namePrefix | string | `""` | | |
| 61 | +| namespace.create | bool | `true` | | |
| 62 | +| namespace.labels.control-plane | string | `"controller-manager"` | | |
| 63 | +| namespace.name | string | `""` | | |
| 64 | +| operator.affinity | object | `{}` | | |
| 65 | +| operator.args | list | `[]` | | |
| 66 | +| operator.containerSecurityContext.allowPrivilegeEscalation | bool | `false` | | |
| 67 | +| operator.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | |
| 68 | +| operator.env.relatedImageCronJob | string | `"quay.io/openshift/origin-cli:4.17"` | | |
| 69 | +| operator.env.relatedImageFeatureServer | string | `"quay.io/feastdev/feature-server:0.52.0"` | | |
| 70 | +| operator.healthcheck.livenessProbe.initialDelaySeconds | int | `15` | | |
| 71 | +| operator.healthcheck.livenessProbe.periodSeconds | int | `20` | | |
| 72 | +| operator.healthcheck.port | int | `8081` | | |
| 73 | +| operator.healthcheck.readinessProbe.initialDelaySeconds | int | `5` | | |
| 74 | +| operator.healthcheck.readinessProbe.periodSeconds | int | `10` | | |
| 75 | +| operator.image.pullPolicy | string | `"IfNotPresent"` | | |
| 76 | +| operator.image.repository | string | `"quay.io/feastdev/feast-operator"` | | |
| 77 | +| operator.image.tag | string | `"0.52.0"` | | |
| 78 | +| operator.nodeSelector | object | `{}` | | |
| 79 | +| operator.podAnnotations."kubectl.kubernetes.io/default-container" | string | `"manager"` | | |
| 80 | +| operator.podLabels | object | `{}` | | |
| 81 | +| operator.replicaCount | int | `1` | | |
| 82 | +| operator.resources.limits.cpu | string | `"1000m"` | | |
| 83 | +| operator.resources.limits.memory | string | `"256Mi"` | | |
| 84 | +| operator.resources.requests.cpu | string | `"10m"` | | |
| 85 | +| operator.resources.requests.memory | string | `"64Mi"` | | |
| 86 | +| operator.securityContext.runAsNonRoot | bool | `true` | | |
| 87 | +| operator.tolerations | list | `[]` | | |
| 88 | +| prometheus.serviceMonitor.enabled | bool | `false` | | |
| 89 | +| prometheus.serviceMonitor.interval | string | `"30s"` | | |
| 90 | +| prometheus.serviceMonitor.labels | object | `{}` | | |
| 91 | +| prometheus.serviceMonitor.timeout | string | `"10s"` | | |
| 92 | +| rbac.create | bool | `true` | | |
| 93 | +| serviceAccount.annotations | object | `{}` | | |
| 94 | +| serviceAccount.create | bool | `true` | | |
| 95 | +| serviceAccount.name | string | `""` | | |
| 96 | +| storage.defaultAccessModes[0] | string | `"ReadWriteOnce"` | | |
| 97 | +| storage.defaultStorageClass | string | `""` | | |
| 98 | +| storage.reclaimPolicy | string | `""` | | |
| 99 | + |
| 100 | +## Source Code |
| 101 | + |
| 102 | +* <https://github.com/feast-dev/feast> |
| 103 | +* <https://github.com/feast-dev/feast/tree/master/infra/feast-operator> |
| 104 | +## Maintainers |
| 105 | + |
| 106 | +| Name | Email | Url | |
| 107 | +| ---- | ------ | --- | |
| 108 | +| Feast Community | <[email protected]> | <https://feast.dev/> | |
0 commit comments