如何通过helm --set传值

问题描述 投票:0回答:1

我有一个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 命令来实现此目的?

kubernetes-helm
1个回答
0
投票

从技术上讲,可以使用

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 系统可能在部署时生成该文件。

© www.soinside.com 2019 - 2024. All rights reserved.