环境迁移
Platfor m Ops for AI 作为整合了 DataOps、MLOps、ModelOps 的复杂技术平台,在项目开发时仅使用一套系统无法支撑平台的稳定搭建,往往需要开发系统、集成测试系统、正式 环境系统在项目生命周期 中协作配合。将表、索引、并发程序、配置内容等资源从源环境迁移到另一个目标环境的过程就叫做环境迁移。
技术背景
发生迁移的环境一般包括开发环境、测试环境、生产环境 [24]。 开发环境:产品的配置可以在开发环境中进行变更。对于迁移过程,开发环境一般只作 为源环境。 测试环境:测试环境包含了生产环境中所有业务的应用程序和配置变更。将开发环境中 的资源迁移到测试环境中测试配置变更执行。测试环境既可以作为源环境也可以作为目标环 境。 生产环境:测试应用程序满足需求后,将应用程序和配置内容迁移到生产环境中。生产 环境一般只作为目标环境。 在环境迁移过程中,首先需要对源环境的资源进行拷贝,因此需要结合容器的镜像存储 功能。Docker registry 提供后端镜像存储服务,在迁移之前为了确认迁移后没有发生镜像丢 失的现象,先获取一份 Docker registry 中的镜像列表,接着采用复制镜像或是复制 registry 存储目录等方法,完成从源环境到目标资源的迁移工作。
思路方案
和数据集的共享类似,SecXOps 也支持项目代码的共享。团队开发过程中可以随时从 gitlab 上下载或同步代码,用户正在编辑的代码也会存储在 PVC 中,挂载到一个正在运行的 供用户在线编程的 pod 上。 容器的环境迁移需要通过封装镜像来实现。Docker 封装镜像有两种方式,docker commit 和 docker build。使用 docker commit 可以很方便地制作镜像,然而这种方式对于镜 像的使用者是完全未知的,使用者无法获取封装时对镜像做了哪些修改。同时这种修改是永 久性的,如果新的使用者使用该镜像创建容器修改之后继续使用 docker commit,将会导致 整个镜像越来越臃肿。而通常的 Docker 镜像是多层存储的,每一层都是在前一层的基础上进 行的修改,容器以镜像为基础,同样是多层存储,因此,如果可以把每一层操作的命令都写 入一个脚本,用这个脚本来制作镜像,上述问题将不再存在。这种方式即是使用 Dockerfile 进行 docker build。Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了构建镜像所 需的指令和说明。一个简单的 Dockerfile 示例如下图所示,通过类似的文件进行 build 即可将 环境进行复制。 Se用户在 SecXOps 平台上所开发的算法按照用户预先设定好的类型标签可以分为数据预处 理、特征提取、模型训练、超参调优等多种类型。当某个项目所使用到的算法性能优越时, 用户可以选择将其公开展示,此时 SecXOps 会检测对应的项目版本内是否有 Dockerfile,如 果有,则会在当前 Node 上根据该 Dockerfile 创建一个镜像,镜像内只包含用户的开发环境, 数据和代码会分别创建一个 Job,复制出一个新的 PVC。镜像创建成功后,SecXOps 会观测 当前项目所在的 Node 的资源是否充足,当 CPU、内存资源充足时,优先选择在该 Node 节 点上按照封装好的镜像创建一个容器,供用户进行开发,当 CPU、内存资源不充足或需要使 用 GPU 资源时,SecXOps 会将该镜像 push 到专为 SecXOps 平台搭建的 Harbor 服务中,随 后按照一定的策略挑选一个 Node 节点,将镜像从 Harbor 中拉取下来并创建 Pod。该 Pod 在启动时挂载数据和代码对应的 PVC,实现一键式的数据、代码以及开发环境的环境迁移。 整体流程如下图所示
在这里插入图片描述
参考资料
友情链接
GB-T 25067-2020 信息技术 安全技术 信息安全管理体系审核和认证机构要求