jenkins 如何不使用命令触发重新创建调配

wa7juj8i  于 2023-03-17  发布在  Jenkins
关注(0)|答案(1)|浏览(147)

我是Kubernetes的新手,我们有一些Helm图表,用于使用Kubernetes对各种不同的环境实施监控堆栈。我正在更新helm图表版本,其中一个版本需要重新创建部署。
我试着逃跑
kubectl delete deployment <deploymentname>
然后实现更新,这会起作用,但我需要一种从.yaml文件触发部署创建的方法,以便在我运行管道时在所有环境中触发它,而不是手动删除部署。
我还尝试添加注解,如

annotations:
  kubectl.kubernetes.io/restartedAt:

但没有用。
我得到的错误:

13:40:55  2023-02-22 13:40:55,354 - ERROR  -
Command 'kubectl --kubeconfig=/tmp/tmpxv384dq8 apply --validate=False
-f /tmp/tmp9ku4lg20' failed with: The Deployment "pgw-prometheus-pushgateway" 
is invalid: spec.selector: Invalid value:
v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/instance":"pgw",
"app.kubernetes.io/name":"prometheus-pushgateway"},
MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
kadbb459

kadbb4591#

如果我理解正确的话,您有许多Kubernetes应用程序通过Helm Charts管理,并且您希望其中一个应用程序被“强制”重新启动。
我猜这是您的请求,因为如果应用程序的.yaml值没有“重大”更改,Helm Upgrade命令不会触发新版本的重新部署/部署。
要确保在执行每个升级命令时重新引导,可以通过添加以下内容来修改部署模板:

annotations:
         rollme: {{ randAlphaNum 5 | quote }}

https://v3.helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments

相关问题