Page tree
Skip to end of metadata
Go to start of metadata

现平台组服务生产环境已基本全部迁移至K8S集群。将来将会在测试环境同样构建K8S集群,提供测试环境部署和服务。

现提供服务迁移相关的推荐指引,大体分为

  • MUST必须部分

  • NICE优化部分

其中,MUST部分为硬性规定,如果无法遵守,将可能服务进行规范下的正常部署运维,导致工作进程受阻。NICE部分为可选择的优化部分,如果提供, 将更加有利于后期优化部署,以及相关的本地调试。

本规范文档规范覆盖范围:

  1. 后端Java SpringBoot项目结构和部署

  2. 服务端存在日志需求的服务


一、MUST

1. 项目结构和部署

部署单元控制

  • 所有的部署单元应该提供打包成可部署运行镜像的Dockerfile

  • 所有的部署单元应该以-dist为名称后缀

  • 所有的部署单元应该提供清楚需要变更的部署时配置选项

2. 日志规范

日志级别

  • 严禁生产环境开启任何DEBUG级别的日志。

日志格式控制

日志规范统一采用ELK的LogStash收集插件格式。

配置采用Spring Boot的logging配置文件(基于logback),示例配置可见assets/logback-spring.xml

在其中配置日志输出格式为对应的LogstashEncoder,如下:

<encoder class="net.logstash.logback.encoder.LogstashEncoder"></encoder>

此类需要依赖maven依赖,更多配置详情可见官方文档

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
</dependency>

日志路径和文件名称控制

日志路径控制

所有部署单元的日志输出路径应为/tmp/logs/${fileDir}/${profile}。其中:

  • ${fileDir} 为对应的部署单元的名称,如pp-gateway-dist

  • ${profile} 为对应的部署单元主环境名称(及当前对应的CI/CD阶段对应的环境),如dev, test, uat, prod等。

日志名称控制

默认日志文件${fileDir}-%d{yyyy-MM-dd}.log,其中:

  • ${fileDir} 为对应的部署单元的名称,如pp-gateway-dist

  • 后缀直接使用日期后缀即可。

建议控制日志文件保留数量,防止容器长期运行膨胀,占用磁盘。

二、NICE

1. 项目结构和部署

部署单元控制

  • 推荐使用Spring Boot Jar以及Dependency 解压repackage的方式构建项目,以及镜像。详见官方网站

  • 推荐通过ini文件方式提供可选配置,并在镜像内配置文件中提供默认配置。(ini配置文件更好的适配IDEA调试,可以直接CP配置进行各环境调试)

  • 推荐提供相关脚本,便于构建镜像,进行本地的docker容器内部署调试。见assets目录下相关文件

2. 日志规范

  • 日志配置在MUST规范下,可以根据实际情况与运维老师约定添加参数,进行配置以及对应的日志索引。

  • 当有其它业务日志等多日志文件输出的情况时,需要和运维老师协商确定日志收集方案。

日志文件数量限制

每个用途种类的日志文件推荐保存7天,及在基于MUST部分规范的情况下设置一下配置即可。可见示例assets/logback-spring.xml

<maxHistory>7</maxHistory>

Appendix

本文档现版本 20190730,为文档初版。

文档形成基于平台组现有项目迁移K8S经验形成,仍然存在需要改进的地方。如有其他建议,可在GitLab对应的issue中提出。









Write a comment…