我们正在使用helm3和Jenkins /CD管道将Java微服务部署到AWS 'ECR > EKS‘。然而,我们看到的是,如果我们重新运行Jenkins作业来重新安装部署/吊舱,那么如果没有代码更改,吊舱就不会重新安装。它仍然保持旧的运行舱的原样。这里考虑的用例是, AWS在部署期间提取的db秘密配置已经改变,因此需要通过重新触发Jenkins作业来重新部署服务。
方法1:https://helm.sh/docs/helm/helm_upgrade/
我试过使用“头盔升级-安装-强制.”正如helm3升级文档中所建议的,但是它失败了,在Jenkins中出现了以下错误
“错误:升级失败:未能替换对象:服务”dbservice无效: spec.clusterIP:无效值:“:字段不可变”
方法2:使用--重新创建-从较早的舵机版本中的豆荚
通过“舵机升级--安装--重新创建--豆荚.”,我在Jenkins日志中得到以下警告
“旗帜--重新创建-豆荚已被废弃,功能将不再更新。有关重新创建豆荚的其他方法,请参阅文档”。
然而,豆荚会被重新创造出来。但正如我们所知--重新开始不是软启动。因此,我们将有停机时间,这打破了微观服务的原则。
使用舵机版本
GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004",GitTreeState:“干净”,GoVersion:"go1.14.10"}
问题
发布于 2021-01-25 10:19:58
发布于 2021-01-25 11:33:07
下面是我如何配置它-感谢@vasili重定向到正确的文档部分。
在deployment.yaml中,我添加了注释和rollme
kind: Deployment
spec:
template:
metadata:
annotations:
rollme: {{ randAlphaNum 5 | quote }}根据文档,每次调用模板函数randAlphaNum都会生成唯一的随机字符串。因此,随机字符串总是更改,并导致部署滚动。
文档中描述的另一种方法是有关文件的SHA值的更改。
在过去,helm建议使用--重新创建-pods标志作为另一种选择。此标志已标记为deprecated in Helm 3,以支持上述更声明性的方法。
https://stackoverflow.com/questions/65882761
复制相似问题