专业编程基础技术教程

网站首页 > 基础教程 正文

helm中的 --set 命令模式

ccvgpt 2024-08-18 14:37:40 基础教程 23 ℃

helm中的--set 命令模式

使用 helm show values 可以查看 chart 中的可配置选项

helm中的 --set 命令模式

helm show values bitnami/wordpress

然后,你可以使用 YAML 格式的文件覆盖上述任意配置项,并在安装过程中使用该文件。


$ echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml

$ helm install -f values.yaml bitnami/wordpress --generate-name


上述命令将为 MariaDB 创建一个名称为 user0 的默认用户,并且授予该用户访问新建的 user0db 数据库的权限。chart 中的其他默认配置保持不变。

安装过程中有两种方式传递配置数据:

  • --values (或 -f):使用 YAML 文件覆盖配置。可以指定多次,优先使用最右边的文件。
  • --set:通过命令行的方式对指定项进行覆盖。


如果同时使用两种方式,则 --set 中的值会被合并到 --values 中,但是 --set 中的值优先级更高。在--set 中覆盖的内容会被保存在 ConfigMap 中。可以通过 helm get values 来查看指定 release 中 --set 设置的值。也可以通过运行 helm upgrade 并指定 --reset-values 字段来清除 --set 中设置的值。


--set 的格式和限制

--set 选项使用0或多个 name/value 对。最简单的用法类似于:--set name=value,等价于如下 YAML 格式:

name: value


多个值使用逗号分割,因此 --set a=b,c=d 的 YAML 表示是:

a: b

c: d


支持更复杂的表达式。例如,--set outer.inner=value 被转换成了:

outer:

inner: value


列表使用花括号({})来表示。例如,--set name={a, b, c} 被转换成了:

name:
  - a
  - b
  - c

从 2.5.0 版本开始,可以使用数组下标的语法来访问列表中的元素。例如 --set servers[0].port=80 就变成了:

servers:
  - port: 80

多个值也可以通过这种方式来设置。--set servers[0].port=80,servers[0].host=example 变成了:

servers:
  - port: 80
    host: example

如果需要在 --set 中使用特殊字符,你可以使用反斜线来进行转义;--set name=value1,value2 就变成了:

name: "value1,value2"


类似的,你也可以转义点序列(英文句号)。这可能会在 chart 使用 toYaml 函数来解析 annotations,labels,和 node selectors 时派上用场。--set nodeSelector."kubernetes.io/role"=master 语法就变成了:

nodeSelector:
  kubernetes.io/role: master

深层嵌套的数据结构可能会很难用 --set 表达。我们希望 Chart 的设计者们在设计 values.yaml 文件的格式时,考虑到 --set 的使用。(更多内容请查看 Values 文件)


Tags:

最近发表
标签列表