## RMDC-K8S 部署方案 ### 构建 1. 前提条件 1. 已经存在k8s集群 2. 已经存在harbor仓库 harbor.wdd.io:8033 3. 构建主机 192.168.35.80 已经存在go环境 node环境 docker环境 2. 需要实现的内容,在windwos实现powershell脚本,实现如下的功能 1. 将本地的代码通过rsync推送至192.168.35.80的工作目录 2. 在192.168.35.80实现代码的编译工作 1. 前端使用node构建 2. 后端使用go构建 3. 构建产物放置于项目目录 rmdc-k8s-deploy/build目录下 3. 在192.168.35.80实现dockerfile构建,以下为不同的模块 1. 构建的dockerfile放置于项目目录 rmdc-k8s-deploy/dockerfile目录下 2. 构建RMDC-Frontend前端代码 1. 基础镜像为 harbor.wdd.io:8033/rmdc/nginx:1.27.0 2. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-frontend:${日期} 3. 前端代码构建需要有生产环境构建的配置 4. 前端代码的API调用的HOST 需要根据实际访问的域名进行配置 3. 基础后端镜像构建 1. 基础镜像为 harbor.wdd.io:8033/rmdc/alpine:3.23.0 2. 指定docker的环境变量,时区等信息 3. 安装常用的基础工具 ping curl telnet netcat nmap mtr traceroute 4. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-backend-base:1.0 4. 构建RMDC-Backend后端代码 1. 基础镜像为 harbor.wdd.io:8033/rmdc/rmdc-backend-base:1.0 2. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-backend:${日期} 5. 构建RMDC-watchdog镜像 1. 基础镜像使用 harbor.wdd.io:8033/rmdc/rmdc-watchdog-base:1.0 1. 参考[Dockerfile.backend-base](rmdc-k8s-deploy/dockerfile/Dockerfile.backend-base), 安装必要的工具 2. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-watchdog:${日期} 6. 构建RMDC-watchdog-node镜像 1. 基础镜像使用 harbor.wdd.io:8033/rmdc/rmdc-watchdog-base:1.0 2. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-watchdog-node:${日期} 4. 在192.168.35.80实现harbor推送,将构建好的镜像推送至harbor仓库 5. 此脚本能够通过参数,指定需要构建的模块 1. 前端 2. 后端 3. RMDC-watchdog 4. RMDC-watchdog-node 5. RMDC-watchdog-agent ### K8S-YAML文件 1. RMDC组件需要实现的内容 1. 部署文件需要放置于项目目录 rmdc-k8s-deploy/rmdc-app目录下 2. 命名空间为 cmii-rmdc 3. 为RMDC-frontend实现Deployment和Service如果此模块构建,则需要更新该yaml中的Tag如果此模块构建,则需要更新该yaml 2. 镜像为 harbor.wdd.io:8033/rmdc/rmdc-frontend:${日期} 3. 副本数量为1 4. 端口暴露及Service端口 3. 为RMDC-backend实现Deployment和Service 1. 如果此模块构建,则需要更新该yaml中的Tag 2. 镜像为 harbor.wdd.io:8033/rmdc/rmdc-backend:${日期} 3. 副本数量为1 4. 端口暴露及Service端口 5. 如果此模块构建,则需要更新该yaml 4. 实现Ingress部分 1. Ingress的域名均采用 rmdc.titanium-bullhorses.io 2. 最好在一个Ingress文件中实现 3. 前端Ingress 4. API接口的Ingress 2. RMDC-watchdog组件需要实现的内容 1. 部署文件需要放置于项目目录 rmdc-k8s-deploy/rmdc-watchdog目录下 2. 命名空间为 cmii-rmdc 3. 为RMDC-watchdog实现Deployment和Service 1. 如果此模块构建,则需要更新该yaml中的Tag 2. 镜像为 harbor.wdd.io:8033/rmdc/rmdc-watchdog:${日期} 3. 副本数量为1 4. 端口暴露及Service端口 4. RMDC-watchdog-node组件需要实现的内容 1. 如果此模块构建,则需要更新该yaml中的Tag 2. 镜像为 harbor.wdd.io:8033/rmdc/rmdc-watchdog-node:${日期} 3. 副本数量为1 4. 端口暴露及Service端口 ## RMDC-watchdog-agent部分 部署文件需要放置于项目目录 rmdc-k8s-deploy/rmdc-uav目录下 ### uav后端JAVA的基础镜像 1. 提供基于openjdk11 17 21的版本 2. 需要能够正确的显示中文日志及字符 3. 安装尽可能丰富的基础工具类 4. 需要指定JVM的时区为Asia/Shanghai 5. 需要设置java的PATH环境变量 6. 需要设置JAVA_HOME环境变量 7. 端口暴露为 EXPOSE 8080 8. 参考为 [Dockerfile-base-java17](rmdc-k8s-deploy/rmdc-uav/base-image/Dockerfile-base-java17) 9. 基础镜像需要尽可能的小 10. 需要修改使用国内的镜像源 11. 最好基于 harbor.wdd.io:8033/rmdc/alpine:3.23.0 #### 不嵌入RMDC-watchdog-agent的时候, 1. 使用传统的start_up.sh 即为ENTRYPOINT ["./start_up.sh"] 2. 需要构建 镜像名为 harbor.wdd.io:8033/rmdc/openjdk17-base-tools:1.0 3. 需要同时 进行Tag为harbor.cdcyy.com.cn/cmii/openjdk17-base-tools:3.0 并且推送该镜像 #### 当嵌入RMDC-watchdog-agent时候 1. 需要go进行build 得到RMDC-watchdog-agent的压缩包 1. 需要记录构建出来二级制文件,命名规则为 rmdc-watchdog-agent-${日期} 2. 构建RMDC-watchdog-agent镜像 1. 需要内嵌rmdc-watchdog-agent版本信息的环境变量 RMDC_WATCHDOG_AGENT_VERSION=${日期} 2. OpenJDK-17版本 1. 基础镜像使用 harbor.wdd.io:8033/rmdc/openjdk17-base-tools:1.0 2. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-watchdog-agent-jdk17:1.0 3. OpenJDK-11版本 1. 基础镜像使用 harbor.wdd.io:8033/rmdc/openjdk11-base-tools:1.0 2. 镜像命名为 harbor.wdd.io:8033/rmdc/rmdc-watchdog-agent-jdk11:1.0 3. 内嵌RMDC-watchdog-agent的时候, uav后端程序需要使用ENTRYPOINT ["/cmii/cmii-watchdog-agent", "-business-program-type", "java", "-business-program-path", "/cmii/jarfile.jar"]进行启动