我有一个values.yaml文件:
secret:
- name: secret__1
value: secret1
- name: secret__2
value: secret2
- name: secret__3
value: secret3
- name: secret__4
value: secret4
有超过 20 个名称、值对。 如何使用 helm set 命令来实现此目的?
从技术上讲,可以使用
helm install --set
指定每个单独的值,但这将成为一个非常长的命令行,并且您将非常依赖于图表的 values.yaml
文件中选项的实际顺序。另请参阅 Helm 文档中的 --set
的格式和限制。
helm install some-release . \
--set 'secret[0].value=password1' \
--set 'secret[1].value=credential2' \
...
--set 'secret[19].value=secret20'
您可以使用数组索引语法
--set
字符串数组的值,或 --set
对象中的单个字段,但不能 --set
复杂对象的值或 --set
对象数组.
一种更简单的方法是将这些值放入单独的 YAML 文件中,并使用附加
helm install -f
选项提供它们。
# local-secrets.yaml
secret:
- name: secret__1
value: password1
- name: secret__2
value: credential2
...
- name: secret__20
value: secret20
helm install some-release . -f local-secrets.yaml
此值会覆盖图表
secrets:
文件中的 values.yaml
;使用正常的 Helm .Values
语法可以看到它的值。该文件不需要专门签入源代码管理,例如,如果您的 CD 系统可能在部署时生成该文件。