我目前在我的 helm 图表中使用 helm
.Release.IsInstall
变量 https://helm.sh/docs/chart_template_guide/builtin_objects/。这是我的代码片段:
{{- if .Release.IsInstall }}
command: [ "python", "main.py", "install"]
{{- else }}
command: [ "python", "main.py", "delete"]
{{- end }}
但是,无论我运行
helm install
还是helm uninstall
,似乎.Release.IsInstall
都会返回一个布尔值true
。基本上我试图检测用户是否正在执行安装/卸载。也许我应该使用另一个变量。
提前致谢。
.Release.IsInstall
仅在安装过程中起作用。当您运行 helm uninstall,
时,不会评估 Helm 图表模板,因此该变量在该上下文中不相关。因此,您无法直接使用 .Release.IsInstall
来检测卸载操作。
由于 Helm 不会在卸载时评估模板,因此使用图表模板传递不同的卸载命令并不简单。
处理此问题的一种常见方法是使用 Helm
pre-uninstall
和 post-uninstall
钩子。您可以定义在卸载过程之前或之后运行的特定作业或 Pod,例如,您可以使用 pre-delete
挂钩在删除图表之前执行操作,使用 post-delete
执行删除图表之后的操作。
kind: Job
apiVersion: batch/v1
metadata:
name: "{{ .Release.Name }}-pre-delete"
annotations:
"helm.sh/hook": pre-delete
spec:
template:
spec:
containers:
- name: pre-delete
image: python:3.8
command: ["python", "main.py", "delete"]
restartPolicy: Never