From a6f665353fa2629ee3dfee85a761d899c211ea13 Mon Sep 17 00:00:00 2001 From: Jason Witkowski Date: Mon, 20 Feb 2023 10:08:20 -0500 Subject: [PATCH] feat: Add option to keep CRDs when helm chart is uninstalled Signed-off-by: Jason Witkowski --- deploy/charts/cert-manager/README.template.md | 12 +++++++++++- deploy/charts/cert-manager/templates/_preflight.tpl | 9 +++++++++ deploy/charts/cert-manager/values.yaml | 8 ++++++-- deploy/crds/crd-certificaterequests.yaml | 3 +++ deploy/crds/crd-certificates.yaml | 3 +++ deploy/crds/crd-challenges.yaml | 3 +++ deploy/crds/crd-clusterissuers.yaml | 4 ++++ deploy/crds/crd-issuers.yaml | 3 +++ deploy/crds/crd-orders.yaml | 3 +++ 9 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 deploy/charts/cert-manager/templates/_preflight.tpl diff --git a/deploy/charts/cert-manager/README.template.md b/deploy/charts/cert-manager/README.template.md index d39d3101d..37657b077 100644 --- a/deploy/charts/cert-manager/README.template.md +++ b/deploy/charts/cert-manager/README.template.md @@ -170,7 +170,17 @@ The duration the clients should wait between attempting acquisition and renewal > false > ``` -Install the cert-manager CRDs, it is recommended to not use Helm to manage the CRDs. +This method of CRDs installation will be deprecated in future releases. It is mutually exclusive with crds.install and crds.keep=true +#### **crds.install** ~ `bool` +> Default value: +> ```yaml +> false +> ``` +#### **crds.keep** ~ `bool` +> Default value: +> ```yaml +> false +> ``` ### Controller #### **replicaCount** ~ `number` diff --git a/deploy/charts/cert-manager/templates/_preflight.tpl b/deploy/charts/cert-manager/templates/_preflight.tpl new file mode 100644 index 000000000..f1418d096 --- /dev/null +++ b/deploy/charts/cert-manager/templates/_preflight.tpl @@ -0,0 +1,9 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "cert-manager.preflight" -}} + {{- if and (.Values.installCRDs) (or (.Values.crds.install) (.Values.crds.keep)) }} + {{- fail "ERROR: Cannot set both .Values.installCRDs and .Values.crds.install" }} + {{- end }} +{{- end -}} diff --git a/deploy/charts/cert-manager/values.yaml b/deploy/charts/cert-manager/values.yaml index cf04369e9..86371ec53 100644 --- a/deploy/charts/cert-manager/values.yaml +++ b/deploy/charts/cert-manager/values.yaml @@ -67,10 +67,14 @@ global: # +docs:property # retryPeriod: 15s -# Install the cert-manager CRDs, it is recommended to not use Helm to manage -# the CRDs. +# This method of CRDs installation will be deprecated in future releases +# It is mutually exclusive with crds.install and crds.keep=true installCRDs: false +crds: + install: false + keep: false + # +docs:section=Controller # The number of replicas of the cert-manager controller to run. diff --git a/deploy/crds/crd-certificaterequests.yaml b/deploy/crds/crd-certificaterequests.yaml index 3bec40300..44c7640c7 100644 --- a/deploy/crds/crd-certificaterequests.yaml +++ b/deploy/crds/crd-certificaterequests.yaml @@ -3,6 +3,9 @@ kind: CustomResourceDefinition metadata: name: certificaterequests.cert-manager.io labels: + {{- if .Values.crds.keep }} + "helm.sh/resource-policy": keep + {{- end }} app: '{{ template "cert-manager.name" . }}' app.kubernetes.io/name: '{{ template "cert-manager.name" . }}' app.kubernetes.io/instance: '{{ .Release.Name }}' diff --git a/deploy/crds/crd-certificates.yaml b/deploy/crds/crd-certificates.yaml index e6e9938f2..a79bd2db4 100644 --- a/deploy/crds/crd-certificates.yaml +++ b/deploy/crds/crd-certificates.yaml @@ -3,6 +3,9 @@ kind: CustomResourceDefinition metadata: name: certificates.cert-manager.io labels: + {{- if .Values.crds.keep }} + "helm.sh/resource-policy": keep + {{- end }} app: '{{ template "cert-manager.name" . }}' app.kubernetes.io/name: '{{ template "cert-manager.name" . }}' app.kubernetes.io/instance: '{{ .Release.Name }}' diff --git a/deploy/crds/crd-challenges.yaml b/deploy/crds/crd-challenges.yaml index 3d18907d7..4b2c5bf6b 100644 --- a/deploy/crds/crd-challenges.yaml +++ b/deploy/crds/crd-challenges.yaml @@ -3,6 +3,9 @@ kind: CustomResourceDefinition metadata: name: challenges.acme.cert-manager.io labels: + {{- if .Values.crds.keep }} + "helm.sh/resource-policy": keep + {{- end }} app: '{{ template "cert-manager.name" . }}' app.kubernetes.io/name: '{{ template "cert-manager.name" . }}' app.kubernetes.io/instance: '{{ .Release.Name }}' diff --git a/deploy/crds/crd-clusterissuers.yaml b/deploy/crds/crd-clusterissuers.yaml index 8d850f68a..f60fbf792 100644 --- a/deploy/crds/crd-clusterissuers.yaml +++ b/deploy/crds/crd-clusterissuers.yaml @@ -1,8 +1,12 @@ +{{- include "cert-manager.preflight" . }} apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: clusterissuers.cert-manager.io labels: + {{- if .Values.crds.keep }} + "helm.sh/resource-policy": keep + {{- end }} app: '{{ template "cert-manager.name" . }}' app.kubernetes.io/name: '{{ template "cert-manager.name" . }}' app.kubernetes.io/instance: "{{ .Release.Name }}" diff --git a/deploy/crds/crd-issuers.yaml b/deploy/crds/crd-issuers.yaml index 924181324..f0602811e 100644 --- a/deploy/crds/crd-issuers.yaml +++ b/deploy/crds/crd-issuers.yaml @@ -3,6 +3,9 @@ kind: CustomResourceDefinition metadata: name: issuers.cert-manager.io labels: + {{- if .Values.crds.keep }} + "helm.sh/resource-policy": keep + {{- end }} app: '{{ template "cert-manager.name" . }}' app.kubernetes.io/name: '{{ template "cert-manager.name" . }}' app.kubernetes.io/instance: "{{ .Release.Name }}" diff --git a/deploy/crds/crd-orders.yaml b/deploy/crds/crd-orders.yaml index 960699094..9b22b1746 100644 --- a/deploy/crds/crd-orders.yaml +++ b/deploy/crds/crd-orders.yaml @@ -3,6 +3,9 @@ kind: CustomResourceDefinition metadata: name: orders.acme.cert-manager.io labels: + {{- if .Values.crds.keep }} + "helm.sh/resource-policy": keep + {{- end }} app: '{{ template "cert-manager.name" . }}' app.kubernetes.io/name: '{{ template "cert-manager.name" . }}' app.kubernetes.io/instance: '{{ .Release.Name }}'