Helm:在父图表 configmap 中显示子图表版本

Helm: Show subchart version in parent chart configmap

我希望在我的伞形图中创建一个配置映射,包括我所有依赖关系图的版本。

UmbrellaChart (version: 1.0.0-rc.0)
|
|--- microservice1Chart (1.2.3-rc.1)
|--- microservice2Chart (3.2.1-rc.2)

配置图:

apiVersion: v1
kind: ConfigMap
metadata:
  name: versionInfo
data:
  versionInfo.js: |
    window.versionInfo = {
      app: '{{ .Chart.Version | default "unknown" }}',
      service1: '{{ ??? }}',
      service2: '{{ ??? }}',
    };

我应该用什么代替???能够包含我的子图表的版本。我希望只在 Chart.yaml 中保留我的图表的版本定义,而不必在更多地方更改它(否则我可以只复制子图表的值文件中的信息)。

似乎无法引用 .Chart.Dependencies(否则它们会在主图表中指定)。不知道能不能参考子图Chart.yaml info.

仔细看官方文档,有使用built-in对象Chart的方法helm,这里注意:

The built-in values always begin with a CAPITAL letter.

所以正确的用法如下:

Chart.yaml

apiVersion: v2
name: UmbrellaChart
description: A Helm chart for Kubernetes
type: application
version: 1.0.0-rc.0
appVersion: "1.16.0"

dependencies:
  - name: microservice1Chart
    repository: xxx
    version: 1.2.3-rc.1
  - name: microservice2Chart
    repository: xxx
    version: 3.2.1-rc.2

templates/configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: versionInfo
data:
  versionInfo.js: |
    window.versionInfo = {
      app: '{{ .Chart.Version | default "unknown" }}',
      {{- range $i, $dep := .Chart.Dependencies }}
      {{- if eq $dep.Name "microservice1Chart" }}
      service1: '{{ $dep.Version }}',
      {{- end }}
      {{- if eq $dep.Name "microservice2Chart" }}
      service2: '{{ $dep.Version }}',
      {{- end }}
      {{- end }}
    };

输出:

apiVersion: v1
kind: ConfigMap
metadata:
  name: versionInfo
data:
  versionInfo.js: |
    window.versionInfo = {
      app: '1.0.0-rc.0',
      service1: '1.2.3-rc.1',
      service2: '3.2.1-rc.2',
    };