如何平滑优雅地在Rancher 2.x中升级cert-manager?
作者:
Nassos Michas丨European Dynamics SA, CTO
如果你正在使用由Rancher提供的Helm Chart在Rancher管理的Kubernetes集群中安装cert-manager,那么你最近也许收到了Let’s Encrypt发给你的提醒:
在集群中检查cert-manager的日志,你可以看到Let’s Encrypt拒绝更新证书的请求,因为“你的ACME客户端版本过旧,请升级到更新的版本”。那么,我们现在就开始吧!
使用Rancher提供的Helm Chart进行更新
我想你脑海里的第一想法应该和我的类似:使用相关的最新版本的Helm Chart升级cert-manager。大家可以不用考虑这个选项,因为Rancher提供的cert-manager Helm Chart目前最新的是0.5.2版本,所以别想着一键式升级啦!
使用官方Helm Chart升级
参考链接:https://forums.rancher.com/t/update-on-cert-manager-application-in-the-catalog/15598
计划十分简单:只需要将Rancher提供的cert-manager的Helm Chart移除,并使用Helm中由Jetstack维护的chart替换即可。
在开始之前,我们需要保持谨慎。从v0.5.2到目前stable的版本v0.11.0,许多内容都有所更改。新引入的CRDs和相应的配置格式将深刻地影响你的部署。因此,更新升级后,你需要将资源定义更新为新格式。幸运的是,cert-manager为我们提供了升级脚本,我们会在下文中用到它。
移除Rancher提供的Helm Chart
1、 登录你的Rancher UI
2、 切换到最初安装cert-manager的项目(可能是System)
3、 点击“APPs”
4、 点击垂直省略号按钮,然后选择“删除”。
现在,你已经移除了最开始安装的cert-manager。请注意,这一操作不会影响此前已经创建的证书,并且你的ingress配置应该像之前一样工作。
安装Tiller
Tiller是Helm的服务端组件,所以为了能在我们的CLI中使用Helm,我们需要在Kubernetes集群中安装Tiller。你可以通过运行以下命令来验证Tiller是否已经安装:
helm version
如果你的输出结果与以上结果类似,那么Tiller并没有安装好。如果你已经完成安装,那么请跳过这一部分。
好,现在我们来安装Tiller。首先,我们需要创建一个服务账号,授予我们远程安装Tiller的权限,然后再授予安装Chart的权限。
kubectl -n kube-system create serviceaccount tiller kubectl create clusterrolebinding tiller \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:tiller
要启动安装Tiller:
helm init --service-account tiller
几秒钟之后,你能够通过重新输入命令helm version
来验证Tiller是否已经安装,或者通过下列命令来验证你的Kubernetes Tiller部署:
kubectl -n kube-system rollout status deploy/tiller-deploy:
安装cert-manager
在安装cert-manager之前,我们需要做以下准备:
1、 禁用资源验证,以允许cert-manager的webhook组件正常工作
2、 安装新的(v0.11.1)的CRDs
3、 添加Jetstack repos