From 23a8b3d1dd24e01bca1fb657ebcb2a85fd001a4f Mon Sep 17 00:00:00 2001 From: Anna Kapuscinska Date: Wed, 5 Jun 2024 11:27:38 +0100 Subject: [PATCH] helm: Template CRDs directly to get standard k8s labels So far CRDs were included in the Helm chart like this: 1. Copy into crds-yaml directory 2. Concatenate in a template using .Files.Get With such approach, Helm doesn't add standard k8s "app.kubernetes.io/*" labels (e.g. version, managed-by) to CRDs like it does for other resources. Having these labels is useful from the operational perspective, so this commit changes how CRDs are included in the Helm chart. It now works like this: 1. Copy inside the templates directory 2. Wrap each CRD in an if block to check if it should be included Signed-off-by: Anna Kapuscinska --- .../docs/contribution-guide/making-changes.md | 2 +- install/kubernetes/Makefile | 19 ++++++++++++------- .../kubernetes/tetragon/templates/crds.yaml | 6 ------ .../crds}/cilium.io_podinfo.yaml | 2 ++ .../crds}/cilium.io_tracingpolicies.yaml | 2 ++ .../cilium.io_tracingpoliciesnamespaced.yaml | 2 ++ 6 files changed, 19 insertions(+), 14 deletions(-) delete mode 100644 install/kubernetes/tetragon/templates/crds.yaml rename install/kubernetes/tetragon/{crds-yaml => templates/crds}/cilium.io_podinfo.yaml (98%) rename install/kubernetes/tetragon/{crds-yaml => templates/crds}/cilium.io_tracingpolicies.yaml (99%) rename install/kubernetes/tetragon/{crds-yaml => templates/crds}/cilium.io_tracingpoliciesnamespaced.yaml (99%) diff --git a/docs/content/en/docs/contribution-guide/making-changes.md b/docs/content/en/docs/contribution-guide/making-changes.md index d278937b416..d1004237e5c 100644 --- a/docs/content/en/docs/contribution-guide/making-changes.md +++ b/docs/content/en/docs/contribution-guide/making-changes.md @@ -75,7 +75,7 @@ these files (`pkg/k8s/`), you need to run code generation: ```shell make crds -make -C install/kubernetes tetragon/crds-yaml +make -C install/kubernetes tetragon/templates/crds ``` ## Making changes to Helm chart diff --git a/install/kubernetes/Makefile b/install/kubernetes/Makefile index 36f0d78d3d7..0d061ab5e7f 100644 --- a/install/kubernetes/Makefile +++ b/install/kubernetes/Makefile @@ -15,7 +15,7 @@ CRDS := $(REPO_ROOT)/pkg/k8s/apis/cilium.io/client/crds/v1alpha1 HELM ?= docker run --rm -v ./$(TETRAGON_CHART):/apps $(HELM_IMAGE) .PHONY: all -all: deps $(TETRAGON_CHART)/crds-yaml lint docs +all: deps $(TETRAGON_CHART)/templates/crds lint docs .PHONY: deps deps: @@ -32,11 +32,16 @@ docs: ./export-doc.sh $(REPO_ROOT)/docs/content/en/docs/reference/helm-chart.md # NB: Helm has an "official" way to install CRDs which requires simply putting -# them in the crds directory. This method doesn't prevents accidental deletion +# them in the top-level crds directory. This method prevents accidental deletion # of custom resources, because it doesn't delete CRDs when the chart is # uninstalled. However, it doesn't support CRD upgrades, which is why we opt to -# install CRDs alongside other resources. This means we can't put them in the -# crds directory, so we name in crds-yaml instead. -.PHONY: $(TETRAGON_CHART)/crds-yaml -$(TETRAGON_CHART)/crds-yaml: $(CRDS) - cp -rf $(CRDS)/. $(TETRAGON_CHART)/crds-yaml +# install CRDs alongside other resources. +.PHONY: $(TETRAGON_CHART)/templates/crds +$(TETRAGON_CHART)/templates/crds: $(CRDS) + mkdir -p $@ + for file in $(CRDS)/*.yaml; do \ + template_file="$@/$$(basename $$file)"; \ + echo "{{- if eq .Values.crds.installMethod \"helm\" }}" > "$$template_file"; \ + cat "$$file" >> "$$template_file"; \ + echo "{{- end }}" >> "$$template_file"; \ + done diff --git a/install/kubernetes/tetragon/templates/crds.yaml b/install/kubernetes/tetragon/templates/crds.yaml deleted file mode 100644 index 5d6560375f1..00000000000 --- a/install/kubernetes/tetragon/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if eq .Values.crds.installMethod "helm" }} -{{- range $path, $_ := .Files.Glob "crds-yaml/*.yaml" }} ---- -{{ $.Files.Get $path }} -{{- end }} -{{- end }} diff --git a/install/kubernetes/tetragon/crds-yaml/cilium.io_podinfo.yaml b/install/kubernetes/tetragon/templates/crds/cilium.io_podinfo.yaml similarity index 98% rename from install/kubernetes/tetragon/crds-yaml/cilium.io_podinfo.yaml rename to install/kubernetes/tetragon/templates/crds/cilium.io_podinfo.yaml index 776419be4f7..2bcdf4a30dc 100644 --- a/install/kubernetes/tetragon/crds-yaml/cilium.io_podinfo.yaml +++ b/install/kubernetes/tetragon/templates/crds/cilium.io_podinfo.yaml @@ -1,3 +1,4 @@ +{{- if eq .Values.crds.installMethod "helm" }} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -93,3 +94,4 @@ status: plural: "" conditions: [] storedVersions: [] +{{- end }} diff --git a/install/kubernetes/tetragon/crds-yaml/cilium.io_tracingpolicies.yaml b/install/kubernetes/tetragon/templates/crds/cilium.io_tracingpolicies.yaml similarity index 99% rename from install/kubernetes/tetragon/crds-yaml/cilium.io_tracingpolicies.yaml rename to install/kubernetes/tetragon/templates/crds/cilium.io_tracingpolicies.yaml index f8699a4f451..11cc6723119 100644 --- a/install/kubernetes/tetragon/crds-yaml/cilium.io_tracingpolicies.yaml +++ b/install/kubernetes/tetragon/templates/crds/cilium.io_tracingpolicies.yaml @@ -1,3 +1,4 @@ +{{- if eq .Values.crds.installMethod "helm" }} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -2027,3 +2028,4 @@ status: plural: "" conditions: [] storedVersions: [] +{{- end }} diff --git a/install/kubernetes/tetragon/crds-yaml/cilium.io_tracingpoliciesnamespaced.yaml b/install/kubernetes/tetragon/templates/crds/cilium.io_tracingpoliciesnamespaced.yaml similarity index 99% rename from install/kubernetes/tetragon/crds-yaml/cilium.io_tracingpoliciesnamespaced.yaml rename to install/kubernetes/tetragon/templates/crds/cilium.io_tracingpoliciesnamespaced.yaml index 19b141f0b64..d7e9f12e708 100644 --- a/install/kubernetes/tetragon/crds-yaml/cilium.io_tracingpoliciesnamespaced.yaml +++ b/install/kubernetes/tetragon/templates/crds/cilium.io_tracingpoliciesnamespaced.yaml @@ -1,3 +1,4 @@ +{{- if eq .Values.crds.installMethod "helm" }} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -2027,3 +2028,4 @@ status: plural: "" conditions: [] storedVersions: [] +{{- end }}