头盔忽略安装前挂钩失败

问题描述

我有一个预安装挂钩,它可以创建动态PVC,看起来像这样

kind: PersistentVolumeClaim
metadata:
  name: my-dynamic-pv
  annotations:
    "helm.sh/resource-policy": keep
    "helm.sh/hook": "pre-install"
spec:
  storageClassName: {{ .Values.persistence.storageClass }}
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

我想在重新启动期间保留相同的PVC,这就是我提供"helm.sh/resource-policy": keep的原因。第一次启动服务时,我可以使用预安装挂钩创建PVC。但是随后的安装/重新启动失败,错误为Error: persistentvolumeclaims "my-dynamic-pv" already exists

是否可以忽略此故障并继续进行头盔安装?

解决方法

--no-hooks命令使用helm标志来忽略钩子。

$ helm install --help | grep "no-hooks"
     
 --no-hooks                     prevent hooks from running during install

$ helm install <NAME> <CHART> --no-hooks
,

您可以使用helm lookup函数在创建PVC之前检查其是否存在。

{{- $mypvc := (lookup "v1" "PersistentVolumeClaim" .Release.Namespace (printf "my- 
dynamic-pv")) }}
{{- if not $mypvc }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: my-dynamic-pv
  annotations:
    "helm.sh/resource-policy": keep
    "helm.sh/hook": "pre-install"
spec:
  storageClassName: {{ .Values.persistence.storageClass }}
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
{{- end -}}

有关头盔查找功能的更多信息-Helm template functions

我正在使用头盔3.2.1。您可能需要一个近距离版本才能使用查找功能。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...