jenkins 如何在不使用任何命令的情况下触发重新创建部署

nue99wik  于 2023-04-19  发布在  Jenkins
关注(0)|答案(2)|浏览(203)

提前道歉,我是Kubernetes的新手,我们有一些Helm图表,我们使用它们来实现使用Kubernetes的各种环境的监控堆栈。我正在更新Helm图表版本,特别是一个版本,需要重新创建部署。
我试着逃跑
kubectl delete deployment <deploymentname>
然后实现更新,这是可行的,但我需要一种方法来触发从values.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
aurhwmvo

aurhwmvo1#

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

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

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

ut6juiuv

ut6juiuv2#

所以基本上我找到的解决方案是覆盖部署名称。我将fullnameOverride值添加到values yaml文件(这是在helm charts values中提供的),并从以前的名称中稍微更改了名称,删除了旧的部署并创建了新的部署,而没有事先做kubectl delete deploy

相关问题