我需要将相同的 helm Chart 安装到不同的命名空间,因此多次。该图表包含集群范围的资源,例如 ClusterRoles 或 CustomResourceDefinitions。
问题是我只能安装一次,第二次出现“已经存在,不受helm管理”错误。
我尝试过的:
{{- $crds := lookup "apiextensions.k8s.io/v1" "CustomResourceDefinition" .Release.Namespace "path.to.new.crd" -}}
{{- if not $crds -}}
{{- end }}
但这也不理想,因为如果我将同一个头盔安装到同一个命名空间两次,资源就会被删除,第三次它们再次出现,第四次它们消失,依此类推。
有人对此有更优雅的解决方案吗?
即使删除图表,也保留使用
"helm.sh/resource-policy": keep
创建的第一个资源
{{- $priorityClassExists := lookup "scheduling.k8s.io/v1" "PriorityClass" "" .Values.global.priority.high }}
{{- if not $priorityClassExists }}
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
annotations:
"helm.sh/resource-policy": keep
name: {{ .Values.global.priority.high }}
value: 1000000
globalDefault: false
description: "This priority class should be used for critical things only."
{{- end }}