应用容器化改造上openshift时,有那些规范和注意事项:
如:
日志方案:应用日志是一行为单位还是以json, 各有什么优缺点。目前我行以行为单位,但是有些应用会输出json, 导致日志不好分析
openshift的scc: 企业在实践中 是使用anyuid还是restricted,或者其他? restricted安全性较高,但是个别应用需要指定用户,这就要求使用anyuid
应用容器化上OpenShift,整体上要符合如下标准:
1.已建立了清晰的可自动化的编译及构建流程
应用使用了如Maven、Gradle、Make或Shell等工具实现了构建编译步骤的自动化。这将方便应用在容器平台上实现自动化的编译及构建。
2.已实现应用配置参数外部化
应用已将配置参数外部化与配置文件或环境变量中,以便于应用容器能适配不同的运行环境。
3. 已提供合理可靠的健康检查接口
容器平台将通过健康检查接口判断容器状态,对应用服务进行状态保持。
4. 已实现状态外部化,实现应用实例无状态化
应用状态信息存储于数据库或缓存等外部系统,应用实例本身实现无状态化。
5. 不涉及底层的操作系统依赖及复杂的网络通信机制
应用以处理业务为主,不强依赖于底层操作系统及组播等网络通信机制以提高可移植性。
6. 部署交付件及运行平台的大小在2GB以内
轻量级的应用便于在大规模集群中快速传输分发,更符合容器敏捷的理念。
7. 启动时间在5分钟以内
过长的启动时间将不能发挥容器敏捷的特性。
其他的注意事项,内容很多,建议可以关注我那本《OpenShift在企业中的实践》书籍,里面通过2-3章进行了阐述。
就日志而言,目前还是输出 json比较多,可以借助于jq工具对json文件进行格式化。
就scc而言,通常不会使用anyuid,如果个别应用需要高权限,则单独给他的Service Account赋权就可以,例如
# oc adm policy add-scc-to-user anyuid -z apacheuser
这样虽然稍微麻烦一点,但对金融客户而言,安全性和稳定性是第一位的。