在头盔安装中执行命令

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

我正在编写一个脚本,该脚本基于配置文件执行多个头盔安装命令。在此配置文件中,用户需要能够指定其他参数,例如--set userPw="password"

其中一些自变量需要从某个位置检索变量。

在powershell中,我可以将其存储在变量中,并在helm install --set参数中使用此变量,如下所示:

$mySecret = az keyvault secret show --name MYSECRET--vault-name MYVAULT| ConvertFrom-Json).value
helm install mydeployment repo/mychart -n my-namespace --set azureSecret=$mySecret

但是我不能动态地执行此操作...课程的不同部署需要不同的变量。我要使用配置文件而不是变量,因为我不希望用户编辑运行这些命令的脚本。

是否可以像这样进行头盔安装?:

helm install mydeployment repo/mychart -n my-namespace --set azureSecret=(az keyvault secret show --name MYSECRET--vault-name MYVAULT| ConvertFrom-Json).value)

在这种情况下,用户可以将这样的命令放入配置文件中。我的语法可能已关闭,我尝试了一些变体,但似乎不起作用。

我们的团队仅使用此脚本来轻松部署某些内容,因此安全性不是问题。

我认为根据以下规定,这是不允许的:https://github.com/helm/helm/issues/5145

只需确定。

powershell kubernetes-helm
1个回答
0
投票

Helm实际上不能直接启动子命令。 Helm还禁用了可以查询Shell环境的Sprig函数。模板的唯一输入是从图表的values.yaml文件以及-f--set选项构建的values对象。

在类似Unix的环境中,您可以在$(az keyvault ...)命令中使用helm install命令替换语法。 (我知道有几种方法可以在Windows上运行GNU Bash shell,其中一种可能有效。)您显示的命令涉及的内容非常丰富,以至于编写一个简短的脚本来运行它会很有用,如果您有一个脚本,您的两行Powershell脚本也可以使用。

在连续集成环境中,另一种可行的方法是写出YAML值文件,然后通过helm install -f选项将其传递。所有有效的JSON应该都是有效的YAML,因此您可以设置eg Jenkins管道来计算一些值,创建一个Groovy映射对象,将其作为JSON转储到文件中,然后将其用作输入值文件。

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