apiVersion: v1 kind: ConfigMap metadata: name: "{{ .Release.Name }}-ks-crds-pre-upgrade-scripts" annotations: "helm.sh/hook": pre-upgrade "helm.sh/hook-weight": "-1" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded data: {{ (.Files.Glob "scripts/install.sh").AsConfig | indent 2 }} {{ (.Files.Glob "crds/*").AsConfig | indent 2 }} --- apiVersion: v1 kind: ServiceAccount metadata: name: "{{ .Release.Name }}-pre-upgrade-crd" annotations: "helm.sh/hook": pre-upgrade "helm.sh/hook-weight": "-1" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: "{{ .Release.Name }}-pre-upgrade-crd" annotations: "helm.sh/hook": pre-upgrade "helm.sh/hook-weight": "-1" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: "{{ .Release.Name }}-pre-upgrade-crd" namespace: {{ .Release.Namespace }} --- apiVersion: batch/v1 kind: Job metadata: name: "{{ .Release.Name }}-ks-crds-pre-upgrade" annotations: "helm.sh/hook": pre-upgrade "helm.sh/hook-weight": "10" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed spec: template: spec: restartPolicy: Never serviceAccountName: "{{ .Release.Name }}-pre-upgrade-crd" {{- if .Values.global.imagePullSecrets }} imagePullSecrets: {{ toYaml .Values.global.imagePullSecrets | nindent 8 }} {{- end }} containers: - name: crd-install image: {{ template "kubectl.image" . }} command: - /bin/bash - /scripts/install.sh - /scripts volumeMounts: - mountPath: /scripts name: scripts volumes: - name: scripts configMap: name: "{{ .Release.Name }}-ks-crds-pre-upgrade-scripts" defaultMode: 420