如果秘密已经存在,则阻止创建秘密
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"
目前我设置了以下秘密:
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"