作者:徐鹏、深圳好上好信息(001298)、技能副总监、担任云服务器团队的架构规划及事务开发,拥抱云原生,乐于共享,终生学习。

公司简介

好上好信息(001298)是我国大陆一家致力于为我国智造供给全面支撑的综合服务商。总部坐落深圳,员工 500 多人,旗下拥有北高智、天午、大豆、蜜连和泰舸等子公司。主营事务包括电子元器件分销、物联网产品规划及芯片定制事务。好上好信息选用“集团大渠道+子公司事务自主”的运营形式,各个子公司在事务层面独立经营和办理,在仓储物流、资金信贷、IT 信息体系、计划规划等后台资源方面全面同享。

其子公司大豆电子致力于互联网智能家居的全体处理计划,为物联网生态供给蓝牙模组、WIFI 模组等定制化组件,蜜连科技供给物联网全体计划开发,主要为同享产品赋能,如同享单车、同享充电宝、同享纸巾机、同享咖啡机、环保塑料袋取袋机等。

布景介绍

各子公司引进物联网事务初期,分为两个团队,独立开发各自事务,资源分配上也是以满意当时事务需求为主,要求能快速开发功用,快速上线,人员投入相对较多,因项目开发较早,技能选型彼此独立,体系架构独立规划,大豆电子以 Spring boot 为主,蜜连科技以 Python Flask 为主,调配 Golang 做中间件消息处理,随着事务穿插重合增多,旧的体系架构存在如下坏处:

  • 各子公司独立开发,事务直接布置在 ECS 运转;
  • 数据层彼此独立布置在独自的 ECS 中运用
  • 子公司间相关联事务调用,经过第三方如此接口交互;
  • 布置需人工打包,上线,无 CI/CD;
  • 添加新的 ECS 供给服务时,布置操作杂乱;
  • 资源无法动态分配运用;
  • 监控引进 Prometheus,各部分功用自行装备完成。

旧事务架构如下:

好上好信息 API 微服务集群在 KubeSphere 的部署实践

选型说明

为处理当时架构中存在的事务中存在的问题,引进 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 进行分发内容。

好上好信息 API 微服务集群在 KubeSphere 的部署实践

体系架构图

好上好信息 API 微服务集群在 KubeSphere 的部署实践

选用规范 Spring Boot 微服务架构,事务层、中间件层、数据层、CI/CD 均运用 KubeSphere 进行布置,运用 K8s 规范存储类进行数据存储,中间件及数据层的装备数据及加密数据,则运用 K8s 装备字典和保密字典。

数据存储类

渠道存储部分运用 KubeSphere 装置时供给的 OpenEBS,事务及中间件数据均选用阿里 NAS 运用,便利事务数据备份。

云渠道 CI/CD 实践

CI/CD 流程图:

好上好信息 API 微服务集群在 KubeSphere 的部署实践

CI/CD 简述:

  • 开发人员提交代码;
  • Gitlab 触发推送事情;
  • GitLab 调用回调钩子触发 Jenkins 构建使命;
  • Jenkins 依据构建使命中流水线脚本进行使命履行,拉取代码、Maven 编译、Docker 构建、Docker 推送 Harbor、履行布置脚本、企业微信通知。

CI/CD 作业流:

好上好信息 API 微服务集群在 KubeSphere 的部署实践

API 微服务布置

作业负载布置

好上好信息 API 微服务集群在 KubeSphere 的部署实践

服务布置

好上好信息 API 微服务集群在 KubeSphere 的部署实践

保密词典

好上好信息 API 微服务集群在 KubeSphere 的部署实践

中间件装备

好上好信息 API 微服务集群在 KubeSphere 的部署实践

日志体系

  • 一部分,集群运转日志及容器运转日志,选用 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 发布!