有一个“类似”的问题暗示了当用作秘密或配置映射时在 helm 图表中自动生成 uuid 的可能性。我正在尝试这样做,但每次我都会得到一个新的 uuid。 我的测试用例:
---
{{- $config := (lookup "v1" "ConfigMap" .Release.Namespace "{{ .Release.Name }}-testcase") -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ .Release.Name }}-testcase"
namespace: "{{ .Release.Namespace }}"
labels:
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
data:
{{- if $config }}
TEST_VALUE: {{ $config.data.TEST_VALUE | quote }}
{{- else }}
TEST_VALUE: {{ uuidv4 | quote }}
{{ end }}
我最初部署它:
helm upgrade --install --namespace test mytest .
如果我再次运行它,或者使用
helm diff upgrade --namespace test mytest .
运行,我会得到
TEST_VALUE
的新值。当我转储 $config
的内容时,它是一张空地图 {}
。我使用的是 Helm v3.9.0,kubectl 1.24,kube 服务器是 1.22。
注意:我无法在其他帖子的评论中提问,因为我没有足够的声誉。
使配置映射正常工作的一种方法是在有条件地设置值之前将其保存为变量。这意味着每次升级时,您都会生成一个通常不会使用的 UUID,但这并不引人注目。
分配现有值时,
:=
应变为
=
。另外,不要忘记在清单中 b64enc 您的值{{- $config := uuidv4 | b64enc | quote -}}
{{- $config_lookup := (lookup "v1" "ConfigMap" .Release.Namespace "{{ .Release.Name }}-testcase") -}}
{{- if $config_lookup -}}
{{- $config = $config_lookup.data.TEST_VALUE -}}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ .Release.Name }}-testcase"
namespace: "{{ .Release.Namespace }}"
labels:
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
app.kubernetes.io/instance: "{{ .Release.Name }}"
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
data:
TEST_VALUE: {{ $config | quote }}