news

新闻资讯

容器漂移新实践,助力技术能力跨层级共享

发布时间:2021-01-08 来源:杰狮信息 浏览量:388

导读:当前,跨层级政务服务共享通常可采用两种方式,一种是API级共享,一种是代码组件级共享。前者多用于数据共享,后者则更适于算法与能力的输出。在跨层级能力共享场景中,运行环境、数据库和中间件往往不一致,无论是数据库、网络环境或者其他配置都有各自业务环境下的命名要求和规则,基于代码级能力输出与资源复用面临很大的挑战。容器漂移,即不同生产环境之间容器的自动转移和动态部署,能够较好地解决该问题。

 

       近来,杰狮信息的研发团队在东部某省份开展了省市县多级政务云之间容器漂移的技术路线研究与应用实践,帮助用户实现了跨层级技术与算法能力的共享。

 

       在省市县三级的政务云环境中,数据库、镜像库和支撑中间件各自部署,相互之间通过有限的网络接口实现数据互通。我们充分依托阿里云政务版来实现容器部署、漂移与配置的自动化切换。

 

       采用EDAS服务托管容器应用

 

       EDAS是一个应用托管和微服务管理的PaaS平台,支持Spring Cloud、Dubbo等微服务运行环境。目前EDAS支持两种方式部署应用,一种是云服务器(ECS)部署,一种是K8S容器部署。考虑到需要共享的服务数量是动态的,而且有很高的弹性伸缩要求,如果采用云服务器,一个服务一个ECS实例,开销太大,所以不做考虑。我们采用K8S容器部署。

 

       通过6步,实现在政务云A网上的代码JAR包的容器化部署与共享:

       第一步,JAR上传并构建镜像;
       第二步,推送镜像给EDAS,以生成容器;
       第三步,调用EDAS接口创建应用;
       第四步,启动容器应用;
       第五步,通过SLB挂载物理网络网络;
       第六步,将服务挂载到CSB上,对外提供服务共享。

 

       统一配置接管容器环境变量

 

       在容器部署完成后,要能无缝地将能力迁移到阿里云政务B网上,重点要解决配置切换和部署包迁移问题。

 

       接入统一配置中心可以实现配置的在线修改,对于在程序启动过程中就需要使用到的配置,例如配置中心的服务地址,可让程序通过容器环境变量获取,也就是说要求程序中动态的配置不能写死,应该从外部进行获取。通过环境变量的方式获取配置,例子如下:

上述圈出的两个变量可以通过调用EDAS的插入K8S接口在容器服务K8s集群中创建应用时动态传入,Java只需要从环境变量里自动获取即可。

 

       迁移配置部署包镜像

 

       完成配置后,即可开展部署包迁移,我们采用拉取方式获取政务云A网的镜像,并将其推给B网,如下图:

程序在推送必要的元数据(应用名称、镜像地址、版本等)给政务B网的应用后,即可直接从A网镜像仓库获取镜像,实现应用创建。

 

综上,我们基于容器漂移实现了政务信息与技术能力的省市县跨层级共享。未来,杰狮信息将不断加强数字技术研究与应用实践,为政府数字改革贡献自己的力量。