【问题标题】:Prevent creating a secret if it already exists防止创建已存在的机密
【发布时间】:2021-01-18 22:04:54
【问题描述】:

目前我设置了以下秘密:

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

如何防止通过查找创建?有没有更好的办法?

【问题讨论】:

  • 只是一个疯狂的猜测,你在正确的命名空间中寻找秘密吗?
  • 你见过stackoverflow.com/a/56171690/11300382 吗?正如您所提到的,查找问题仍未解决。它的调试被helm template禁用。
  • 子图如何命名秘密?通常以{{ .Release.Name }}-{{ .Chart.Name }} 开头的事物命名,并且同一版本中的不同图表之间不应有冲突。
  • @mchawre AFAIK 当您不指定一个(空字符串)时,它会搜索所有这些。
  • @DavidMaze 有趣的想法。我只是不想为每个图表创建一个秘密,因为他们可以很容易地共享一个。这是一个过去 5 年没有改变的单一存储库。

标签: kubernetes kubernetes-helm go-templates kubernetes-secrets


【解决方案1】:

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

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

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

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

或者,在命名的某些极端情况下,您可以为其添加后缀

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

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多