掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及计算机技术领域,尤其涉及一种在线chart包编排系统。

背景技术

随着互联网技术的应用和广泛普及,容器化系统和应用也越来越成熟。其中Kubernetes是一个比较成熟的开源的容器管理系统,可以帮助用户在多台服务器上部署和管理容器化应用。而helm是为其设计的一个包管理工具,方便应用的部署和安装等。但目前helm-chart包只能通过线下工具进行编排。

发明内容

发明目的:考虑到线下的编排的不方便,不仅需要安装Idea及helm插件、还需要安装helm客户端等工具,提出一种在线chart包编排系统,方便用户不需要安装工具,打开浏览器输入地址就可以实时的进行chart包编写工作。同时支持用户的本地化自定义构建,可将服务构建为docker镜像,通过挂载helm客户端的方式,可以很容易替换和升级helm的api,方便快速安装部署和使用,从而有效解决现有技术存在的上述问题。

本发明提出一种在线chart包编排系统,该系统包括:

展示层;所述展示层以客户端的形式展现;

传输层;所述传输层采用WEB服务器与所述客户端相互通信;

应用层,与所述传输层建立通信;所述应用层利用helm接口封装仓库管理模块、初始化创建模块、在线编排模块、第三方仓库模块、Chart包实时校验模块、Chart包实时渲染模块、Chart包打模块、包推送模块;

持久层,与所述应用层建立通信;所述持久层包括文件存储服务模块和数据库持久化服务模块。

在进一步的实施例中,所述仓库管理模块提供本地仓库维护,对本地仓库进行导入、导出、删除操作。

在进一步的实施例中,所述初始化创建模块用于在PC端用户登录后,进入自己的helm仓库管理页面,选择创建chart包,输入包名称等信息后点击创建,后端执行helmcreate能快速初始化创建一个编排基本包。

在进一步的实施例中,所述在线编排模块用于根据路径读取文件内容并展示到浏览器页面上。

在进一步的实施例中,用户在浏览器页面上进行改造和编写chart包里的文件内容并进行实时的文件保存,每次保存都会进行chart包内容的校验,如果存在编写错误等情况则进行高亮提示,告知使用者的语法错误及所在的文件名称、行和列数。

在进一步的实施例中,所述第三方仓库模块整合helm命令api接口,在浏览器页面上进行添加、删除、搜索、拉取第三方仓库的chart包,拉取成果后同样使用monaco-editor在线文件预览、修改。

在进一步的实施例中,每次monaco-editor的保存请求都会调用helm lint接口,所述Chart包实时校验模块用于校验chart包语法的完整性和正确性,并将检测结果在页面高亮展示和提示。

在进一步的实施例中,所述Chart包实时渲染模块支持边编写,边实时渲染功能,调用helm template接口,当前编辑的chart包进行渲染,并将选然后的内容展示到页面分栏进行代码对比。

在进一步的实施例中,chart包在线编写或修改完成后,由所述Chart包打模块调用helm package接口,生成tgz制品保存到服务器端,可选择下载。

在进一步的实施例中,所述包推送模块用于调用helm push接口,将tgz制品推送到仓库存储。

本发明具备如下有益效果:

基于monaco-editor在线编排界面:该界面简洁但不缺少必要的功能、用户需要在浏览器界面操作并不需要进行配置其他的东西。能够很快的就熟悉使用方法并且能够轻易上手。而且功能友好能够进行快捷的编排chart。相比较线下的编排用户只需要关注代码质量而不需要再关注工具和环境以及保存问题。

Spring-boot整合helm客户端api:使用java语言执行helm命令,以封装成果Restful接口的形式供浏览器端进行调用和传输信息。整合了仓库管理、helm创建、校验、渲染、打包、推送等功能。

Spring-boot整合nexus-api:整合了nexus的api,提供了在线仓库的管理维护、用户创建等功能。

helm客户端封装为docker镜像技术:用户可脱离内置定义,可以个性化定制自己的配置,可进行二次、多次封装。

结合上述设置,传统的线下编排需要进行复杂的工具和环境配置,且过程中需要在终端反复输入不同命令行、无法统一管理chart包、不能移植等缺点。Chart在线编排系统极大的方便了用户的编排需求,简便灵活。

附图说明

图1是chart在线编排系统业务架构图。

图2是monaco-editor的界面图。

图3是本地仓库管理拓扑结构图。

图4是helm接口封装模型示意图。

图5是helm仓库管理模型示意图。

具体实施方式

在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。

如附图1所示的chart在线编排系统,整体业务架构采用了分层模型,其中展示层分为PC端用户,传输层采用了WEB服务器, 应用层提供了monaco-editor服务、helm校验服务、helm创建服务、nexus管理服务、helm渲染服务、helm推送服务、helm打包服务、第三方仓库服务、本地仓库服务,数据层包含文件存储服务和数据库持久化服务。

服务层整合了monaco-editor的预览和读写、同步到本地仓库文件功能,同时也整合了helm客户端的通用接口,可以满足用户的接口和命令行下的不同场景需求,实现了用户不再依赖线下编排工具,而是实现了在线上系统中快速编排的能力、同时提供仓库存储服务。因此,用户不在需要关注其他因素、只需要关注代码即可,解决了诸多的问题。安装部署都很方便。

展示层以客户端的形式展现。传输层采用WEB服务器与所述客户端相互通信。应用层与所述传输层建立通信;所述应用层利用helm接口封装仓库管理模块、初始化创建模块、在线编排模块、第三方仓库模块、Chart包实时校验模块、Chart包实时渲染模块、Chart包打模块、包推送模块。持久层与所述应用层建立通信;所述持久层包括文件存储服务模块和数据库持久化服务模块。

仓库管理模块:仓库列表可提供本地仓库维护、对本地仓库进行导入、导出、删除等操作。系统整合了nexus-api可为新用户创建仓库账号,实现不同用户的仓库数据隔离。

初始化创建模块:在PC端用户登录后,进入自己的helm仓库管理页面,选择创建chart包,输入包名称等信息后点击创建,后端执行helm create能快速初始化创建一个编排基本包。

在线编排模块:monaco-editor是微软发布的一款开源的轻量级在线编辑器,可以用于实现高级代码编辑和调试功能。它支持多种编程语言和语法高亮,可以帮助用户更加轻松地进行代码编辑和调试。monaco-editor服务会根据路径读取这个包的文件内容并展示到浏览器页面上,用户就可以在浏览器页面上进行改造和编写chart包里的文件内容并进行实时的文件保存,每次保存都会进行chart包内容的校验,如果存在编写错误等情况则进行高亮提示。能准确告知使用者的语法错误及所在的文件名称、行和列数。

第三方仓库模块:服务端整合了helm命令api接口,能够在浏览器页面上进行添加、删除、搜索、拉取第三方仓库的chart包,拉取成果后同样使用monaco-editor在线文件预览、修改等,相比传统方式下用户不需要下载tgz制品包到本地、直接在浏览器端进行操作。

Chart包实时校验模块:每次monaco-editor的保存请求都会调用helm lint接口,用于校验chart包语法的完整性和正确性,并将检测结果在页面高亮展示和提示。

Chart包实时渲染模块:支持边编写,边实时渲染功能,调用helm template接口,当前编辑的chart包进行渲染,并将选然后的内容展示到页面分栏进行代码对比。

Chart包打模块:chart包在线编写或修改完成后,调用helm package接口,生成tgz制品保存到服务器端,可选择下载。

包推送模块:调用helm push接口,将tgz制品推送到仓库存储。

基于monaco-editor的浏览器端可视化编辑功能,如附图2的浏览器端monaco-editor编排界面,模型界面设计简单易懂,没用很复杂的操作,和在线下编辑器里所呈现的几乎一样,只是从线下功能迁移到线上功能,用户只需要打开浏览器登录系统就可以直接进行编排,其速度、效率、便捷程度都提高很多。

临时本地仓库管理功能,如附图3的本地仓库管理, 以本地仓库进行持久化、同时将编排后的tgz制品包直接推送到nexus、harbor等线上仓库,做到了本地和线上的两端备份、数据更加安全。如果在线下的话,文件不能做到实时迁移、安全隐患较大,只能通过输入控制台命令行的形式推送到私人仓库、不能做到统一管理等缺点。

基于docker镜像的便捷封装,第一步封装环境:下载Helm官方二进制linux端客户端程序和使用docker pull openjdk:8-jdk-alpine的镜像并运行该镜像。然后cd /&mkdirhelm, 将下载的helm客户端文件拷贝到该目录下后执行chmod +x ./helm&ln -s /helm/helm /usr/local/bin/helm命令,使用helm version命令检测是否成功。

第二步封装仓库:编辑repositories.yaml文件,在里面加入仓库名称、url等仓库配置信息。运行时在docker-compose.yaml或k8s下的depolyment.yaml的environment位置配置环境变量HELM_REPOSITORY_CONFIG=/helm/config/repositories.yaml等环境变量、并将编辑后的文件repositories.yaml使用volume或configMap等形式挂载到容器内部;容器化的方式实现了高度选择性、方便性及可配置性。然后在此镜像的基础上封装java业务代码整合spring-boot开发为通用的Restful接口以供调用。如附图4的接口封装模型,系统封装了helm客户端api、对执行结果、日志等信息进行准确、有效记的记录。方便用户查询日志、错误记录。业务封装合理完善,满足了大部分用户的功能和使用需求。

对公有的制品仓库的搜索和支持,如附图5的helm仓库管理模型。系统提供web界面、支持搜索和添加helm第三方仓库、制品包等,支持在线查看第三方的制品包基本信息、chart、values以及模板渲染等信息。即使用户不点击下载,也能够让自己想要看到的信息一目了然的呈现在页面上,而到了线下环境,用户很难直接看到信息,只能通过页面跳转进行下载制品包然后拷贝到IDEA工具里进行查看对应的文件。

综上所述,本发明至少存在如下三个技术要点:

1、monaco-editor界面模型: 此模型整合了常用工具栏+文件导航栏+monaco-editor编辑器+操作按钮。工具为排版工具栏除了基本的转大小写、页面查询和替换等,还结合了错误检查、格式校验高亮提示、代码对比等功能。

2、helm客户端封装技术: 基于docker镜像容器化封装技术、将helm客户端内置入容器环境、并通过环境变量指定一些固定仓库等,可选择挂载helm插件,实现了高度选择性、方便性。并整合spring-boot开发为通用的Restful接口。

3、monaco-editor-service后端服务技术:后端服务提供文件读写,遍历、上下文导航功能。另外提供功能管理、安全控制、缓存以及并发控制等。

如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。

技术分类

06120116580884