作者:徐鹏、深圳好上好信息(001298)、技能副总监、担任云服务器团队的架构规划及事务开发,拥抱云原生,乐于共享,终生学习。
公司简介
好上好信息(001298)是我国大陆一家致力于为我国智造供给全面支撑的综合服务商。总部坐落深圳,员工 500 多人,旗下拥有北高智、天午、大豆、蜜连和泰舸等子公司。主营事务包括电子元器件分销、物联网产品规划及芯片定制事务。好上好信息选用“集团大渠道+子公司事务自主”的运营形式,各个子公司在事务层面独立经营和办理,在仓储物流、资金信贷、IT 信息体系、计划规划等后台资源方面全面同享。
其子公司大豆电子致力于互联网智能家居的全体处理计划,为物联网生态供给蓝牙模组、WIFI 模组等定制化组件,蜜连科技供给物联网全体计划开发,主要为同享产品赋能,如同享单车、同享充电宝、同享纸巾机、同享咖啡机、环保塑料袋取袋机等。
布景介绍
各子公司引进物联网事务初期,分为两个团队,独立开发各自事务,资源分配上也是以满意当时事务需求为主,要求能快速开发功用,快速上线,人员投入相对较多,因项目开发较早,技能选型彼此独立,体系架构独立规划,大豆电子以 Spring boot 为主,蜜连科技以 Python Flask 为主,调配 Golang 做中间件消息处理,随着事务穿插重合增多,旧的体系架构存在如下坏处:
- 各子公司独立开发,事务直接布置在 ECS 运转;
- 数据层彼此独立布置在独自的 ECS 中运用
- 子公司间相关联事务调用,经过第三方如此接口交互;
- 布置需人工打包,上线,无 CI/CD;
- 添加新的 ECS 供给服务时,布置操作杂乱;
- 资源无法动态分配运用;
- 监控引进 Prometheus,各部分功用自行装备完成。
旧事务架构如下:
选型说明
为处理当时架构中存在的事务中存在的问题,引进 K8s + Docker 对现有容器进行改造,一起进行新事务扩展。
在进行 K8s 调研及运用时,学习一众 K8s 相关技能,并建立出一整套的 K8s 集群进行测试比照,K8s 官方供给的办理渠道,操作方法冗杂,建立进程比较杂乱,在研究 K8s 的进程中,经过网络共享了解到 KubeSphere 渠道。
经比照后发现:
- KubeSphere 是 Kubernetes 之上构建的面向云原生运用的分布式操作体系,包含了 K8s 所能完成的一切功用;
- KubeSphere 在 K8s 的基础上,发起开箱即用,内置多种可装备插件,为运用者供给相对最优处理计划;
- KubeSphere 供给多租户办理,监控告警等各种监看功用;
- KubeSphere 办理界面比照 K8s 简洁明了,操作便利;
- KubeSphere 供给 Kubekey 快速集群建立,只需求简略的几个装备修正,便可完成 K8s 集群,KubeSphere 办理页面等众多杂乱的装置布置作业;
- KubeSphere 为国内开源项目,供给丰富的示例文档、视频教程、开源社区等,出现问题时更快速的找到处理计划。
现在,我同新事务运用 SpringCloud 微服务事务进 KubeSphere 出产集群、 KubeSphere 测试集群来满意我司事务的展开,运用 GitLab+Harbor+KubeSphere 供给的 DevOps,完成 CI/CD,完成快速布置,高效监看。
实践进程
硬件资源
阿里云 ECS(8C 16G) 12 台。阿里云 SLB 1 台。
资源分配
- 出产集群: 阿里云 SLB 1 台、阿里云 ECS 8 台
- 测试集群: 阿里云 ECS 3 台
- 代码及 BUG 办理:阿里云 ECS 1 台
布置架构
- 出产环境:为满意 K8s 集群服务需求做到高可用,需求保证 kube-apiserver 的 HA ,运用了阿里云 SLB 的方法进行高可用装备,具体布置结构如图;
- 测试环境:运用三台 ECS 建立 KubeSphere 集群,其间 Master 一起做 worker 节点运用(不引荐);
- 代码及缺陷追踪体系: 独自运用一台 ECS 运用 Docker 建立,便利迁移与保护,为集团内一切技能开发人员供给 Git Server 及 mantis 服务;
- 数据存储:数据存储层运用阿里 NAS 文件体系,便利数据快照备份及容量扩展;
- 互联网文件分发:运用阿里云 OSS + 阿里云 CDN 进行分发内容。
体系架构图
选用规范 Spring Boot 微服务架构,事务层、中间件层、数据层、CI/CD 均运用 KubeSphere 进行布置,运用 K8s 规范存储类进行数据存储,中间件及数据层的装备数据及加密数据,则运用 K8s 装备字典和保密字典。
数据存储类
渠道存储部分运用 KubeSphere 装置时供给的 OpenEBS,事务及中间件数据均选用阿里 NAS 运用,便利事务数据备份。
云渠道 CI/CD 实践
CI/CD 流程图:
CI/CD 简述:
- 开发人员提交代码;
- Gitlab 触发推送事情;
- GitLab 调用回调钩子触发 Jenkins 构建使命;
- Jenkins 依据构建使命中流水线脚本进行使命履行,拉取代码、Maven 编译、Docker 构建、Docker 推送 Harbor、履行布置脚本、企业微信通知。
CI/CD 作业流:
API 微服务布置
作业负载布置
服务布置
保密词典
中间件装备
日志体系
- 一部分,集群运转日志及容器运转日志,选用 KubeSphere 默许供给的 ES 进行搜集存储;
- API 事务部分日志选用 logstash + ElasticSearch 进行搜集落盘,选用 kibana 进行日志读取及查看。
Q&A
1. 运用 Aliyun Docker 库房,CI/CD 耗时很久。
处理:从运用商铺装置 Harbor,库房由 Aliyun Docker 转为 Harbor。
2. Jekins 常常重启。
处理:kubesphere-devops-system 中 devops-jenkins 敞开了内存限制 2G,修正为 4G。
3. Devops 与自建 Gitlab 调配不知道怎么触发。
处理:进入 Jenkins 在流水线上运用通用钩子触发。
运用作用
现在在运用 KubeSphere 的体会:
- 装置 KubeSphere 环境非常便捷,基本上归于开箱即用;
- CI/CD 大大简化了开发布置成本;
- KubeSphere 内置的多种安稳高效组件,保证集群的安稳运转;
- KubeSphere 可以运用第三方 Helm 库房,便利装置 Helm 运用,在装置中间件上,简化了原有的编写 yml 文件的进程。
未来规划
- 现在公司新事务运转在 KubeSphere 集群,未来规划将旧事务滑润迁移进 KubeSphere 集群;
- 现在微服务 Spring Cloud,治理选用 sentinel,更多新事务有可能选用 Golang 开发,到时会运用的网关的无侵入功用。
本文由博客一文多发渠道 OpenWrite 发布!