问题描述
目前我设置了以下秘密:
apiVersion: v1
kind: Secret
Metadata:
name: my-repository-key
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: {{ template "imagePullSecret" . }}
不幸的是,我有 2 个使用相同密钥的子图,这在我尝试使用 helm 安装它们时出现问题。
根据 stackoverflow 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"