在通过 bitnami/memcached helm chart 安装 memcached 时想通过 extraEnv 参数(类型是数组)传递环境变量值 MEMCACHED_CACHE_SIZE=15360
,请问如何使用 helm --set
命令传参?
使用下面的命令
helm upgrade memcached1 bitnami/memcached --set extraEnv={"MEMCACHED_CACHE_SIZE=15360"}
报错
Error: UPGRADE FAILED: error validating "": error validating data: ValidationError(Deployment.spec.template.spec.containers[0].env[1]): invalid type for io.k8s.api.core.v1.EnvVar: got "string", expected "map"
在 https://github.com/helm/helm/issues/2547 的评论中找到了正确的命令:
helm upgrade memcached1 bitnami/memcached --set "extraEnv[0].name=MEMCACHED_CACHE_SIZE,extraEnv[0].value=15360"
但是执行这个命令出现新问题:
cannot unmarshal number into Go struct field EnvVar.spec.template.spec.containers.env.value of type string
github 上的相关 issue :https://github.com/helm/helm/issues/1707
如果加上双引号
helm upgrade memcached1 bitnami/memcached --set "extraEnv[0].name=MEMCACHED_CACHE_SIZE,extraEnv[0].value=\"15360\""
helm 生成下面的值
value: '"15360"'
如果加上单引号
helm upgrade memcached1 bitnami/memcached --set "extraEnv[0].name=MEMCACHED_CACHE_SIZE,extraEnv[0].value='15360'"
helm 生成下面的值
'''15360'''
用 --set-string
可以解决(解决方法来源)
helm upgrade memcached1 bitnami/memcached --set-string "extraEnv[0].name=MEMCACHED_CACHE_SIZE,extraEnv[0].value=15360"