helm 安装与 helm 卸载 - .Release.IsInstall 变量

问题描述 投票:0回答:1

我目前在我的 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
。基本上我试图检测用户是否正在执行安装/卸载。也许我应该使用另一个变量。

提前致谢。

kubernetes-helm helm3
1个回答
0
投票

.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
© www.soinside.com 2019 - 2024. All rights reserved.