Skip to content

Commit d31d133

Browse files
committed
feat(operator chart): add helmify to feast-operator's Makefile; generate chart from kustomize; set chart version
Signed-off-by: matt <[email protected]>
1 parent 8e9e390 commit d31d133

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

infra/feast-operator/Makefile

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,8 @@ build-installer: manifests generate-ref kustomize related-image-fs ## Generate a
191191
mkdir -p dist
192192
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
193193
$(KUSTOMIZE) build config/default > dist/install.yaml
194+
# Generate dynamic Helm chart as part of release build flow
195+
$(MAKE) helm-generate
194196

195197
##@ Deployment
196198

@@ -231,6 +233,7 @@ CRD_REF_DOCS ?= $(LOCALBIN)/crd-ref-docs
231233
ENVTEST ?= $(LOCALBIN)/setup-envtest
232234
GOLANGCI_LINT = $(LOCALBIN)/golangci-lint
233235
ENVSUBST = $(LOCALBIN)/envsubst
236+
HELMIFY ?= $(LOCALBIN)/helmify
234237

235238
## Tool Versions
236239
KUSTOMIZE_VERSION ?= v5.4.2
@@ -239,6 +242,7 @@ CRD_REF_DOCS_VERSION ?= v0.1.0
239242
ENVTEST_VERSION ?= release-0.18
240243
GOLANGCI_LINT_VERSION ?= v1.59.1
241244
ENVSUBST_VERSION ?= v1.4.2
245+
HELMIFY_VERSION ?= v0.4.18
242246

243247
.PHONY: kustomize
244248
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
@@ -265,6 +269,11 @@ envsubst: $(ENVSUBST) ## Download envsubst locally if necessary.
265269
$(ENVSUBST): $(LOCALBIN)
266270
$(call go-install-tool,$(ENVSUBST),github.com/a8m/envsubst/cmd/envsubst,$(ENVSUBST_VERSION))
267271

272+
.PHONY: helmify
273+
helmify: $(HELMIFY) ## Download helmify locally if necessary.
274+
$(HELMIFY): $(LOCALBIN)
275+
$(call go-install-tool,$(HELMIFY),github.com/arttor/helmify/cmd/helmify,$(HELMIFY_VERSION))
276+
268277
# go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist
269278
# $1 - target path with name of binary (ideally with version)
270279
# $2 - package url which can be installed
@@ -367,3 +376,44 @@ catalog-push: ## Push a catalog image.
367376
.PHONY: related-image-fs
368377
related-image-fs: envsubst
369378
FS_IMG=$(FS_IMG) CJ_IMG=$(CJ_IMG) $(ENVSUBST) < config/default/related_image_fs_patch.tmpl > config/default/related_image_fs_patch.yaml
379+
380+
##@ Helm chart (operator)
381+
382+
.PHONY: chart-verify-crd
383+
chart-verify-crd: ## Verify Helm chart CRD matches generated CRD (ignoring Helm gate)
384+
@diff -u \
385+
<(grep -v '^{{-' ../charts/feast-operator/templates/crd.yaml | sed '/^---$$/d;/^[[:space:]]*$$/d') \
386+
<(sed '/^---$$/d;/^[[:space:]]*$$/d' config/crd/bases/feast.dev_featurestores.yaml)
387+
388+
.PHONY: chart-sync-crd
389+
chart-sync-crd: ## Sync generated CRD into Helm chart (wrapped in Values.crds.install)
390+
@{ \
391+
echo "{{- if .Values.crds.install }}"; \
392+
echo; \
393+
cat config/crd/bases/feast.dev_featurestores.yaml; \
394+
echo; \
395+
echo "{{- end }}"; \
396+
} > ../charts/feast-operator/templates/crd.yaml
397+
398+
.PHONY: chart-verify
399+
chart-verify: chart-verify-crd ## Aggregate chart checks (extend as needed)
400+
401+
##@ Dynamic Helm chart generation
402+
403+
HELM_CHART_DIR ?= ../charts
404+
HELM_CHART_NAME ?= feast-operator
405+
406+
.PHONY: helm-generate
407+
helm-generate: kustomize helmify related-image-fs ## Generate Helm chart dynamically from kustomize output
408+
@echo "Generating dynamic Helm chart..."
409+
@rm -rf $(HELM_CHART_DIR)/$(HELM_CHART_NAME)
410+
$(KUSTOMIZE) build config/default | $(HELMIFY) -crd-dir $(HELM_CHART_NAME)
411+
@mv $(HELM_CHART_NAME) $(HELM_CHART_DIR)/
412+
@echo "Dynamic Helm chart generated at $(HELM_CHART_DIR)/$(HELM_CHART_NAME)"
413+
@echo "Chart replaces the manually maintained chart - review and commit changes"
414+
415+
.PHONY: helm-package
416+
helm-package: helm-generate ## Package the dynamically generated Helm chart
417+
@echo "Packaging Helm chart..."
418+
@helm package $(HELM_CHART_DIR)/$(HELM_CHART_NAME) --destination ./dist/
419+
@echo "Helm chart packaged in ./dist/"

0 commit comments

Comments
 (0)