2.5 KiB
2.5 KiB
bridge的功能主要是用于educoder前台与k8s集群进行交互,主要有以下四个接口:
开启实训:openGameInstance
- 克隆版本库 gitClone
- 生成Tpi评测脚本,Tpi评测脚本只是在Tpm评测脚本模板的基础上,设定了当前工作目录(拷贝到工作目录并在脚本执行首行切换到tpi工作目录)
- 生成TPI yaml文件 打上TPI的标签 确定mountPath 写到工作目录
评测: buildJobForInstance
- 取版本库远端更新 gitPull
- 如果需要端口映射,通过端口检测策略,检测一个可用的端口,创建TPI service yaml文件并创建pod 以及 service service模板文件存储在中间层
- 调用评测脚本进行评测(这个过程中如果pod已经被销毁,则需要重新创建pod) 对测试用例,评测时候传过来,脚本仅传入输入,以数组形式传进去,在脚本中解析
- 执行完评测脚本之后将脚本执行完的结果进行再封装,回传给educoder前台
重置TPI (现成的) 重置TPM脚本或者版本库的时候由TPI发起更新请求更新已经开启的TPI
- 修改TPM脚本,需要重置已经开启的TPI
- 更新TPI版本库,保持与TPM同步
增加实训平台 删除 修改 查询
- 增加该实训平台对应的评测脚本的模板
- 提供镜像名,版本号,以及是否需要端口映射(指定服务的端口),来生成pod yaml文件模板(如果需要端口映射,service yaml)
- 设定该类实训的超时时间(每个实训存储其对应的实训平台类型)
webssh 和 评测的pod分别放到不同的namespace下 (对于webssh与评测用一个pod的情况呢?)
需要迁移过来的现有功能
- 定时删除pod,通过一关之后删除以及定时删除
- redis任务队列
- webssh
redis相关
- 键名"task":有序队列,存储一个评测任务的构建字符串(可用于生成一次评测任务),每个任务有一个分数用于排序。用途:排队
- 键名"taskNum":有序队列,存储一个pod及其中正在运行的任务数,score为这个pod的任务数(podName:taskNum)
- 键名"port":哈希表,存储一个pod及其对应的映射端口,podName:port
pod命名规则
- 评测:environment-tpi
- webssh: webssh-environment-tpi
- webssh+评测: evassh-environment-tpi
多profile配置
在tomcat/bin目录下的setenv.sh文件中设置了启动时使用的profile,
如: -Dspring.profiles.active=test
日志 正式版按天生成,测试版记入catalina.out文件中