1. 概述
ks-install 基于ansible完成了kubesphere组件的动态插拔。
2. 结构分析
ks-install嵌入在shell-operator组件中
- shell-operator通过监听etcd中配置资源的变化,当配置crd更新时(譬如设置 alert:true)。将会把etcd中组件配置信息整体以json的形式传入installRunner脚本。
- installRunner脚本将最新的配置信息传入playbooks集合。playbooks集合中包含了更新各个组件的入口。其中各个playbooks将根据新的配置信息尝试调用具体的"更新"脚本roles。
- "更新"过程是脚本发现配置信息中对应组件启动时将安装该组件需要的依赖,当发现对应组件关闭时将尝试卸载对应组件需要的依赖。
- "更新“”过程中除了更新配置的依赖外,也会动态生成kubesphere等负载的配置文件,并重启kuberpshere系统的核心模块。
3. 流程分析
整体业务流程如下所示
- shell-operator监听etcd中组件配置相关etcd数据变化。
- 当配置变化时调用ks-installer尝试安装依赖和更新kubespherer核心组件配置。
- ks-installer 首先检查各个开启的组件依赖服务是否安装,当发现未安装时进行依赖安装。例如,当发现日志功能开启时将尝试安装es系统。
- 然后ks-installer生成各个kubesphere核心组件配置并重启组件。
例如,当集群由none模式切换为host模式时,将生成新的组件配置,并重启ks-apiserver,从而使ks-apiserver模块感知到集群模式的变化。