以下是公司内部整理的规范:
1、环境变量命名必须匹配c标准,matching regex [A-Za-z_][A-Za-z0-9_]* ,建议环境变量统一使用大写字母。
2、测试到生产应使用同一镜像。
3、容器应无状态完全自理,容器间不应有启动顺序要求(应用有需求的,请容器内自行构建重试等待机制),容器启动后的所有初始化操作需要在容器内部完成,启动后使用kuberctl exec,doker cp,docker exec等操作进行容器初始化配置是不可取和不被允许的。
4、小文件载入请使用Configmap,Configmap 只能存储配置文件等小文件(强烈建议不要存储代码),图片,二进制文件,压缩包及其它超过20k的大文件务必不能放入Configmap(容器内configmap注入文件的目录必须为空目录,否则目录内原内容会被覆盖),可以通过容器启动脚本自行在容器启动后从ftp tfs等处拉取。
5、容器内需要保持无状态,需要持久化的数据请放入持久化数据卷中,需要持久化存储的应用请联系运维部门申请,不能使用宿主机目录挂载到容器。
6、一个pod内的容器必然在一台宿主机上,对同pod内容器的网络调用,请使用127.0.0.1,对其它服务的非dubbo调用(如mysql),请尽量使用域名。
7、Rc文件中需要指明每个容器中所有监听的端口(containerPort),svc目前只能使用nodeport暴露方式,nodeport端口仅需配置整个项目要对外提供服务的端口如tomcat默认开放8005 8009 8080 三个端口,nodeport只需要配置需要暴露给pod外