内容目录
背景
当前ERP系统采用Docker方式部署,所有的服务发布和配置采用Docker-compose来部署。
采用Docker容器方式部署无法满足微服务对服务生命周期的需求,服务的生命周期主要包括:
- 打包(Packaging)
- 健康检查(Healthcheck)
- 部署(Deployment)
- 伸缩(Scaling)
- 配置(Configuration)
当前架构
迁移后架构
迁移考虑
helm
创建一个基础Helm Chart,每个工程中添加自己的Helm Chart目录,并将以来基础的Helm Chart,使用Jenkins进行Helm 打包,依赖下载和安装。
工程改造
1. Gateway 路由方式
Gateway禁用注册中心,更改路由方式。
2. 注册中心
SpringBoot工程中禁用注册中心。
3. 内部调用(Feign)
所有Feign内部调用都添加url,url使用k8s service name或者route。
4. 配置
所有配置均采用k8s的configmap和secrets来,非机密信息采用ConfigMap方式创建到k8s中, 相关账号密码,SK/AK等采用Secret创建到k8s, 使用helm方式将ConfigMap和Secret属性注册到容器的环境变量中,工程中spring boot的yaml配置文件采用${xxx}来取值,例如:
# 数据库
spring:
application:
name: auth-center
shardingsphere:
datasource:
names: master,slave0
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: ${dbMasterUrl}
username: ${dbUsername}
password: ${dbPassword}
initialSize: ${dbPoolInitialSize}
minIdle: ${dbMinIdle}
maxActive: ${dbMaxActive}
maxWait: ${dbMaxWait}
# redis
redis:
database: 2
host: ${redisHost}
port: ${redisPort}
总结
架构升级后,我们可以借助于k8s强大的应用生命周期能力来保障我们应用的存活和可用。