EulerMaker核心架构解析:Kubernetes风格的组件设计与协作流程
EulerMaker核心架构解析Kubernetes风格的组件设计与协作流程【免费下载链接】EulerMakerA software package build system that completes the build from source code to binary packages and supports developers in customizing OS scenarios.项目地址: https://gitcode.com/openeuler/EulerMaker前往项目官网免费下载https://ar.openeuler.org/ar/EulerMaker是一款强大的软件包构建系统它采用Kubernetes风格的架构设计能够完成从源代码到二进制包的构建过程并支持开发者进行自定义操作系统场景。本文将深入剖析EulerMaker的核心架构带您了解其组件设计与协作流程。一、设计目标打造Kubernetes风格的构建系统EulerMaker的架构设计深受Kubernetes的启发旨在实现以下目标统一资源APIProject、Snapshot、Build、Job、Runner等资源统一通过ebs/v1API暴露提供一致的操作体验。统一数据访问业务组件不直接访问etcd和Elasticsearch而是统一通过ebs-apiserver读写资源确保数据一致性和安全性。声明式对象模型资源由metadata/spec/status组成普通更新和/status更新分离便于状态管理和追踪。Watch驱动协作controller、scheduler、runner通过watch机制获取资源变化实现高效的事件驱动协作。Project业务作用域Snapshot、Build、Job归属于Project同时提供全局list/watch API给系统组件兼顾业务隔离和全局调度。可容器化部署测试环境通过hacks/docker-compose.yml启动etcd、Elasticsearch和ebs-apiserver等组件便于快速搭建和测试。二、整体架构清晰的组件层次与交互EulerMaker的整体架构如图所示各组件职责明确协作顺畅用户 / 外部系统 | v ┌──────────────────────────────────────────────┐ ┌──────────────────┐ │ ebs-gateway │──────│ runner │ │ 认证、鉴权、审计、请求入口 │ │ Job 执行/心跳上报 │ └──────────────────────┬───────────────────────┘ └──────────────────┘ | v ┌───────────────────────────────────────────────┐ ┌───────────────────┐ │ ebs-apiserver │──────│ controllers │ │ ebs/v1 REST API / status subresource / watch │ │ scheduler │ └───────────────┬──────────────────┬────────────┘ └───────────────────┘ | | REST / list / watch | | v ┌──────────────────────────┐ ┌──────────────────────────┐ │ etcd │ │ Elasticsearch │ │ 主存储对象与 watch │ │ 主存储索引与增强数据 │ └──────────────────────────┘ └──────────────────────────┘核心原则所有资源读写最终都经过ebs-apiserver确保数据访问的统一性和安全性。runner统一访问ebs-gateway便于外部执行机和内部执行机使用同一套访问逻辑。etcd和Elasticsearch都是主存储etcd负责对象持久化、resourceVersion和list/watchElasticsearch负责对象索引、搜索和增强数据。三、核心组件各司其职的团队成员EulerMaker的核心组件就像一个高效的团队每个组件都有其独特的职责组件职责ebs-gateway系统入口负责认证、鉴权、审计和请求转发是外部访问系统的第一道关卡。ebs-apiserver统一资源API负责对象校验、默认值、存储访问、list/watch、/status子资源是系统的核心数据处理中心。etcd主存储保存资源对象、resourceVersion并提供list/watch能力确保数据的可靠存储和高效查询。Elasticsearch主存储保存对象索引、搜索字段和增强数据为系统提供强大的搜索和数据分析能力。controllers监听Project/Snapshot/Build等对象变化推进资源状态实现业务逻辑的自动化处理。scheduler监听全局Job选择Runner并更新Job状态负责任务的智能调度和分配。runner通过ebs-gateway注册Runner、心跳上报、监听绑定到自己的Job并执行是实际执行任务的工人。3.1 ebs-apiserver核心中的核心ebs-apiserver是EulerMaker的核心组件基于k8s.io/apiserver的GenericAPIServer实现复用了Kubernetes apiserver的资源注册、REST storage、watch、resourceVersion、/status子资源和对象元数据机制。Project子资源API由project_alias.go提供轻量适配例如将/apis/ebs/v1/projects/{project}/builds重写到内部scoped storage路径/apis/ebs/v1/namespaces/{project}/builds该内部路径只作为实现细节外部文档和业务调用统一使用Project API和全局系统API。详细实现见ebs-apiserver.md。四、资源模型Kubernetes风格的对象定义EulerMaker的资源模型遵循Kubernetes风格当前API group为apiVersion: ebs/v1顶层资源包括资源作用域说明Project集群级项目是Snapshot、Build、Job的业务归属SnapshotProject级项目快照BuildProject级构建任务JobProject级可调度执行任务Runner集群级执行机所有资源遵循Kubernetes风格对象结构例如Project资源apiVersion: ebs/v1 kind: Project metadata: name: openeuler-22-03-lts spec: displayName: openEuler 22.03 LTS status: phase: ActiveProject名用于内部scoped storage需要满足DNS1123 label约束只能使用小写字母、数字和-不能包含.。页面展示名称使用spec.displayName。详细字段定义见data-models.md。五、API设计RESTful风格的接口EulerMaker提供了丰富的RESTful API方便用户和系统组件进行交互。5.1 Project APIProject API提供了对Project资源的完整操作GET /apis/ebs/v1/projects POST /apis/ebs/v1/projects GET /apis/ebs/v1/projects/{name} PUT /apis/ebs/v1/projects/{name} PATCH /apis/ebs/v1/projects/{name} DELETE /apis/ebs/v1/projects/{name} PUT /apis/ebs/v1/projects/{name}/status5.2 Project子资源API用户侧通过Project API管理Snapshot、Build、Job/apis/ebs/v1/projects/{project}/snapshots /apis/ebs/v1/projects/{project}/builds /apis/ebs/v1/projects/{project}/jobs{project}是对象的唯一项目归属来源spec中不重复保存projectName。5.3 全局系统API调度器和控制器通过全局API跨Project list/watch/apis/ebs/v1/snapshots /apis/ebs/v1/builds /apis/ebs/v1/jobs典型的watch命令如下curl -k -N https://localhost:8443/apis/ebs/v1/builds?watchtrue curl -k -N https://localhost:8443/apis/ebs/v1/jobs?watchtrue六、存储设计etcd与Elasticsearch的完美结合EulerMaker采用etcd和Elasticsearch作为组合主存储各司其职。etcd主数据路径/registry/ebs/projects/{name} /registry/ebs/snapshots/{project}/{name} /registry/ebs/builds/{project}/{name} /registry/ebs/jobs/{project}/{name} /registry/ebs/runners/{name}这种布局同时满足Project内对象名称唯一{project}/{name}。全局list/watch监听/registry/ebs/builds、/registry/ebs/jobs等资源前缀。Project内list/watch监听/registry/ebs/builds/{project}等Project子前缀。Elasticsearch索引ebs-projects ebs-snapshots ebs-builds ebs-jobs ebs-runnersnamespaced对象写入ES时使用{project}/{name}作为文档ID请求时对/做URL escape。七、组件协作流程高效的事件驱动EulerMaker的组件之间通过事件驱动的方式进行协作确保系统的高效运行。7.1 用户请求流程用户 - ebs-gateway - ebs-apiserver - etcdebs-gateway负责入口能力ebs-apiserver负责资源语义和数据访问。7.2 Controller流程controller - watch Project/Snapshot/Build controller - create/update Snapshot、Build、Job controller - update statuscontroller只通过API操作资源不直接访问etcd确保了数据访问的统一性和安全性。7.3 Scheduler流程scheduler - watch /apis/ebs/v1/jobs scheduler - 过滤Pending Job scheduler - 选择Runner scheduler - update Job.status.runner / phaseScheduler使用全局Job API不需要逐个Project建立watch提高了调度效率。7.4 Runner流程runner - ebs-gateway - ebs-apiserver: register Runner runner - ebs-gateway - ebs-apiserver: update Runner.status heartbeat runner - ebs-gateway - ebs-apiserver: watch assigned Job runner - execute Job runner - ebs-gateway - ebs-apiserver: update Job.statusRunner作为集群级资源存在调度标签使用metadata.labels资源容量和运行状态写入status。runner不直接访问ebs-apiserver统一访问ebs-gateway外部执行机和内部执行机使用同一套客户端逻辑。八、部署快速搭建测试环境测试环境使用hacks/docker-compose.yml启动包含etcd、Elasticsearch和ebs-apiserver等组件启动命令docker compose -f hacks/docker-compose.yml up -d关键服务地址服务地址etcdhttp://localhost:2379Elasticsearchhttp://localhost:9200ebs-apiserverhttps://localhost:8443九、后续完善持续进化的架构当前架构后续主要完善方向生成真实OpenAPI schema提供更规范的API文档。完善认证、鉴权、审计与多租户策略增强系统安全性。补齐controller、scheduler、runner的实现提升系统功能完整性。接入正式的镜像构建和发布流程方便用户使用和部署。通过以上对EulerMaker核心架构的解析我们可以看到其Kubernetes风格的组件设计和高效的协作流程为软件包构建提供了强大的支持。如果您想深入了解EulerMaker可以通过以下命令克隆仓库进行探索git clone https://gitcode.com/openeuler/EulerMaker希望本文能帮助您更好地理解EulerMaker的架构设计为您的使用和开发提供有益的参考。【免费下载链接】EulerMakerA software package build system that completes the build from source code to binary packages and supports developers in customizing OS scenarios.项目地址: https://gitcode.com/openeuler/EulerMaker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Intel-glibc内存管理优化:Intel内存技术深度集成

Intel-glibc内存管理优化:Intel内存技术深度集成

Intel-glibc内存管理优化:Intel内存技术深度集成 【免费下载链接】Intel-glibc glibc with Intel specific enhancements 项目地址: https://gitcode.com/openeuler/Intel-glibc 前往项目官网免费下载:https://ar.openeuler.org/ar/ Intel-glibc…

2026/7/17 10:41:00阅读更多 →
5分钟快速上手!Tabby自托管AI编码助手完整配置指南

5分钟快速上手!Tabby自托管AI编码助手完整配置指南

5分钟快速上手!Tabby自托管AI编码助手完整配置指南 【免费下载链接】tabby Self-hosted AI coding assistant 项目地址: https://gitcode.com/GitHub_Trending/tab/tabby 你是否厌倦了依赖云端服务的AI编码工具?想要一个完全自主控制、数据不离开…

2026/7/17 10:40:59阅读更多 →
YOLO26目标检测实战:从训练到部署全流程指南

YOLO26目标检测实战:从训练到部署全流程指南

1. 为什么选择YOLO26进行目标检测训练YOLO26作为Ultralytics推出的最新一代目标检测框架,在计算机视觉领域引起了广泛关注。与传统的YOLO系列相比,YOLO26最大的突破在于它不再仅仅是一个目标检测模型,而是一个完整的机器学习生命周期管理平台…

2026/7/17 10:35:59阅读更多 →
C++ 二进制文件读写操作

C++ 二进制文件读写操作

在 C 中,处理二进制文件(如图像、音频、序列化数据等)与处理文本文件有本质区别。二进制读写要求数据在内存中的布局与文件中完全一致,不进行任何字符编码转换或格式化。 以下是关于 std::ifstream::read 和 std::ofstream::writ…

2026/7/17 11:41:18阅读更多 →
如何快速掌握Web安全扫描:Arachni框架的完整入门指南

如何快速掌握Web安全扫描:Arachni框架的完整入门指南

如何快速掌握Web安全扫描:Arachni框架的完整入门指南 【免费下载链接】arachni Web Application Security Scanner Framework 项目地址: https://gitcode.com/gh_mirrors/ar/arachni Arachni是一款功能全面、模块化的高性能Ruby框架,专为帮助渗透…

2026/7/17 11:41:18阅读更多 →
ZenlessZoneZero-OneDragon:基于计算机视觉的游戏自动化架构设计与实践

ZenlessZoneZero-OneDragon:基于计算机视觉的游戏自动化架构设计与实践

ZenlessZoneZero-OneDragon:基于计算机视觉的游戏自动化架构设计与实践 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDrag…

2026/7/17 11:41:18阅读更多 →
老视频画质太差?用Video2X让模糊画面瞬间变清晰

老视频画质太差?用Video2X让模糊画面瞬间变清晰

老视频画质太差?用Video2X让模糊画面瞬间变清晰 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video2x …

2026/7/17 11:41:18阅读更多 →
Wan2.2视频生成模型深度解析:混合专家架构与性能优化实战

Wan2.2视频生成模型深度解析:混合专家架构与性能优化实战

Wan2.2视频生成模型深度解析:混合专家架构与性能优化实战 【免费下载链接】Wan2.2-T2V-A14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-T2V-A14B Wan2.2作为新一代开源视频生成模型,采用创新的混合专家系统架构和高效压缩技术…

2026/7/17 11:41:18阅读更多 →
Codex CLI 2026实战指南:终端AI工具链的稳定性与国产模型集成

Codex CLI 2026实战指南:终端AI工具链的稳定性与国产模型集成

1. 项目概述:为什么2026年还在谈Codex CLI?它没死,只是换了一种活法 Codex CLI 这个名字在2026年听起来有点复古——就像在说“IE浏览器”或者“Windows Mobile”。但现实是,它不仅没退出历史舞台,反而在终端AI工具链里…

2026/7/17 11:36:17阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/17 10:42:55阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/17 8:31:03阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →