您的位置:  首页 > 技术杂谈 > 正文

Zadig 1.7.1 发布:面向不同场景制定安装策略

2021-12-29 19:00 https://my.oschina.net/koderover/blog/5384101 Zadig云原生交付 次阅读 条评论

有秀必应

众所周知,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 版本

  • 部署包可以通过 link 获取,在虚拟机上使用如下几条命令就可以快速安装:

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 场景为例说明:

  • 参见 link 获取面向快速体验场景的安装包,针对 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 为例说明:

  • 参见 link 获取面向快速体验场景的安装包,针对 K8s 集群执行如下操作便可快速安装:

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 起)

扫码入会

 
展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接