Skip to content

Commit 474b3cd

Browse files
committed
feat(marketplace): add post-delete job to remove all SpinKube CRDs and delete namespace
Signed-off-by: Vaughn Dice <[email protected]>
1 parent fbdc434 commit 474b3cd

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
apiVersion: batch/v1
2+
kind: Job
3+
metadata:
4+
name: "{{ .Release.Name }}-post-delete"
5+
labels:
6+
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
7+
app.kubernetes.io/instance: {{ .Release.Name | quote }}
8+
app.kubernetes.io/version: {{ .Chart.AppVersion }}
9+
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
10+
annotations:
11+
"helm.sh/hook": post-delete
12+
"helm.sh/hook-weight": "3"
13+
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
14+
spec:
15+
template:
16+
metadata:
17+
name: "{{ .Release.Name }}"
18+
labels:
19+
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
20+
app.kubernetes.io/instance: {{ .Release.Name | quote }}
21+
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
22+
spec:
23+
restartPolicy: Never
24+
serviceAccountName: {{ .Release.Name }}-post-delete
25+
containers:
26+
- name: post-delete-job
27+
image: {{ printf "%s/%s:%s" .Values.global.azure.images.kubectl.registry .Values.global.azure.images.kubectl.image .Values.global.azure.images.kubectl.tag }}
28+
imagePullPolicy: IfNotPresent
29+
env:
30+
- name: RELEASE_NAMESPACE
31+
value: {{ .Release.Namespace }}
32+
command: ["/bin/sh", "-c"]
33+
args:
34+
- |-
35+
# Delete spin-operator CRDs
36+
kubectl delete customresourcedefinition.apiextensions.k8s.io/spinapps.core.spinoperator.dev
37+
kubectl delete customresourcedefinition.apiextensions.k8s.io/spinappexecutors.core.spinoperator.dev
38+
39+
# Delete cert-manager CRDs
40+
kubectl delete customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io
41+
kubectl delete customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io
42+
kubectl delete customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io
43+
kubectl delete customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io
44+
kubectl delete customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io
45+
kubectl delete customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io
46+
47+
# Delete the namespace
48+
# Note: Helm won't delete the release namespace resource when deleting a release.
49+
kubectl delete ns "${RELEASE_NAMESPACE}"
50+
---
51+
apiVersion: v1
52+
kind: ServiceAccount
53+
metadata:
54+
name: {{ .Release.Name }}-post-delete
55+
labels:
56+
app.kubernetes.io/component: rbac
57+
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
58+
app.kubernetes.io/instance: {{ .Release.Name | quote }}
59+
app.kubernetes.io/version: {{ .Chart.AppVersion }}
60+
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
61+
annotations:
62+
"helm.sh/hook": post-delete
63+
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
64+
"helm.sh/hook-weight": "1"
65+
---
66+
apiVersion: rbac.authorization.k8s.io/v1
67+
kind: ClusterRole
68+
metadata:
69+
name: {{ .Release.Name }}-post-delete-role
70+
labels:
71+
app.kubernetes.io/component: rbac
72+
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
73+
app.kubernetes.io/instance: {{ .Release.Name | quote }}
74+
app.kubernetes.io/version: {{ .Chart.AppVersion }}
75+
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
76+
annotations:
77+
"helm.sh/hook": post-delete
78+
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
79+
"helm.sh/hook-weight": "1"
80+
rules:
81+
- apiGroups:
82+
- apiextensions.k8s.io
83+
resources:
84+
- customresourcedefinitions
85+
verbs:
86+
- list
87+
- delete
88+
- apiGroups:
89+
- ""
90+
resources:
91+
- namespaces
92+
verbs:
93+
- list
94+
- delete
95+
---
96+
apiVersion: rbac.authorization.k8s.io/v1
97+
kind: ClusterRoleBinding
98+
metadata:
99+
name: '{{ .Release.Name }}-post-delete-rolebinding'
100+
labels:
101+
app.kubernetes.io/component: rbac
102+
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
103+
app.kubernetes.io/instance: {{ .Release.Name | quote }}
104+
app.kubernetes.io/version: {{ .Chart.AppVersion }}
105+
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
106+
annotations:
107+
"helm.sh/hook": post-delete
108+
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
109+
"helm.sh/hook-weight": "2"
110+
roleRef:
111+
apiGroup: rbac.authorization.k8s.io
112+
kind: ClusterRole
113+
name: '{{ .Release.Name }}-post-delete-role'
114+
subjects:
115+
- kind: ServiceAccount
116+
name: '{{ .Release.Name }}-post-delete'
117+
namespace: '{{ .Release.Namespace }}'

0 commit comments

Comments
 (0)