【问题标题】:Append release timestamp to helm template name将发布时间戳附加到 helm 模板名称
【发布时间】:2019-01-28 19:51:09
【问题描述】:

我正在努力寻找一种方法来将 Release.Time 内置作为 helm 名称的一部分。

如果我只是将其包含为: name: {{ template "myapp.name" . }}-{{ .Release.Time }}

试运行显示: name: myapp-seconds:1534946206 nanos:143228281

这似乎是一个 *timestamp.Timestamp 对象或其他东西,因为 {{ .Release.Time | trimPrefix "seconds:" | trunc 10 }} 输出 wrong type for value; expected string; got *timestamp.Timestamp

我可以通过执行以下操作来破解字符串解析:{{ .Release.Time | toString | trimPrefix "seconds:" | trunc 10 }},但似乎我应该能够在 Timestamp 对象上调用某些东西来获取秒数。有人知道文档在哪里吗?我在https://godoc.org/github.com/Masterminds/sprig 找不到任何参考。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    要格式化时间戳,您可以使用 Sprig 文档中的 date FORMAT TIME。而且因为 .Release.Time 在 Helm 3 中被删除了,所以你必须改用 now

    {{ now | date "20060102150405" }}
    

    参考格式选项:https://golang.org/pkg/time/#Time.Format

    但由于升级,名称中包含时间戳并不是一个好主意。

    【讨论】:

    • 听你说不使用名称中的时间戳,但我实际上并没有将它用于 webapp 的名称 - 它实际上是用于仅部署一次性工作的图表的名称安装后针对堆栈运行特定的性能测试。
    • 对于像我这样不熟悉的人来说,Helm 是用 Go 语言编写的,因此他指向 Go 文档。奇怪的“20060102150405”实际上是要使用的时间格式,Go 似乎基于这个示例日期“Mon Jan 2 15:04:05 MST 2006”的时间格式,所以你只需要重写那个日期,但是你想要它是格式化。至少这是我的理解……
    • @KillerKode 谢谢你的澄清!
    • @KillerKode 很长一段时间以来,日期格式一直很难记住(分钟是小写还是大写 m ?多少个字母?它会因语言而异等),所以 Go 干脆决定放弃并选择一种格式化方法,强制您在每次格式化日期时查找文档,确保最终得到正确的格式......天才/s
    【解决方案2】:

    在我的例子中,通过添加以下注释我能够实现这一点,我还使用 helmfile 作为我的 helm 模板的包装器。

    annotations:
       deploymentTime: {{ now | date "2006-01-02T15:04:05" }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-08
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多