@@ -295,6 +295,51 @@ undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/confi
295295 $(KUSTOMIZE ) build config/default/k8s | \
296296 kubectl delete --ignore-not-found=$(ignore-not-found ) -f -
297297
298+ # #@ Helm Deployment
299+
300+ HELM_CHART_DIR := manifests/helm/kepler-operator
301+ HELM_RELEASE_NAME ?= kepler-operator
302+ HELM_NAMESPACE ?= kepler-operator
303+ HELM_TIMEOUT ?= 2m
304+
305+ .PHONY : helm-template
306+ helm-template : helm manifests # # Generate manifests from Helm chart
307+ $(HELM ) template $(HELM_RELEASE_NAME ) $(HELM_CHART_DIR ) \
308+ --namespace $(HELM_NAMESPACE ) \
309+ --set operator.image=$(OPERATOR_IMG ) \
310+ --set kepler.image=$(KEPLER_IMG ) \
311+ --set kube-rbac-proxy.image=$(KUBE_RBAC_PROXY_IMG )
312+
313+ .PHONY : helm-install
314+ helm-install : helm manifests helm-sync-crds # # Install operator via Helm
315+ $(HELM ) upgrade --install $(HELM_RELEASE_NAME ) $(HELM_CHART_DIR ) \
316+ --namespace $(HELM_NAMESPACE ) \
317+ --create-namespace \
318+ --set operator.image=$(OPERATOR_IMG ) \
319+ --set kepler.image=$(KEPLER_IMG ) \
320+ --set kube-rbac-proxy.image=$(KUBE_RBAC_PROXY_IMG ) \
321+ --timeout $(HELM_TIMEOUT ) \
322+ --wait
323+
324+ .PHONY : helm-uninstall
325+ helm-uninstall : helm # # Uninstall operator via Helm
326+ $(HELM ) uninstall $(HELM_RELEASE_NAME ) --namespace $(HELM_NAMESPACE )
327+
328+ .PHONY : helm-package
329+ helm-package : helm manifests helm-sync-crds # # Package the Helm chart
330+ $(HELM ) package $(HELM_CHART_DIR ) --destination tmp/
331+
332+ .PHONY : helm-sync-crds
333+ helm-sync-crds : # # Sync CRDs from config/crd/bases to Helm chart
334+ @mkdir -p $(HELM_CHART_DIR ) /crds
335+ cp config/crd/bases/* .yaml $(HELM_CHART_DIR ) /crds/
336+ @echo " ✅ CRDs synced to Helm chart"
337+
338+ .PHONY : helm-validate
339+ helm-validate : kustomize helm yq # # Validate Helm chart (syntax, templates, CRD sync, resources)
340+ @echo " Validating Helm chart against kustomize..."
341+ ./hack/helm/validate.sh
342+
298343# #@ Build Dependencies
299344
300345# # Location where binaries are installed
@@ -304,11 +349,13 @@ LOCALBIN ?= $(shell pwd)/tmp/bin
304349KUSTOMIZE ?= $(LOCALBIN ) /kustomize
305350CONTROLLER_GEN ?= $(LOCALBIN ) /controller-gen
306351CRDOC ?= $(LOCALBIN ) /crdoc
352+ HELM ?= $(LOCALBIN ) /helm
307353
308354# NOTE: please keep this list sorted so that it can be easily searched
309355TOOLS = controller-gen \
310356 crdoc \
311357 govulncheck \
358+ helm \
312359 jq \
313360 kubectl \
314361 kustomize \
0 commit comments