Skip to content

Commit 49359c6

Browse files
jyejarentkathole
andauthored
feat: Production ready feast operator with v1 apiversion (#5771)
* Production ready feast operator with v1 apiversion Signed-off-by: jyejare <[email protected]> * Tests modified to use v1 , Docs updated Signed-off-by: jyejare <[email protected]> * fix: Fix resolving to the correct version v1 or v1alpha1 Signed-off-by: ntkathole <[email protected]> --------- Signed-off-by: jyejare <[email protected]> Signed-off-by: ntkathole <[email protected]> Co-authored-by: ntkathole <[email protected]>
1 parent b99a8a9 commit 49359c6

File tree

53 files changed

+19090
-708
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+19090
-708
lines changed

docs/how-to-guides/running-feast-in-production.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ kubectl apply -f https://raw.githubusercontent.com/feast-dev/feast/refs/tags/<ve
227227
3. Deploy a Feature Store
228228

229229
```sh
230-
kubectl apply -f https://raw.githubusercontent.com/feast-dev/feast/refs/heads/stable/infra/feast-operator/config/samples/v1alpha1_featurestore.yaml
230+
kubectl apply -f https://raw.githubusercontent.com/feast-dev/feast/refs/heads/stable/infra/feast-operator/config/samples/v1_featurestore.yaml
231231
```
232232
Verify the status
233233
```
@@ -238,7 +238,7 @@ sample Ready 2m21s
238238

239239
The above will install a simple [FeatureStore CR](../../infra/feast-operator/docs/api/markdown/ref.md) like the following. By default, it will run the [Online Store feature server](../reference/feature-servers/python-feature-server.md) -
240240
```yaml
241-
apiVersion: feast.dev/v1alpha1
241+
apiVersion: feast.dev/v1
242242
kind: FeatureStore
243243
metadata:
244244
name: sample

docs/reference/feature-servers/offline-feature-server.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ See [this](../../how-to-guides/running-feast-in-production.md#id-4.2.-deploy-fea
1717

1818
The Offline feature server can be deployed with a slight modification of the FeatureStore CR -
1919
```yaml
20-
apiVersion: feast.dev/v1alpha1
20+
apiVersion: feast.dev/v1
2121
kind: FeatureStore
2222
metadata:
2323
name: sample-offline-server

examples/operator-postgres-tls-demo/02-Install-feast.ipynb

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,7 @@
106106
"cell_type": "markdown",
107107
"metadata": {},
108108
"source": [
109-
"**Option 1: Directly Setting the CA Certificate Path** \n",
110-
"\n",
111-
"In this approach, we specify the CA certificate path directly in the Feast PostgreSQL URL using the `sslrootcert` parameter. \n",
112-
"\n",
113-
"You can refer to the `v1alpha1_featurestore_postgres_db_volumes_tls.yaml` file for the complete configuration details. "
109+
"**Option 1: Directly Setting the CA Certificate Path** \n\nIn this approach, we specify the CA certificate path directly in the Feast PostgreSQL URL using the `sslrootcert` parameter. \n\nYou can refer to the `v1_featurestore_postgres_db_volumes_tls.yaml` file for the complete configuration details. "
114110
]
115111
},
116112
{
@@ -131,19 +127,14 @@
131127
}
132128
],
133129
"source": [
134-
"!kubectl apply -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_postgres_db_volumes_tls.yaml --namespace=feast"
130+
"!kubectl apply -f ../../infra/feast-operator/config/samples/v1_featurestore_postgres_db_volumes_tls.yaml --namespace=feast"
135131
]
136132
},
137133
{
138134
"cell_type": "markdown",
139135
"metadata": {},
140136
"source": [
141-
"**Option 2: Using an Environment Variable for the CA Certificate** \n",
142-
"\n",
143-
"In this approach, you define the CA certificate path as an environment variable. You can refer to the `v1alpha1_featurestore_postgres_tls_volumes_ca_env.yaml` file for the complete configuration details. \n",
144-
"\n",
145-
"```bash\n",
146-
"FEAST_CA_CERT_FILE_PATH=<path-to-ca-cert>\n"
137+
"**Option 2: Using an Environment Variable for the CA Certificate** \n\nIn this approach, you define the CA certificate path as an environment variable. You can refer to the `v1_featurestore_postgres_tls_volumes_ca_env.yaml` file for the complete configuration details. \n\n```bash\nFEAST_CA_CERT_FILE_PATH=<path-to-ca-cert>\n"
147138
]
148139
},
149140
{
@@ -162,7 +153,7 @@
162153
}
163154
],
164155
"source": [
165-
"!kubectl apply -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_postgres_tls_volumes_ca_env.yaml --namespace=feast"
156+
"!kubectl apply -f ../../infra/feast-operator/config/samples/v1_featurestore_postgres_tls_volumes_ca_env.yaml --namespace=feast"
166157
]
167158
},
168159
{
@@ -455,4 +446,4 @@
455446
},
456447
"nbformat": 4,
457448
"nbformat_minor": 4
458-
}
449+
}

examples/operator-postgres-tls-demo/03-Uninstall.ipynb

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,7 @@
2626
}
2727
],
2828
"source": [
29-
"# If you have choosen the option 1 example earlier.\n",
30-
"!kubectl delete -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_postgres_db_volumes_tls.yaml\n",
31-
"\n",
32-
"# If you have choosen the option 2 example earlier.\n",
33-
"!kubectl delete -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_postgres_tls_volumes_ca_env.yaml\n",
34-
"\n",
35-
"#!kubectl delete -f ../../infra/feast-operator/dist/install.yaml"
29+
"# If you have choosen the option 1 example earlier.\n!kubectl delete -f ../../infra/feast-operator/config/samples/v1_featurestore_postgres_db_volumes_tls.yaml\n\n# If you have choosen the option 2 example earlier.\n!kubectl delete -f ../../infra/feast-operator/config/samples/v1_featurestore_postgres_tls_volumes_ca_env.yaml\n\n#!kubectl delete -f ../../infra/feast-operator/dist/install.yaml"
3630
]
3731
},
3832
{
@@ -131,4 +125,4 @@
131125
},
132126
"nbformat": 4,
133127
"nbformat_minor": 4
134-
}
128+
}

examples/operator-rbac-openshift-tls/1-setup-operator-rbac.ipynb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,7 @@
159159
"cell_type": "markdown",
160160
"metadata": {},
161161
"source": [
162-
"## Install the Feast services via FeatureStore CR\n",
163-
"Next, we'll use the running Feast Operator to install the feast services with Server components online, offline, registry with kubernetes Authorization set. Apply the included [reference deployment](../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml) to install and configure Feast with kubernetes Authorization ."
162+
"## Install the Feast services via FeatureStore CR\nNext, we'll use the running Feast Operator to install the feast services with Server components online, offline, registry with kubernetes Authorization set. Apply the included [reference deployment](../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml) to install and configure Feast with kubernetes Authorization ."
164163
]
165164
},
166165
{
@@ -202,8 +201,7 @@
202201
}
203202
],
204203
"source": [
205-
"!cat ../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml\n",
206-
"!kubectl apply -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml -n feast"
204+
"!cat ../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml\n!kubectl apply -f ../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml -n feast"
207205
]
208206
},
209207
{
@@ -738,4 +736,4 @@
738736
},
739737
"nbformat": 4,
740738
"nbformat_minor": 4
741-
}
739+
}

examples/operator-rbac-openshift-tls/3-uninstall.ipynb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@
5252
}
5353
],
5454
"source": [
55-
"!kubectl delete -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml\n",
56-
"!kubectl delete -f ../../infra/feast-operator/dist/install.yaml"
55+
"!kubectl delete -f ../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml\n!kubectl delete -f ../../infra/feast-operator/dist/install.yaml"
5756
]
5857
},
5958
{
@@ -218,4 +217,4 @@
218217
},
219218
"nbformat": 4,
220219
"nbformat_minor": 5
221-
}
220+
}

examples/operator-rbac/04-uninstall.ipynb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@
5252
}
5353
],
5454
"source": [
55-
"!kubectl delete -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml\n",
56-
"!kubectl delete -f ../../infra/feast-operator/dist/install.yaml"
55+
"!kubectl delete -f ../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml\n!kubectl delete -f ../../infra/feast-operator/dist/install.yaml"
5756
]
5857
},
5958
{
@@ -216,4 +215,4 @@
216215
},
217216
"nbformat": 4,
218217
"nbformat_minor": 5
219-
}
218+
}

examples/operator-rbac/1-setup-operator-rbac.ipynb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,7 @@
176176
"cell_type": "markdown",
177177
"metadata": {},
178178
"source": [
179-
"## Install the Feast services via FeatureStore CR\n",
180-
"Next, we'll use the running Feast Operator to install the feast services with Server components online, offline, registry with kubernetes Authorization set. Apply the included [reference deployment](../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml) to install and configure Feast with kubernetes Authorization ."
179+
"## Install the Feast services via FeatureStore CR\nNext, we'll use the running Feast Operator to install the feast services with Server components online, offline, registry with kubernetes Authorization set. Apply the included [reference deployment](../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml) to install and configure Feast with kubernetes Authorization ."
181180
]
182181
},
183182
{
@@ -219,8 +218,7 @@
219218
}
220219
],
221220
"source": [
222-
"!cat ../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml\n",
223-
"!kubectl apply -f ../../infra/feast-operator/config/samples/v1alpha1_featurestore_kubernetes_auth.yaml -n feast"
221+
"!cat ../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml\n!kubectl apply -f ../../infra/feast-operator/config/samples/v1_featurestore_kubernetes_auth.yaml -n feast"
224222
]
225223
},
226224
{
@@ -761,4 +759,4 @@
761759
},
762760
"nbformat": 4,
763761
"nbformat_minor": 4
764-
}
762+
}

infra/feast-operator/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ endif
206206

207207
.PHONY: install
208208
install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
209-
$(KUSTOMIZE) build config/crd | $(KUBECTL) apply -f -
209+
$(KUSTOMIZE) build config/crd | $(KUBECTL) apply --server-side --force-conflicts -f -
210210

211211
.PHONY: uninstall
212212
uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
@@ -215,7 +215,7 @@ uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified
215215
.PHONY: deploy
216216
deploy: manifests kustomize related-image-fs ## Deploy controller to the K8s cluster specified in ~/.kube/config.
217217
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
218-
$(KUSTOMIZE) build config/default | $(KUBECTL) apply -f -
218+
$(KUSTOMIZE) build config/default | $(KUBECTL) apply --server-side --force-conflicts -f -
219219

220220
.PHONY: undeploy
221221
undeploy: kustomize ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
@@ -312,7 +312,7 @@ $(CRD_REF_DOCS): $(LOCALBIN)
312312

313313
.PHONY: generate-ref
314314
generate-ref: generate fmt crd-ref-docs
315-
$(CRD_REF_DOCS) --log-level=WARN --max-depth=30 --config=$(LOCALDIR)/docs/crd-ref-templates/config.yaml --source-path=$(LOCALDIR)/api/v1alpha1 --renderer=markdown --templates-dir=$(LOCALDIR)/docs/crd-ref-templates/markdown --output-path=$(LOCALDIR)/docs/api/markdown/ref.md
315+
$(CRD_REF_DOCS) --log-level=WARN --max-depth=30 --config=$(LOCALDIR)/docs/crd-ref-templates/config.yaml --source-path=$(LOCALDIR)/api/v1 --renderer=markdown --templates-dir=$(LOCALDIR)/docs/crd-ref-templates/markdown --output-path=$(LOCALDIR)/docs/api/markdown/ref.md
316316

317317
.PHONY: bundle
318318
bundle: manifests kustomize related-image-fs operator-sdk ## Generate bundle manifests and metadata, then validate generated files.

infra/feast-operator/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@ This is a K8s Operator that can be used to deploy and manage **Feast**, an open
1313

1414
## To deploy an Operator release on a cluster
1515

16-
Users can just run `kubectl apply -f <URL for YAML BUNDLE>` to install the project, i.e.:
16+
Users can deploy the operator using Server-Side Apply to avoid CRD annotation size limits:
1717

1818
```sh
1919
## Install the latest release -
20-
kubectl apply -f https://raw.githubusercontent.com/feast-dev/feast/refs/heads/stable/infra/feast-operator/dist/install.yaml
20+
kubectl apply --server-side --force-conflicts -f https://raw.githubusercontent.com/feast-dev/feast/refs/heads/stable/infra/feast-operator/dist/install.yaml
2121

2222
## OR, install a specific version -
23-
# kubectl apply -f https://raw.githubusercontent.com/feast-dev/feast/refs/tags/<version>/infra/feast-operator/dist/install.yaml
23+
# kubectl apply --server-side --force-conflicts -f https://raw.githubusercontent.com/feast-dev/feast/refs/tags/<version>/infra/feast-operator/dist/install.yaml
2424
```
25+
26+
> **NOTE**: Server-Side Apply (`--server-side`) is required because the CRD includes both v1alpha1 and v1 API versions, making it too large for the standard `kubectl apply` annotation limit. If you encounter annotation size errors, use `--server-side --force-conflicts` flags.
2527
##### Feast Operator Demo Videos
2628
[![](https://img.youtube.com/vi/48cb4AHxPR4/0.jpg)](https://www.youtube.com/playlist?list=PLPzVNzik7rsAN-amQLZckd0so3cIr7blX)
2729

0 commit comments

Comments
 (0)