如果秘密已经存在,则阻止创建秘密

Prevent creating a secret if it already exists

目前我设置了以下秘密:

apiVersion: v1
kind: Secret
metadata:
  name: my-repository-key
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: {{ template "imagePullSecret" . }}

不幸的是,我有 2 个子图使用相同的秘密,当我尝试使用 helm 安装它们时会导致问题。

根据 Whosebug answer,我尝试使用以下行来防止重新创建机密:

{{- if not (lookup "v1" "Secret" "" "my-repository-key") }}

不幸的是,它没有用,我暂时无法调试查找,因为它是 impossible

如何通过查找来阻止创建?有没有更好的方法?

在 Helm 图表中,Kubernetes 对象通常使用前缀命名,该前缀是当前版本的名称加上当前图表的名称。这将使名称独一无二,即使存在声明类似秘密的相关子图。 (一个秘密非常小,在两个子图之间复制它不应该是一个操作问题。)

metadata:
  name: "{{ .Release.Name }}-{{ .Chart.Name }}-key"

如果您使用 helm create 创建了图表,则此模式很常见,因此新图表模板 includes 是生成此图表的辅助模板。如果图表只有一个秘密,您可以使用默认名称:

metadata:
  name: "{{ include "chartname.fullname" . }}"

或者,对于围绕命名的一些特殊情况,您可以为其添加后缀

metadata:
  name: "{{ include "chartname.fullname" . }}-key"