lengpucheng

Results 3 issues of lengpucheng

**KubeOperator 版本** v3.15 **Kubernetes 版本** v1.22.8-ko1 **Bug 描述** 当创建集群中出现异常中断(例如掉电】网络波动或其他原因),点击重试,之后提示未找到 ansible_distribution **Bug 重现步骤(有截图更好)** 1. 在KUBERNETES组件初始化前的任意步骤,中断KO与被控机之间的网络,等待ansible超时,KO显示部署异常 2. 点击异常集群重试 4. 等到KUBERNETES组件初始化步骤,会提示 ansible_distribution 找不到该变量 **可能的原因** 翻阅KO/ansible源代码[roles/prepare/kubernetes/tasks/main.yml#L40](https://github.com/KubeOperator/ansible/blob/master/roles/prepare/kubernetes/tasks/main.yml#L40) 其中有使用该变量对操作系统进行判断的语句,猜测可能的原因系**该变量在集群初始化中注入到ansible变量中,重试时未注入**,希望可以排查解决该问题。同理如果该原因为实际的原因,则可能**所有的在创建集群中传入的自定义变量都会受到影响**!!!!

## 场景描述 由于可能需要在一些完全脱网的涉密场景下去部署集群和业务,因此会对ko做一定的修改,在部署集群的同时会部署一些定制化的其他组件(使用`Ansible`),并且在ko的应用商店中加入一些我们自己开发的资源应用(`CRD`)和其他组件(通过`Ansible`安装在节点上)。因此需要修改ko中应用商店的应用。 ## 当前问题 1. 在ko源码[pkg/model/cluster.go:270](https://github.com/KubeOperator/KubeOperator/blob/master/pkg/model/cluster.go#L270) 中集群应用是被以硬编码的形式写死在代码当中(包括应用的安装和卸载),这不利于应用商店的扩展性。 2. 在ko源码[pkg/service/cluster/adm/adm.go:107](https://github.com/KubeOperator/KubeOperator/blob/master/pkg/service/cluster/adm/adm.go#L107) 中集群部署阶段调用的`playbook`文件是以`ClusterAdm`的方法硬编码写死,这不利于集群部署的扩展性。 3. 由于以上问题的存在,我们对ko的扩展都只能侵入式的修改ko源码,由于涉密环境无法直接连接Github,对于每一次官方更新的合入都是一件非常痛苦的事情。 ## 优化建议 1. 可以以配置文件来描述应用商店中扩展的应用,ko通过读取配置文件的方式动态判断并加载扩展的应用,该配置文件描述应用的chart包名称、版本、logo、参数类型(界面可以动态获取并渲染为表单)和默认参数以及是否启用等(或许可以是表`ko_cluster_tool_detail`的yaml文件,由于大部分应用的部署设计为chart包,安装时只需要chart包名称、版本和参数,该加载器只需要为没有配置的地方设置默认值或者是忽略错误即可,我们当前的改动就是动态加载`ko_cluster_tool_detail`表中的内容)。 2. 应用商店中或许可以加入以`ansible`剧本的方式部署应用(针对一些操作系统层面的插件),如果采纳建议一,则只需要在该配置文件中加入部署类型和`playbook`的描述。 3. 集群部署时可以同时参考优化建议一,使用配置文件去读取集群中的扩展组件(界面可以动态渲染是否部署该组件或者设置该组件的参数)。实际上该建议相当于是在建议二的基础上让在集群部署时可以自动完成已经选定的应用商店中的应用的部署(`ansible`方式或者chart方式)。 **以上是在使用`kobeoperator`并对其进行了二次开发过程中遇到的问题以及针对一下使用场景的建议,希望可以得到采纳,感谢!**

Hello, I used Beego and Cobra to build a command-line tool similar to Consul, which can be either a server or a client. This command will be registered in the...