提前道歉,我是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
2条答案
按热度按时间aurhwmvo1#
如果我理解正确的话,您有许多通过Helm Charts管理的Kubernetes应用程序,并且您希望其中一个“强制”重新启动。
我猜这是你的要求,因为如果你的应用程序的values.yaml没有“重大”更改,Helm Upgrade命令不会触发新版本的重新部署/部署。
要确保每次执行升级命令时都进行重新启动,可以通过添加以下内容来修改部署模板:
https://v3.helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments
ut6juiuv2#
所以基本上我找到的解决方案是覆盖部署名称。我将
fullnameOverride
值添加到values yaml文件(这是在helm charts values中提供的),并从以前的名称中稍微更改了名称,删除了旧的部署并创建了新的部署,而没有事先做kubectl delete deploy
。