@@ -12,26 +12,6 @@ metadata:
1212 app.kubernetes.io/version : " 0.39.0"
1313 app.kubernetes.io/managed-by : Helm
1414---
15- # Source: headlamp/templates/clusterrolebinding.yaml
16- apiVersion : rbac.authorization.k8s.io/v1
17- kind : ClusterRoleBinding
18- metadata :
19- name : headlamp-admin
20- labels :
21- helm.sh/chart : headlamp-0.39.0
22- app.kubernetes.io/name : headlamp
23- app.kubernetes.io/instance : headlamp
24- app.kubernetes.io/version : " 0.39.0"
25- app.kubernetes.io/managed-by : Helm
26- roleRef :
27- apiGroup : rbac.authorization.k8s.io
28- kind : ClusterRole
29- name : cluster-admin
30- subjects :
31- - kind : ServiceAccount
32- name : headlamp
33- namespace : default
34- ---
3515# Source: headlamp/templates/service.yaml
3616apiVersion : v1
3717kind : Service
@@ -142,3 +122,154 @@ spec:
142122 port : http
143123 resources :
144124 {}
125+ ---
126+ # Source: headlamp/templates/pre-upgrade-cleanup.yaml
127+ apiVersion : v1
128+ kind : ServiceAccount
129+ metadata :
130+ name : headlamp-pre-upgrade
131+ namespace : default
132+ labels :
133+ helm.sh/chart : headlamp-0.39.0
134+ app.kubernetes.io/name : headlamp
135+ app.kubernetes.io/instance : headlamp
136+ app.kubernetes.io/version : " 0.39.0"
137+ app.kubernetes.io/managed-by : Helm
138+ annotations :
139+ " helm.sh/hook " : pre-upgrade
140+ " helm.sh/hook-weight " : " -5"
141+ " helm.sh/hook-delete-policy " : before-hook-creation,hook-succeeded
142+ ---
143+ # Source: headlamp/templates/pre-upgrade-cleanup.yaml
144+ apiVersion : rbac.authorization.k8s.io/v1
145+ kind : ClusterRole
146+ metadata :
147+ name : headlamp-pre-upgrade
148+ labels :
149+ helm.sh/chart : headlamp-0.39.0
150+ app.kubernetes.io/name : headlamp
151+ app.kubernetes.io/instance : headlamp
152+ app.kubernetes.io/version : " 0.39.0"
153+ app.kubernetes.io/managed-by : Helm
154+ annotations :
155+ " helm.sh/hook " : pre-upgrade
156+ " helm.sh/hook-weight " : " -5"
157+ " helm.sh/hook-delete-policy " : before-hook-creation,hook-succeeded
158+ rules :
159+ - apiGroups : ["rbac.authorization.k8s.io"]
160+ resources : ["clusterrolebindings"]
161+ verbs : ["get", "delete"]
162+ ---
163+ # Source: headlamp/templates/pre-upgrade-cleanup.yaml
164+ apiVersion : rbac.authorization.k8s.io/v1
165+ kind : ClusterRoleBinding
166+ metadata :
167+ name : headlamp-pre-upgrade
168+ labels :
169+ helm.sh/chart : headlamp-0.39.0
170+ app.kubernetes.io/name : headlamp
171+ app.kubernetes.io/instance : headlamp
172+ app.kubernetes.io/version : " 0.39.0"
173+ app.kubernetes.io/managed-by : Helm
174+ annotations :
175+ " helm.sh/hook " : pre-upgrade
176+ " helm.sh/hook-weight " : " -4"
177+ " helm.sh/hook-delete-policy " : before-hook-creation,hook-succeeded
178+ roleRef :
179+ apiGroup : rbac.authorization.k8s.io
180+ kind : ClusterRole
181+ name : headlamp-pre-upgrade
182+ subjects :
183+ - kind : ServiceAccount
184+ name : headlamp-pre-upgrade
185+ namespace : default
186+ ---
187+ # Source: headlamp/templates/pre-upgrade-cleanup.yaml
188+ apiVersion : batch/v1
189+ kind : Job
190+ metadata :
191+ name : headlamp-pre-upgrade
192+ namespace : default
193+ labels :
194+ helm.sh/chart : headlamp-0.39.0
195+ app.kubernetes.io/name : headlamp
196+ app.kubernetes.io/instance : headlamp
197+ app.kubernetes.io/version : " 0.39.0"
198+ app.kubernetes.io/managed-by : Helm
199+ annotations :
200+ " helm.sh/hook " : pre-upgrade
201+ " helm.sh/hook-weight " : " -3"
202+ " helm.sh/hook-delete-policy " : before-hook-creation,hook-succeeded
203+ spec :
204+ ttlSecondsAfterFinished : 300
205+ template :
206+ metadata :
207+ name : headlamp-pre-upgrade
208+ labels :
209+ helm.sh/chart : headlamp-0.39.0
210+ app.kubernetes.io/name : headlamp
211+ app.kubernetes.io/instance : headlamp
212+ app.kubernetes.io/version : " 0.39.0"
213+ app.kubernetes.io/managed-by : Helm
214+ spec :
215+ serviceAccountName : headlamp-pre-upgrade
216+ restartPolicy : Never
217+ containers :
218+ - name : pre-upgrade-cleanup
219+ image : alpine/kubectl:1.35.0@sha256:e7e078c7bb25012141e5957d500834b2a5b266d6de20ecfa862b30d8a892fc7e
220+ command :
221+ - /bin/sh
222+ - -c
223+ - |
224+ set -e
225+ CRB_NAME="headlamp-admin"
226+ RELEASE_NAME="headlamp"
227+
228+ echo "Checking for old ClusterRoleBinding ${CRB_NAME}..."
229+
230+ if ! kubectl get clusterrolebinding "${CRB_NAME}" 2>/dev/null; then
231+ echo "ClusterRoleBinding ${CRB_NAME} not found, nothing to clean up"
232+ exit 0
233+ fi
234+
235+ echo "Found ClusterRoleBinding ${CRB_NAME}, verifying it was created by Helm..."
236+
237+ # Check if the ClusterRoleBinding has Helm labels indicating it was created by this chart
238+ MANAGED_BY=$(kubectl get clusterrolebinding "${CRB_NAME}" -o jsonpath='{.metadata.labels.app\.kubernetes\.io/managed-by}' 2>/dev/null || echo "")
239+ INSTANCE=$(kubectl get clusterrolebinding "${CRB_NAME}" -o jsonpath='{.metadata.labels.app\.kubernetes\.io/instance}' 2>/dev/null || echo "")
240+ APP_NAME=$(kubectl get clusterrolebinding "${CRB_NAME}" -o jsonpath='{.metadata.labels.app\.kubernetes\.io/name}' 2>/dev/null || echo "")
241+
242+ if [ "${MANAGED_BY}" = "Helm" ] && [ "${INSTANCE}" = "${RELEASE_NAME}" ] && [ "${APP_NAME}" = "headlamp" ]; then
243+ echo "Confirmed: ${CRB_NAME} was created by this Helm release (${RELEASE_NAME})"
244+ echo "Deleting old ClusterRoleBinding..."
245+ kubectl delete clusterrolebinding "${CRB_NAME}"
246+ echo "Successfully deleted old ClusterRoleBinding"
247+ else
248+ echo "WARNING: ${CRB_NAME} exists but was NOT created by this Helm release"
249+ echo " managed-by: ${MANAGED_BY} (expected: Helm)"
250+ echo " instance: ${INSTANCE} (expected: ${RELEASE_NAME})"
251+ echo " app: ${APP_NAME} (expected: headlamp)"
252+ echo "Skipping deletion to preserve user-created resource"
253+ fi
254+ resources :
255+ requests :
256+ cpu : 10m
257+ memory : 64Mi
258+ limits :
259+ cpu : 100m
260+ memory : 128Mi
261+
262+ securityContext :
263+ allowPrivilegeEscalation : false
264+ runAsNonRoot : true
265+ capabilities :
266+ drop :
267+ - ALL
268+ seccompProfile :
269+ type : RuntimeDefault
270+ volumeMounts :
271+ - name : tmp
272+ mountPath : /tmp
273+ volumes :
274+ - name : tmp
275+ emptyDir : {}
0 commit comments