Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

一、MUST

1. 项目结构和部署

部署单元控制

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

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

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

2. 日志规范

日志级别

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

日志格式控制

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

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

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

Code Block
languagejava
themeDJango
<encoder class="net.logstash.logback.encoder.LogstashEncoder"></encoder>

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

Code Block
languagejava
themeDJango
<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

Code Block
languagejava
themeDJango
<maxHistory>7</maxHistory>

Appendix

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

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