有秀必应
众所周知,Zadig V1.7.0 重磅推出了权限管理和统一用户接入功能,优化了系统架构,对于企业场景极其适用,但与此同时也在安装层面带来了一定的复杂度,如 STORAGE_CLASS 配置复杂、初始化任务失败、MySQL startupProbe 报出 warning 等问题,使得 Zadig V1.7.0 的一次安装升级成功率较低,影响了用户对 Zadig 的信心。
研发团队全面复盘了社区小伙伴们反馈的问题,针对每个问题进行改善,并开了一场线上会议倾听社区小伙伴们的吐槽,现场解决问题。
在此基础上,我们对安装策略重新做了系统的思考,在 V1.7.1 推出了面向场景的安装策略,降低 Zadig 安装复杂度,期待能够给用户带来更好的体验。
![图片]()
2 个 版本,3 个场景,对应 3 种安装方式
Zadig 采用 主干开发、分支发布 的模式,所有的开发基于 main 分支,在 main 分支达到发布条件后,会从 main 分支拉取 release 分支进行打版发布,推出包含经过全面测试的 正式版本。
Nightly 版本:
为了便于开发者和用户尝鲜,Zadig 从 V1.7.1 版本开始推出了 Nightly 版本,会在每周二、周四定期对 main 分支进行打版。Nightly 版本仅通过了 smoke test,可能会存在 bug,选择 Nightly 尝鲜时请先了解风险。
正式版本:
Zadig 业务组件运行过程中,还需要 MongoDB / MySQL / 对象存储 (如 Minio) 等依赖组件,这些组件本不属于 Zadig 维护的范畴,但为了给用户带来极致体验,我们在安装包中包含了 业务组件 和 依赖组件。
在之前的版本中,Zadig 依赖组件默认采用持久化存储,需要用户理解 StorageClass、PV、PVC 等 K8s 概念,并在 K8s 集群中进行正确配置,然后才能成功安装 Zadig。
使用持久化存储的同时也会增大依赖组件的启动耗时,会导致 Zadig 业务组件启动过程中异常重试或重建。这个过程中的 warning 或 error 信息虽然是预期内,不影响 Zadig 最终安装成功,但会带来用户对 Zadig 安装可靠性的担忧。为了降低快速体验场景中持久化存储带来的复杂度,我们使用 K8s 的 EmptyDir 提供依赖组件需要的存储,提升启动 MongoDB / MySQL / 对象存储 的成功率和效率。
对于生产使用,我们依然推荐使用外置高可用的 MongoDB / MySQL / 对象存储,保障数据的可靠性。
面向场景制定安装策略:
基于上述分析,我们推出两种版本 ,并针对快速体验和生产使用场景,提供不同的安装策略,进一步提升安装体验:
![图片]()
新安装策略
1. Nightly 版本
export IP=<NODE PUBLIC IP>export PORT=<30000~32767 任一端口>curl -sL "https://download.koderover.com/install?type=nightly" | bash
3 行命令,成功安装!
2. 正式版
1)面向快速体验场景的安装模式:
其目的是方便以最小心智安装,用户不用深入了解和配置 K8s 存储
虚拟机环境的操作同上述 Nightly 版本,下述以 K8s 场景为例说明:
export IP=<任一 NODE PUBLIC IP>export PORT=<30000~32767 任一端口>curl -sL "https://download.koderover.com/install?type=quickstart" | bash
3 行命令,成功安装!
2)面向生产环境的安装模式:
推荐用户使用外置高可用的 MongoDB / MySQL / 对象存储 (如 Minio) ,或使用 Zadig 安装包中容器化的 MongoDB / MySQL / Minio,并为三者提供持久化存储
下述以外置高可用的 MongoDB / MySQL 为例说明:
export IP=<IP>export PORT=<30000~32767 任一端口>export EMAIL=example@koderover.comexport PASSWORD=zadig# 配置高可用的 MySQL。# 安装前需要手动在该 MySQL 实例中创建名为 dex 的 databaseexport MYSQL_HOST=<MYSQL_HOST>export MYSQL_PORT=<MYSQL_PORT>export MYSQL_USERNAME=<MYSQL_USERNAME>export MYSQL_PASSWORD=<MYSQL_PASSWORD># 配置高可用的 MongoDBexport MONGO_URI=<MONGO_URI>export MONGO_DB=<MONGO_DB>
curl -sL "https://download.koderover.com/install?type=standard | bash
数行命令,成功安装!
进一步优化
不论是脚本方式还是 Helm 方式,Zadig 的安装本质上是如下形态:
![图片]()
Zadig Chart 作为代码包封装了 Zadig 所有服务,对外提供了脚本 和 Helm CLI 两类使用方法,不同的安装方式区别在于使用方法中参数的不同。
Zadig Chart 的局限性
脚本方式虽然灵活,但对于故障自查等场景,会有比较高的实现成本和维护成本。Helm CLI 虽然是社区管理 Chart 的标准工具,但缺少面向业务场景的故障自查等能力,需要二次封装,且在业务有自身 CLI 的情况下,Helm CLI 会带来额外的工具学习、使用成本。
关于优化的思考
为此,我们在思考提供更为便利强大的安装工具,降低 Zadig 整体的使用负担,如在 Zadig 已有的 CLI 工具 kodespace 中集成安装、升级、初始化、故障自查等服务。同时我们也在考虑进一步发挥 CLI 工具的能力,提供插件机制,方便社区小伙伴们针对自身的环境做集成。
![图片]()
Zadig 线上安装会
安装是使用 Zadig 的第一步,我们很重视每个用户的反馈。为了给 Zadig 用户提供更好的触达渠道,我们计划分别从 12.30 号开始每周四下午 4 点举行一次线上讨论会,倾听用户的吐槽、问题和建议,现场答疑,针对问题制定改善计划。
会议主题:Zadig 线上倾听会
会议时间:每周四 16:00-17:00 北京时间 (2021/12/30 起)
扫码入会:
![]()