如果在图表中没有检测到新的更改或修改,是否有一种方法可以限制helm的安装或更新?
一种方法-在旧的和新的图表上使用helm模板并做一个区别,然后只有在有变化的情况下才进行更新。
,
values_diff=$(diff work-values/values.yaml work-values/values-prev.yaml | wc -l)
值的地方。Yaml和value优先。
是helm template命令对最新和以前的图表的输出。然后你做
if [ $values_diff -gt 0 ]
then
....
你的更新逻辑在点所在的地方。
在这里查看完整的工作示例(注意它有一些额外的东西,您可能会忽略)- https://github.com/relizaio/reliza-hub-integrations/blob/master/Helm-cd-with-Reliza/helm_configmap.yaml,这是我更大的教程的一部分- https://worklifenotes.com/2021/05/22/helm-cd-with-reliza-hub-tutorial/
我找到了另一种方法。写了一个小的python脚本,列出在最近两次提交中更改的文件,然后过滤掉被修改的应用程序。
这是一个伟大的插件。
helm plugin install https://github.com/databus23/helm-diff
>>
>>>>
>>
>
你可以这样使用
#!/bin/bash
lines=$(helm diff upgrade -n mynamespace myapp foo/myapp -f custom-values.yaml)
if [[ $(echo $lines | wc -l) > 0 ]]; then
echo "$lines" | grep "^+|^-"
echo "Helm changes detected."
echo "Running upgrade in 5."; sleep 5 helm upgrade --install -n mynamespace myapp foo/myapp -f custom-values.yaml
fi
你也可以使用terraform helm provider
https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release