Spring Cloud 传统微服务迁移到K8S

内容纲要

背景

当前ERP系统采用Docker方式部署,所有的服务发布和配置采用Docker-compose来部署。

采用Docker容器方式部署无法满足微服务对服务生命周期的需求,服务的生命周期主要包括:

  1. 打包(Packaging)
  2. 健康检查(Healthcheck)
  3. 部署(Deployment)
  4. 伸缩(Scaling)
  5. 配置(Configuration)

当前架构

file

迁移后架构

file

file

迁移考虑

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强大的应用生命周期能力来保障我们应用的存活和可用。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部