发明内容
为了解决现有技术的问题,本发明实施例提供了一种容器云环境下的服务接入管理方法和系统。所述技术方案如下:
一方面,本发明实施例提供了一种容器云环境下的服务接入管理方法,所述方法包括:
获取服务实例运行所需的服务镜像;
为服务实例定义相应的规格和服务配置信息;
编写并上传包含有所需容器资源的yaml文件,所述容器资源用于构建kubernetes平台的服务实例;
利用freemarker模板引擎将上传的yaml文件转化为kubernetes容器云平台可管理的容器资源;
利用转化好的容器资源构建所需的服务实例,并为构建好的服务实例定义用户访问入口;
检测构建好的服务实例,并在检测通过后在kubernetes容器云平台发布相应的服务实例。
在本发明实施例上述的服务接入管理方法中,所述获取服务实例运行所需的服务镜像,包括:
从官方网站下载所需的服务镜像,
或者,基于现有的基础镜像重新制备所需的服务镜像。
在本发明实施例上述的服务接入管理方法中,所述编写包含有所需容器资源的yaml文件,包括:
直接按照yaml文件格式编写yaml文件,
或者,在预设的yaml文件编辑界面填写容器资源的信息,形成相应的yaml文件。
在本发明实施例上述的服务接入管理方法中,在为构建好的服务实例定义用户访问入口时,所述方法还包括:
为构建好的服务实例关联其运行所依赖的其他服务。
在本发明实施例上述的服务接入管理方法中,在kubernetes容器云平台发布相应的服务实例之前,还包括:
为服务实例定义相应的服务基本信息,所述服务基本信息包括:服务的名称、版本、图标、描述信息中至少一项。
另一方面,本发明实施例提供了一种容器云环境下的服务接入管理系统,包括:
获取模块,用于获取服务实例运行所需的服务镜像;
定义模块,用于为服务实例定义相应的规格和服务配置信息;
处理模块,用于编写并上传包含有所需容器资源的yaml文件,所述容器资源用于构建kubernetes平台的服务实例;
所述处理模块,还用于利用freemarker模板引擎将上传的yaml文件转化为kubernetes容器云平台可管理的容器资源;
构建模块,用于利用转化好的容器资源构建所需的服务实例,并为构建好的服务实例定义用户访问入口;
所述处理模块,还用于检测构建好的服务实例,并在检测通过后在kubernetes容器云平台发布相应的服务实例。
在本发明实施例上述的服务接入管理系统中,所述获取模块,还用于从官方网站下载所需的服务镜像,
或者,基于现有的基础镜像重新制备所需的服务镜像。
在本发明实施例上述的服务接入管理系统中,所述处理模块,还用于直接按照yaml文件格式编写yaml文件,
或者,在预设的yaml文件编辑界面填写容器资源的信息,形成相应的yaml文件。
在本发明实施例上述的服务接入管理系统中,在为构建好的服务实例定义用户访问入口时,所述处理模块,还用于为构建好的服务实例关联其运行所依赖的其他服务。
在本发明实施例上述的服务接入管理系统中,在kubernetes容器云平台发布相应的服务实例之前,所述定义模块,还用于为服务实例定义相应的服务基本信息,所述服务基本信息包括:服务的名称、版本、图标、描述信息中至少一项。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例利用kubernetes容器编排技术,针对接入云管理平台的服务提供便捷的接入方法,可以满足云管理平台日益增多的服务接入需求,接入新的服务不需要重新开发,只需要制作好服务镜像并定义好kubernetes yaml资源文件即可。支持自定义资源规格、自定义服务接入模式,可以有效的提高服务接入效率,使得云管理平台拥有快速发布新服务能力。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种容器云环境下的服务接入管理方法,适用于Kubernetes容器云平台,参见图1,该方法可以包括:
步骤S11,获取服务实例运行所需的服务镜像。
在本实施例中,一个服务实例就是若干个资源对象的集合,在容器云平台中添加服务实例即可为容器云平台接入新的服务。服务实例都是运行在kubernetes容器集群里,而容器的运行需要依赖镜像,因此需要先构建相应的服务镜像。其中,Kubernetes是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
具体上述步骤S11可以通过如下方式实现:
从官方网站下载所需的服务镜像,或者,基于现有的基础镜像重新制备所需的服务镜像。
在本实施例中,镜像可以从官方下载,也可以基于基础镜像完全重新制作,容器运行时会接收kubernetes传入的环境变量,因此在制作镜像时就要考虑需要传递哪些环境变量,容器启动前通过shell脚本替换服务的配置项。制作完镜像后,需要推送到kubernetes集群关联的镜像仓库,以便服务实例启动时,镜像能够正常拉取。图2是以redis服务实例为例,进行的说明,图2中制作redis镜像,推送redis镜像到镜像仓库。
步骤S12,为服务实例定义相应的规格和服务配置信息;
在本实施例中,每个服务使用CPU、内存、存储都不一样,可以根据服务及业务使用场景灵活制定多个资源规格,给用户不同的选择空间。可以灵活定制服务实例的CPU、内存、存储规格等规格和服务配置信息(例如图3的示例),最大程度地满足用户需求。在服务实例配置中可以配置用户申请、激活时要显示的字段及字段的正则表达式、默认值、校验规格,这些字段配置信息会在服务申请或启动时传给freemarker模板引擎,再有freemarker模板引擎解析,传递给容器。
步骤S13,编写并上传包含有所需容器资源的yaml文件,容器资源用于构建kubernetes平台的服务实例。
在本实施例中,yaml是专门用来写配置文件的语言,非常简洁和强大,远比json格式方便。Kubernetes管理的所有资源都可以称为资源对象,kubernetes支持使用yaml文件创建资源对象(pod、deployment、replicationController等),一个服务实例就是若干个资源对象的集合。服务实例的创建就是把yaml文件转换成Kubernetes可管理的资源对象。在实际应用中,可以针对每种kubernetes资源类型编写一个yaml,也可以将所有的资源类型全部写在一个yaml文件。Yaml文件里会变动的内容使用占位符替代,服务创建时,freemarker模板引擎会自动将占位符的替换成实例的真实数据。
具体地,上述步骤S13可以通过如下方式实现:
直接按照yaml文件格式编写yaml文件(参见图4的示例),
或者,在预设的yaml文件编辑界面填写容器资源的信息,形成相应的yaml文件(参见图5的示例)。
在本实施例中,租户可以通过系统接入界面就可以实现服务的接入,对于运营管理员可以编写kubernetes yaml资源文件实现服务的快速接入。由于不同接入手段的展示方式和能力都不同,为此提供了针对不同接入方式的支持,以保证各种接入方式都能得到比较好的使用效果。
步骤S14,利用freemarker模板引擎将上传的yaml文件转化为kubernetes容器云平台可管理的容器资源。
在本实施例中,使用yaml文件编排服务组件,结合freemarker模板引擎动态对yaml资源文件进行修改,创建满足不同需求的服务实例。图6为上传yaml文件的实例。
步骤S15,利用转化好的容器资源构建所需的服务实例,并为构建好的服务实例定义用户访问入口。
在本实施例中,访问入口即最终提供给用户访问的入口,支持不同的协议(http、tcp、udp),图7为服务实例用户访问入口的定义示例。
步骤S16,为构建好的服务实例关联其运行所依赖的其他服务。
在本实施例中,接入服务时可以定义服务依赖的其他服务,解耦服务与服务之间的依赖,即服务依赖可以将其他依赖的服务关联起来,例如接入kafka集群需同时接入zookeeper集群,这时就可以先将zookeeper集群接入,接入kafka集群时只需选择依赖zookeeper集群即可。需要说明的是,并不是每个服务实例均需要依赖其他服务,因此,步骤S16可以根据具体的服务实例来选择使用,这里不做限制(例如redis服务实例不依赖其他的服务,所以不用填写)。
步骤S17,为服务实例定义相应的服务基本信息,服务基本信息包括:服务的名称、版本、图标、描述信息中至少一项。
在本实施例中,服务基本信息可以包含服务的名称、版本、图标、描述等信息,这些信息会示到服务列表界面,这样用户可以对服务有大致的了解(例如8所示的示例)。创建服务时选择相应的接入服务,定义服务的产品名称、产品目录、图标、备注信息,图标默认会取服务接入的图标,在这里也可以修改。
步骤S18,检测构建好的服务实例,并在检测通过后在kubernetes容器云平台发布相应的服务实例。
在本实施例中,将上述步骤填入的信息保存好后就可以创建服务,服务接入人员、测试人员可以先进行功能测试,验证镜像、配置、yaml文件是否存在问题,验证通过后即可将当前服务发布。需要说明的是,组件有新的特性发布时,可以升级服务组件,不影响原有服务实例的运行,新的服务实例具有新的特性,两个版本实例可以同时运行。
图9是服务实例(redis服务)经测试后没有问题后,发布在平台上,供用户申请使用。图10是用户申请redis服务,包括填写好实例名称、选择部署模式、选择实例规格、选择存储大小。图11中服务实例(redis服务)激活后系统会提供访问地址,应用程序就可以通过该地址访问该服务实例,即用户可以使用。
本发明实施例利用kubernetes容器编排技术,针对接入云管理平台的服务提供便捷的接入方法,可以满足云管理平台日益增多的服务接入需求,接入新的服务不需要重新开发,只需要制作好服务镜像并定义好kubernetes yaml资源文件即可。支持自定义资源规格、自定义服务接入模式,可以有效的提高服务接入效率,使得云管理平台拥有快速发布新服务能力。
实施例二
本发明实施例提供了一种。容器云环境下的服务接入管理系统,执行了实施例一所述的方法,参见图12,该系统可以包括:获取模块100、定义模块200、处理模块300、构建模块400。
获取模块100,用于获取服务实例运行所需的服务镜像。
在本实施例中,一个服务实例就是若干个资源对象的集合,在容器云平台中添加服务实例即可为容器云平台接入新的服务。服务实例都是运行在kubernetes容器集群里,而容器的运行需要依赖镜像,因此需要先构建相应的服务镜像。其中,Kubernetes是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
定义模块200,用于为服务实例定义相应的规格和服务配置信息。
在本实施例中,每个服务使用CPU、内存、存储都不一样,可以根据服务及业务使用场景灵活制定多个资源规格,给用户不同的选择空间。可以灵活定制服务实例的CPU、内存、存储规格等规格和服务配置信息(例如图3的示例),最大程度地满足用户需求。在服务实例配置中可以配置用户申请、激活时要显示的字段及字段的正则表达式、默认值、校验规格,这些字段配置信息会在服务申请或启动时传给freemarker模板引擎,再有freemarker模板引擎解析,传递给容器。
处理模块300,用于编写并上传包含有所需容器资源的yaml文件,容器资源用于构建kubernetes平台的服务实例。
在本实施例中,yaml是专门用来写配置文件的语言,非常简洁和强大,远比json格式方便。Kubernetes管理的所有资源都可以称为资源对象,kubernetes支持使用yaml文件创建资源对象(pod、deployment、replicationController等),一个服务实例就是若干个资源对象的集合。服务实例的创建就是把yaml文件转换成Kubernetes可管理的资源对象。在实际应用中,可以针对每种kubernetes资源类型编写一个yaml,也可以将所有的资源类型全部写在一个yaml文件。Yaml文件里会变动的内容使用占位符替代,服务创建时,freemarker模板引擎会自动将占位符的替换成实例的真实数据。
处理模块300,还用于利用freemarker模板引擎将上传的yaml文件转化为kubernetes容器云平台可管理的容器资源。
在本实施例中,使用yaml文件编排服务组件,结合freemarker模板引擎动态对yaml资源文件进行修改,创建满足不同需求的服务实例。
构建模块400,用于利用转化好的容器资源构建所需的服务实例,并为构建好的服务实例定义用户访问入口。
在本实施例中,访问入口即最终提供给用户访问的入口,支持不同的协议(http、tcp、udp)。
处理模块300,还用于检测构建好的服务实例,并在检测通过后在kubernetes容器云平台发布相应的服务实例。
在本实施例中,将上述步骤填入的信息保存好后就可以创建服务,服务接入人员、测试人员可以先进行功能测试,验证镜像、配置、yaml文件是否存在问题,验证通过后即可将当前服务发布。需要说明的是,组件有新的特性发布时,可以升级服务组件,不影响原有服务实例的运行,新的服务实例具有新的特性,两个版本实例可以同时运行。
具体地,获取模块100,还用于从官方网站下载所需的服务镜像,
或者,基于现有的基础镜像重新制备所需的服务镜像。
在本实施例中,镜像可以从官方下载,也可以基于基础镜像完全重新制作,容器运行时会接收kubernetes传入的环境变量,因此在制作镜像时就要考虑需要传递哪些环境变量,容器启动前通过shell脚本替换服务的配置项。制作完镜像后,需要推送到kubernetes集群关联的镜像仓库,以便服务实例启动时,镜像能够正常拉取。
具体地,处理模块300,还用于直接按照yaml文件格式编写yaml文件,
或者,在预设的yaml文件编辑界面填写容器资源的信息,形成相应的yaml文件。
在本实施例中,租户可以通过系统接入界面就可以实现服务的接入,对于运营管理员可以编写kubernetes yaml资源文件实现服务的快速接入。由于不同接入手段的展示方式和能力都不同,为此提供了针对不同接入方式的支持,以保证各种接入方式都能得到比较好的使用效果。
可选地,在为构建好的服务实例定义用户访问入口时,处理模块300,还用于为构建好的服务实例关联其运行所依赖的其他服务。
在本实施例中,接入服务时可以定义服务依赖的其他服务,解耦服务与服务之间的依赖,即服务依赖可以将其他依赖的服务关联起来,例如接入kafka集群需同时接入zookeeper集群,这时就可以先将zookeeper集群接入,接入kafka集群时只需选择依赖zookeeper集群即可。
可选地,在kubernetes容器云平台发布相应的服务实例之前,定义模块200,还用于为服务实例定义相应的服务基本信息,服务基本信息包括:服务的名称、版本、图标、描述信息中至少一项。
在本实施例中,服务基本信息可以包含服务的名称、版本、图标、描述等信息,这些信息会示到服务列表界面,这样用户可以对服务有大致的了解。创建服务时选择相应的接入服务,定义服务的产品名称、产品目录、图标、备注信息,图标默认会取服务接入的图标,在这里也可以修改。
本发明实施例利用kubernetes容器编排技术,针对接入云管理平台的服务提供便捷的接入方法,可以满足云管理平台日益增多的服务接入需求,接入新的服务不需要重新开发,只需要制作好服务镜像并定义好kubernetes yaml资源文件即可。支持自定义资源规格、自定义服务接入模式,可以有效的提高服务接入效率,使得云管理平台拥有快速发布新服务能力。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是:上述实施例提供的容器云环境下的服务接入管理系统在实现容器云环境下的服务接入管理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的容器云环境下的服务接入管理系统与容器云环境下的服务接入管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。