Bootstrap

helm upgrade 部署失败 MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

1.背景

最近在使用 k8s helm 构建项目的时候发现了一个问题,升级失败。 

Error: UPGRADE FAILED: cannot patch "mh-crm-admin-v1" with kind Deployment: Deployment.apps "mh-crm-admin-v1" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"mh-crm-admin", "bm-org":"bluemoon", "elk":"true", "version":"v1"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
script returned exit code 1

2.解决过程

在网上查了一些资料,最后在 github 上找到了答案

MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutabl · Issue #508 · kubernetes/client-go · GitHub

 大概意思就是说,helm 的版本有问题,因为项目处于一个失败的版本,所以在使用 upgrade 命令也失败了,所以需要回滚到正确版本,然后再进行项目部署。

3.解决方案

3.1.首先用helm 查看历史版本

helm history -n mh-crm-parent mh-crm-admin-v1

 发现确实有三个失败的版本

2.回滚

helm rollback -n mh-crm-parent mh-crm-admin-v1 79

 回滚成功。

再尝试重新部署

 

发现问题解决

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;