5大支撑能力,6大系统优势!解读龙蜥场景化镜像平台技术 原创
编者按:在 2023 龙蜥操作系统大会阿里云分论坛上,龙蜥社区基础设施 SIG Maintainer 单凯伦从镜像平台、CI/CD全流程、镜像支持等方向解读了关于统一镜像制作在技术层面架构和优势,以及带开发者一起了解在龙蜥社区如何制作镜像。以下为演讲全文:
(图/龙蜥社区基础设施 SIG Maintainer 单凯伦)
镜像平台
场景化镜像平台是龙蜥社区推出的统一镜像制作平台,提供容器镜像、虚拟机镜像的 CI、CD 全流程支持,整个平台分为镜像制品、制品中心两个模块。镜像制品向用户开放社区已发布的镜像,用户在镜像制品中可查看镜像描述、镜像下载等;制品中心展示镜像 CI/CD 流程,在 Pipeline 流水线中可追溯构建、测试、安全扫描、发布等每一步流程。下图左边展示的是镜像制品,在图中可以看到龙蜥社区目前已发布的镜像,包括 base 类、应用类、语言类、AI 类等,右边展示的是镜像制作过程中的流水线信息,包括构建、测试、发布、安全扫描。
镜像平台地址:https://cr.openanolis.cn
接下来介绍镜像平台的整体系统架构,分为统一镜像集成框架、镜像制作调度系统、镜像用户页面三大部分。
统一镜像集成框架主要做镜像的分类管理,包括版本规则定义、镜像构建参数定义、批量构建管理、测试定义、以及自助工具等。镜像制作调度系统主要负责构建触发,触发方式分为 pr webhook 自动触发和手动按需触发,包括版本参数解析、镜像版本管理、pipeline 任务流水线、镜像发布系统、以及sdk 的交互。镜像 CI/CD 流程是用 ABS 来做镜像的构建,用 T-One 来做镜像的测试,镜像平台还建立了安全卡点,比如镜像安全扫描、镜像签名、sbom 等,镜像发布系统来做镜像的发布,发布系统主要包括 registry 管理、镜像分发等。然后容器镜像用户界面主要是提供 CI/CD 的可视化管理。
镜像平台的 5 大支撑能力:
1. 以AI 镜像为代表批量更新需求,包括通用镜像的 baseos 版本升级引入的批量更新需求。
2. 镜像依赖的环境版本变化,比如镜像依赖的 Python 版本、cuda 版本等带来的批量按需更新需求。
3. 提供镜像制作过程中的可信保证,包括镜像漏洞扫描、镜像签名、sbom 等。
4. 开源、闭源镜像构建,制作平台不仅支持 Anolis OS 开源镜像制作,也支持 Alibaba Cloud Linux 闭源镜像的制作。
5. 多来源仓库统一集成,支持 gitee、github等。
镜像平台的核心配置分为 version.yml、buildspec.yml,version.yml 主要是用来做应用的版本依赖管理,buildspec.yml 用来做镜像的构建、测试、发布配置等。
上图左边是 version.yml 的示例,在这个yml文件中我们主要定义了一个名为 grafana 的镜像,版本为 7.5.11, 依赖的 baseos 版本为 Anolis OS 8.6 和 Anolis OS 8.8,右边是 buildspec.yml 的示例,可以看到最上面定义了一些基本的变量,NAME 、VERSION 、IMAGE_TYPE、BASEOS_VEISION,中间定义了镜像的仓库信息配置,有 dockerhub 、ACR 两个发布的仓库地址,最下面 images 主要用来做镜像的构建参数配置、测试信息配置、镜像分发配置等,比如 platform 参数定义了一个镜像需要在哪几个架构上进行构建,默认构建 x86 和 Arm 两个架构,region 参数用于选择构建机器的地域,比如有些 dockerhub 仓库由于网络原因选择中国香港地域的构建机器可以为构建增速,下面就是指定 dockerfile 的路径,scene 字段下的 args 用来配置传递给 dockerfile 的参数,tags 用来指定镜像需要发布的tag 名,registry 用来配置镜像需要发布的地域。
镜像平台的 6 大优势:
1. 全流程制作,整个镜像的制作过程包括构建、测试、发布等都是自动化进行。
2. 通用型支持,支持镜像的多架构构建、多类型容器镜像构建,比如应用类、语言类、base 类、AI 类等。
3. 安全可信,提供镜像安全扫描、镜像签名、sbom信息等。
4. 一键多发仓库,镜像发布可由管理员一键发布到多个镜像仓库。
5. 自定义测试,根据不同等级的镜像提供不同的测试能力,节省测试成本,保障测试质量。
6. 按需更新,具备自动化批量更新和按需更新能力比如 baseos 升级带来的镜像批量更新等。
CI/CD全流程
场景化镜像提供容器镜像、虚拟机镜像的 CI、CD 全流程,包括镜像仓库提 PR 自动化触发 ABS 镜像构建,构建成功后自动触发 T-One 测试,然后进行安全卡点的设置,最后会把镜像分发到各个镜像仓库。镜像仓库支持 gitee、github 两大来源仓库,以及闭源的 code 平台仓库。ABS 主要做任务调度、支持批量构建、多架构构建、多地域构建、API 服务,T-One 主要做通用测试、AI 测试、容器测试、虚拟机测试、以及自定义测试,安全卡点支持镜像安全扫描、镜像签名、sbom,镜像分发支持一键分发到多大镜像仓库。
仓库配置是怎么定义的?镜像仓库支持主仓库、分仓库的配置,只有配置的镜像仓库允许接收仓库 PR 回调并触发构建、测试、及发布流程,镜像仓库支持 gitee github code 三大平台,其中 gitee github 为 Anolis OS 开源仓库,code 为 Alinux 闭源仓库。
ABS 是龙蜥社区推出的官方构建平台,提供基于 Anolis OS 发行版的构建服务,可以构建出基于龙蜥操作系统的软件包和镜像。上图左侧是 ABS 的截图,ABS 每天都会进行上千次构建,右侧是 ABS 在镜像构建上的支撑能力,可同时支持上百个镜像同时构建,并且一个 dockerfile 文件可同时构建出多种架构镜像,也支持构建机器地域选择,为构建增速。
T-One 是一站式、全场景的质量协作平台,用来解决大型软件各类的测试问题。龙蜥社区全部基于 T-One 来做各类测试,在社区建立测试标准的同时,也帮助合作方解决他们面临的同样测试问题,尤其是基于 T-One 建立的社区“众测共创”模式,解决了开源项目松散的开发模式和商业化产品高质量需求之间的巨大鸿沟,统一平台、统一标准、共同打造开源模式、商业化品质的龙蜥操作系统发行版。场景化镜像平台使用 T-One 做自动化并发测试,大大提升了测试效率和准确性。上图右侧是 T-One 的整体系统架构,最底层是测试机器池的配置,可以配置 ECS 弹性机器,固定机器、RunC、RunD 、神龙架构的机器;往上是 tone runner 的执行调度引擎,这里每天调度上万个测试并发任务;再往上是 T-One 的管理平台,在管理平台上可以创建 workspace ,在 workspace 中可添加机器,手动创建 job 等;最上层是 Testfarm,它是 T-One 的信息披漏平台,在 T-One 上产生的各类测试数据,测试报告等都会在此平台上进行批漏。
镜像平台提供安全扫描,镜像签名、SBOM,安全扫描目前支持两种扫描方式,开源扫描引擎和云安全扫描引擎,其中开源扫描引擎对镜像单层大小限制在 3G,对部分系统漏洞和应用漏洞不支持漏洞文件位置检查,云安全扫描引擎没有镜像大小限制,且支持系统漏洞,应用漏洞,基线检查,恶意样本检测,对于系统漏洞还提供一键修复能力。上图左边列出了镜像扫描结果镜像平台还提供镜像签名,保障镜像从分发到部署全链路的一致性,避免中间人攻击和非法镜像的更新及运行,除此以外还提供 SBOM 镜像物料清单,提供镜像的透明性,风险管理,快速漏洞响应,合规检查等能力。
镜像发布具备 registry 管理,镜像分发能力。右上角图中构建流水线上展示了整个的构建、测试、安全卡点、发布全流程,左侧是发布结果,详情展示出了镜像 tag 、registry 、发布时间、发布状态等信息,右下角是镜像平台的已发布的镜像制品,发布完的镜像都会在这里展示并提供给用户下载。
镜像支持
通过 AI 镜像的制作实例,介绍它从提交 PR 到最终 PR 合入,经历了哪些流程。
镜像制作平台在 AI 镜像制作上、普通的制作上都是具有非常大的优势。第一,在镜像仓库上提交 PR,提交完 PR 会进行解析 PR,并提示需要构建哪些镜像以及询问是否需要构建操作,如果需要构建会触发下一步;第二步 ABS 构建,构建成功后,会将结果返回到流水线上;第三步使用 T-One 进行整体的镜像测试,包括 AI 测试,测试后将测试结果返回到统一镜像平台上做结果的呈现;第四步安全卡点接入安全扫描信息;第五步是镜像发布,这里可以看镜像制品的详情页,在详情页里可以看到当前镜像的下载地址、版本信息、制品描述,都描述得很清楚,需要哪一个版本直接下载使用;最后是 PR 合入,镜像发布完后,PR 也会随时合入到仓库。至此,整个流程就制作完成。
精彩视频回放、课件获取:
2023 龙蜥操作系统大会直播回放及技术 PPT上线啦,欢迎点击下方链接观看~
回放链接:https://openanolis.cn/openanolisconference
技术 PPT :关注龙蜥公众号【OpenAnolis 龙蜥】,回复“龙蜥课件”获取。
—— 完 ——