參考:https://docs.rancher.cn/docs/rancher2.5/faq/upgrade/_index/
原因
當我們升級自簽名證書安裝的 Rancher Server 到 2.5.10 以上,或 2.6.x 后,cluster-agent/node-agent 有可能會報下面的錯,導致 cluster-agent/node-agent 無法啟動:
x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0"
這是因為 Rancher 把 v2.5.10 以上,或 2.6.x 之后將 go 版本從 1.14 提升到了 1.16。而且,go 1.15 版本開始廢棄 CommonName,推薦使用 SAN 證書,參考:https://golang.org/doc/go1.15#commonname 。 如果你的自簽名證書中不包含 SANs,就會出現下面的報錯。
錯誤提示
x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0"#
解決
方案 1:
- 替換 Rancher HA 證書#
- 使用一鍵生成 ssl 自簽名證書腳本 重新生成證書,然后參考無需重新搭建集群,輕松替換證書替換 Rancher HA 的證書。
方案 2:
添加環境變量 GODEBUG=x509ignoreCN=0#
更新 Rancher Server ,添加環境變量GODEBUG=x509ignoreCN=0
升級 Rancher 通過extraEnv設置環境變量GODEBUG=x509ignoreCN=0,例如:
helm upgrade rancher rancher-latest/rancher \
--namespace cattle-system \
...
--set 'extraEnv[0].name=GODEBUG'\
--set 'extraEnv[0].value=x509ignoreCN=0' \
...
或者,來添加環境變量
kubectl edit deployment rancher --namespace cattle-system
更新業務集群的 Rancher Agent,添加環境變量GODEBUG=x509ignoreCN=0
編輯下游集群,點擊 Add Environmenet Variable,設置環境變量,如下:
kubectl edit deployment cattle-cluster-agent -n cattle-system
kubectl edit deployment cattle-node-agent -n cattle-system