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

45次阅读

共计 2599 个字符,预计需要花费 7 分钟才能阅读完成。

作者:徐鹏、深圳好上好信息 (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 开发,届时会应用的网关的无侵入性能。
正文完
 0