gpt4 book ai didi

kubernetes - 从 Helm 配置获取字符串数组

转载 作者:行者123 更新时间:2023-12-02 11:30:59 28 4
gpt4 key购买 nike

最终我试图得到一个字符串数组,例如我的 Helm 配置中的js应用程序中的['foo', 'bar']

./vars/dev/organizations.yaml

...
organizations:
- 'foo'
- 'bar'
...

./templates/configmap.yaml
...
data:
organizations.yaml: |
organizations: "{{ toYaml .Values.organizations | indent 4 }}"
...

./templates/deployment.yaml
...
containers:
args:
- "--organizations-config"
- "/etc/app/cfg/organizations.yaml"
...

index.js
...
const DEFAULT_ORGANIZATIONS_PATH = './vars/local/organizations.yaml'
const program = require('commander')

program
.option(
'--organizations-config <file path>',
'The path to the organizations config file.', DEFAULT_ORGANIZATIONS_PATH)
.parse(process.argv)

function readConfigs () {
return Promise.all(configs.map(path => {
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) => {
err ? reject(err) : resolve(yaml.safeLoad(data))
})
})
}))
}

readConfigs()
.then(configs => {
let organizationsConfig = configs[3]

console.log('organizationsConfig = ', organizationsConfig)
console.log('organizationsConfig.organizations = ', organizationsConfig.organizations)
...

上面的输出是:
organizationsConfig =  { organizations: '    - foo - bar' }
organizationsConfig.organizations = - foo - bar

如何修改 Helm 配置,以便 organizationsConfig.organizations['foo', 'bar']

最佳答案

获得所需输出的一种方法是更改​​:

...
organizations:
- 'foo'
- 'bar'
...

到:
organizations: |
[ 'foo', 'bar']

因此,Helm将其视为单个字符串。我们碰巧知道它包含数组内容,但是 Helm 只认为它是一个字符串。然后我们可以直接在configmap中设置该字符串:
organizations: {{ .Values.organizations | indent 4 }}
这是 the grafana chart does的作用,它首先迫使用户以所需格式指定列表。也许您希望从helm值中获取一个数组并将其转换为所需的格式,在我看来,该格式为json格式。为此,您可以按照 example of the vault chart进行操作。因此,configmap行变为:
organizations: {{ .Values.organizations | toJson | indent 4 }}
然后用户输入的Yaml可以与您最初拥有的一样,即真正的Yaml数组。我尝试了一下,它可以工作,但是我注意到它提供了双引号内容,例如 ["foo","bar"]
您可以使用的另一种方法是:
organizations:
{{- range .Values.organizations }}
- {{ . }}
{{- end }}

关于kubernetes - 从 Helm 配置获取字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839920/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com