近期阿里云容器服务Kubernetes版(ACK)新建集群中安装的Helm已升级至v3版本。由于Helm v2 Tiller服务端在社区一直存在已知的安全问题,攻击者可以通过tiller在集群内安装未经授权的应用,因此推荐您升级至Helm v3版本。
影响范围
首先执行命令kubectl get deploy -n kube-system tiller-deploy查看是否存在tiller deployment。如果存在,判断以下条件:
ACK集群访问密钥(kubeconfig)是否提供给外部客户使用。
阿里云容器服务控制台是否提供给外部客户登录访问。
ACK集群是否应用在多租户场景下,且有用户之间权限隔离的情况存在。
如果满足以上任何一点,建议您将安装的Helm升级到Helm v3系统。
未在上述范围或者暂时无法升级Helm v3
对于不在影响范围内或暂时无法升级Helm v3的用户可以手动升级Helm v2 tiller到最新版本,以获取更加强健的安全性保障。升级方式如下。
执行以下命令。
helm init --tiller-image registry.cn-hangzhou.aliyuncs.com/acs/tiller:v2.16.3 --upgrade
待tiller健康检查通过后,执行命令helm version查看版本升级情况。
这里只会升级 Helm服务端。客户端在各平台的最新版下载地址,请参见下载地址。
未在上述范围内的用户,或者暂时无法升级Helm v3的用户,将Tiller升级到最新版即可,不需要再执行下面的操作,后续可以根据自己需求逐步地迁移至Helm v3。
前置检查
升级Helm v2之前,请进行前置检查。
首先判断自己集群内是否含有tiller。执行命令kubectl get deploy -n kube-system tiller-deploy查看是否存在此deployment。
如果存在,执行命令helm ls -a查看是否已经安装了应用。
如果安装了应用,需要先删除应用,因为Helm v2与Helm v3数据不兼容。
重要Helm社区提供了Helm v2 to Helm v3插件,但是请慎重使用,以免出现数据丢失情况。Helm v2 to Helm v3插件信息,请参见helm-2to3。
升级步骤
确保前置检查通过。
执行命令kubectl delete deploy tiller-deploy -n kube-system。
下载helm v3客户端安装新的应用。
重要安装新的应用前:
需要将原有Helm v2安装的应用使用Helm v3重装一遍,请评估对业务的影响。
重装应用会导致原有数据丢失,请注意数据备份与保护。