将 Chart.yaml 文件模板化

Tho*_*ggs 6 yaml kubernetes kubernetes-helm

我想在 Chart.yaml 文件中设置模板值。例如,version: {{ .Values.version }}代替version: 0.1.0

对于其他 yaml 文件,上面的方法也可以。但是,据我了解,Helm 对​​ Chart.yaml 的处理方式有所不同,并且Chart.yaml 文件不是通过模板引擎运行的

有人知道解决方法吗?

version: 0.1.0如果我尝试对此进行 helm lint (作为 value.yaml 文件中的条目), 我得到的实际错误是:error converting YAML to JSON: yaml: invalid map key: map[interface {}]interface {}{".Values.version":interface {}(nil)}

mda*_*iel 0

您正在向后思考问题:在模板中使用它的任何地方指定版本Chart.yaml派生版本;您不能在 中拥有动态版本,Chart.yaml因为helm repo index .不接受--set或任何此类标志,因此无法构建要上传的 tgz

因此,给定一个Chart.yaml

apiVersion: v1
name: my-awesome-chart
appVersion: 0.1.0
version: 1.2.3
Run Code Online (Sandbox Code Playgroud)

和一个Deployment.yaml模板:

{{ $myTag := .Chart.Version }}
{{/* or, you can use .Chart.AppVersion */}}
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
      - image: docker.example.com:{{ $myTag }}
        # produces: docker.example.com:1.2.3
Run Code Online (Sandbox Code Playgroud)

  • 我不知道这是如何倒退的。我猜测作者暗示每次生成新的二进制文件时应用程序版本都会发生变化。如果应用程序版本表示 Pod 中部署的软件版本,那么这是一个在 devsecops 环境中经常更改的动态数字。我根本不明白答案如何解决这个问题。 (2认同)