拓维信息使用 Rainbond 的云原生落地实践

❝我是来自拓维信息基石研究院 PAAS 团队的 Golang 工程师丁鹏,同时我也是 Rainbond 社区 TOC 成员之一。

我们团队主要负责云原生应用平台的选型,搭建与开发,以此做到对下屏蔽底层的基础设施,对上托管我们的微服务应用,便捷高效的帮助企业内服务的云原生落地。

企业简介

拓维信息是中国领先的软硬一体化产品及解决方案提供商。

1996年成立,2008年上市(002261.SZ),以湖南为总部,在北京、上海、深圳等地设有分支机构,员工4000余名。业务涵盖政企数字化、智能计算、鸿蒙生态,覆盖全国31个省级行政区、海外10+国家,聚焦数字政府、运营商、考试、交通、制造、教育等重点领域和行业,服务超过1500家政企客户,为其提供全栈国产数字化解决方案和一站式全生命周期的综合服务。

拓维信息立志成为一家不断创新的科技企业,从运营商到数字政府、考试、制造、交通、教育等行业和领域,持续深耕IT软件领域。

PAAS 之前

在使用一款易用的 PAAS 产品之前,我们各个团队的服务部署方式并不统一:

  • A 团队申请云服务器,自搭建 jenkins 将应用直接部署到服务器;
  • B 团队申请云服务器,使用 kubeadm 搭建 K8s 集群,开发成员编译镜像,运维成员编写应用声明文件进行部署与维护;
  • C 团队…

可以看出,当前的应用运维管理方式存在着很多问题:

  1. 云资源管理的混乱:费用统计麻烦,资源利用率低;
  2. 团队应用管理的混乱:多制品库,多种配套管理软件;无法对应用生命周期的可视化管理,监控问题,日志问题;
  3. 运维重心:以资源为运维重心,耗费人力创造力,重心应该转移到应用本身,更关注业务的创新;

PAAS 需求

为了解决眼前资源以及应用管理乱象,我们需要一个 PAAS 平台。这个 PAAS 平台我们期待它具有的能力:

  • 易用:不需要开发人员,运维人员耗费大量的时间精力学习应用管理,云部署等知识,做到应用的快速交付,持续交付;
  • 自动化:对应用全生命周期可管理,从源码到可访问的服务,到日志,监控等都可以在平台呈现;
  • 可视化:应用全生命周期可管理,从基本的应用部署,滚动更新,停止等,上升到日志,监控,可伸缩等能力,可以在平台可视且轻松管理;

选型 Rainbond

为了加快 PAAS 平台建设的步伐,我们决定站在巨人的肩膀上,从社区中对 几款 PAAS 产品进行筛选。对比其优劣势,选择更符合我们团队需求的那款——最终 Rainbond 脱颖而出了。

Rainbond 的优势:

  • 以应用为中心的设计理念,做到了真正的易用,屏蔽基础设施概念,让开发团队得以专注业务本身;
  • 较完整的自动化能力,完整的可视化管理能力,基本符合需求的日志监控功能;
  • 直观的微服务拓扑展示,利用服务网格治理实现本地访问,减少服务上 PAAS 的配置改动(这是一个意外惊喜~);
  • 应用商店提供了常用软件,帮助一键部署。

除此之外,Rainbond 还具有让我们额外惊喜的能力:

  • 应用跨集群,跨团队的快速复制能力,使多环境高效部署成为可能;

  • 完备的集群端组件,网关,日志,甚至制品库(可替换),使得 Rainbond 本身可以完整提供应用管理的能力;

  • 自定义初始化容器以及SideCar容器能力,可插拔的方式为组件提供额外能力;

Rainbond 实践

我们使用 Rainbond 构建组件呈现:

  1. 可视化的组件拓扑以及组件依赖,以及由此带来的相互依赖组件之间本地化的访问方式
  1. 组件的全生命周期管理,组件所需基础设置资源轻易配置
  1. 高效的网关配置中心,不再需要频繁登录云平台控制台配置负载均衡

Rainbond 足够易用到不需要我们去介绍怎么使用它来构建与管理组件。

我们在其他领域的一些使用经验。

单域名多路由服务

默认组件开通 http 端口时得到这样的访问 url:

  • a组件:http://a.apps.example.com

  • b组件: http://a.apps.example.com

而下面才是你期待的 url:

  • a 组件:http://apps.example.com/a

  • b 组件:http://apps.example.com/b

那么你可以使用 Rainbond 网管的 PathRewrite 功能:

自定义插件

基于 Rainbond 的插件可插拔设计,我们可以自定义插件服务。

文件管理插件

你可能会有上传文件到组件容器的需求,得益于 Rainbond 自定义开发插件的功能,你可以通过开发插件来为组件实现文件管理插件,你只需要为你的组件安装具有文件管理能力的插件,然后再为组件创建一个目标目录的共享存储,再通过开通组件端口,即可实现组件容器的文件管理。类似下图

「创建插件」

「配置插件环境变量」

「开通插件」

「创建共享存储」

「开通http网关」

「数据中间件管理插件」

部署了如 MySQL,Redis 的数据中间件,苦于没有现成的管理软件,或者当前无法对外开通 tcp 端口,那么你可以基于 dbgate 这款开源软件来开发一款数据中间件的管理插件。

我相信大家已经会举一反三了,不再示例。

最后

Rainbond 目前已经迭代到了 V5 大版本了,作为一款易用的 PAAS 云原生应用平台,功能也趋于完备,我们也期待 Rainbond 能发展的越来越好。

得益于 Rainbond 的社区支持,我们在使用 Rainbond 时都比较顺利,Rainbond 确实帮助我们团队内顺利的过渡到了云原生的应用管理阶段,降低了耗费在云资源管理上的精力,转而关注应用本身。

而在使用过程中遇到功能 bug 或有更佳实践时,我们也倡导团队积极向社区提交 issue,或排查解决,这是开源的健康循环的一点。

K8S中文社区微信公众号

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址