使用集群范围资源多次安装到同一 Helm Chart 的不同命名空间

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

我需要将相同的 helm Chart 安装到不同的命名空间,因此多次。该图表包含集群范围的资源,例如 ClusterRoles 或 CustomResourceDefinitions。

问题是我只能安装一次,第二次出现“已经存在,不受helm管理”错误。

我尝试过的:

  • 将 CRD 放在单独的文件夹中效果很好,但我不能这样做,因为我的 CRD 包含 helm 值,并且 crds 文件夹不接受模板。
  • 使用这样的东西:
{{- $crds := lookup "apiextensions.k8s.io/v1" "CustomResourceDefinition" .Release.Namespace "path.to.new.crd" -}}
{{- if not $crds -}}
{{- end }}

但这也不理想,因为如果我将同一个头盔安装到同一个命名空间两次,资源就会被删除,第三次它们再次出现,第四次它们消失,依此类推。

有人对此有更优雅的解决方案吗?

kubernetes kubernetes-helm
1个回答
0
投票

即使删除图表,也保留使用

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