首页/新闻资讯/正文详情

Chaos Mesh 仓库开发指南:面向 AI 编码代理与开发者的工程实践手册

发布时间:2026/9/26 22:41:23 来源:云帆数科 栏目:资讯中心
Chaos Mesh 仓库开发指南:面向 AI 编码代理与开发者的工程实践手册
云原生运维测试可观测性【免费下载链接】chaos-meshA Chaos Engineering Platform for Kubernetes.项目地址https://gitcode.com/gh_mirrors/ch/chaos-mesh点击查看免费下载本篇技术指南以 Chaos Mesh 仓库根目录的 AGENTS.md 为骨架系统讲解这个 Kubernetes 混沌工程平台代码库的结构、开发命令、控制器设计约束与代码生成流程。读者将掌握如何安全地在这套多 Go 模块仓库中运行聚焦测试与全仓校验、正确触发 CRD/客户端/Swagger 等生成器、遵循控制器单一写入者设计规则并了解从 API 类型改动到 Helm 配置变更的逐类检查清单从而让人类开发者与 AI 编码代理都能高效、不破坏仓库地参与开发。项目概览三大运行时组件Chaos Mesh 是一个面向 Kubernetes 的云原生混沌工程平台cloud-native chaos engineering platform。其运行期组件分为三大部分它们相互配合完成从用户声明混沌实验到节点注入真实故障的完整闭环Chaos Controller Manager协调reconcileChaos Mesh 的各类 CRD 资源包括混沌实验Chaos、定时调度Schedule、工作流Workflow、状态检查StatusCheck以及多集群Multi-cluster资源。Chaos Daemon以特权 DaemonSet 形式运行在每个节点上通过容器运行时、网络设备、文件系统、进程与内核设施执行节点级故障注入。Chaos Dashboard一个 Go API 服务端加上 React Web 界面用于创建与观测混沌实验。从源码装配上看Controller Manager 通过 Uber Fx 依赖注入框架组装所有控制器controllers/fx.go中的controllers.Module同时提供 Chaos Daemon 客户端构建器、事件记录器、公共 pipeline 步骤与远程集群注册表并加载chaosimpl.AllImpl中注册的全部故障注入实现最终由 cmd/chaos-controller-manager 入口加载细节可参考 controllers/README.md。仓库地图四大 Go 模块与关键目录路径职责api/v1alpha1CRD 类型定义、校验/默认值 Webhook 与生成的 API 辅助代码。api/是一个独立的 Go module。controllerscontroller-runtime 协调器。chaosimpl/存放注入/恢复实现common/、action/、schedule/、statuscheck/、multicluster/提供外围控制逻辑。Pod 级的 HTTP、I/O、网络资源分别在podhttpchaos/、podiochaos/、podnetworkchaos/下有专属控制器。pkg共享运行期包包括 Daemon 服务、Dashboard API 与持久化、工作流控制器、选择器、指标与生成的客户端。cmd各二进制入口与仓库生成器。config、helm/chaos-mesh、manifestsKubernetes、Helm 与生成的部署产物。e2e-testGinkgo/Godog 端到端测试套件与 e2e helper其中包含两个额外的 Go module。uipnpm workspace包含 React/TypeScript/Vite 的 Dashboard 与 OpenAPI 代码生成器。build、hack、images容器化构建工具、辅助脚本与镜像定义。需要注意当前仓库共包含四个 Go module根模块、api/、e2e-test/、e2e-test/cmd/e2e_helper/全部声明 Go 1.25.11见根目录 go.mod 第 3 行。UI 侧 CI 使用 Node.js 24 与 pnpm 11。一旦这些版本发生变化应以仓库内检入的go.mod、UI 包清单与 CI 工作流为准它们是版本事实的唯一来源。在仓库中安全工作开发前应养成几条工作纪律这也是为 AI 编码代理设定的硬性约束编辑前先执行git status --short查看现场保留用户无关的改动未经确认不要丢弃任何生成或格式化产生的变更。迭代时优先运行最窄的相关测试仅在聚焦检查通过、且 Docker/时间成本合适时才运行全仓库检查。绝大多数顶层 Make 目标使用容器化的 dev/build 环境首次运行可能构建 Docker 镜像宿主机专属的二进制目标会显式以local/前缀命名。make check、make test、make generate并非只读操作它们可能重写生成代码、清单、模块文件、格式化后的 Go 文件或测试产物。运行后务必审查 diff只保留与任务相关的改动。除非任务确实需要且具备可随时销毁的 Kubernetes 集群否则不要运行 e2e 测试——该套件会安装资源并注入真实故障。不要直接编辑生成文件应修改其源文件再运行对应的生成器。开发命令总览运行make help可查看当前检出支持的完整目标列表。由于 Makefile 求值会计算镜像标签即使 Docker 不可用make help也可能输出一条 Docker socket 警告但目标列表本身依然可用。构建环境make image-dev-env make image-build-env make enter-devenv make enter-buildenvdev 环境包含代码生成、lint 与测试工具build 环境用于产出生产二进制与原生辅助对象。聚焦的 Go 测试当宿主机具备所需的 Go/CGO 与 envtest 依赖时直接用常规 Go 包选择方式快速迭代go test ./path/to/package go test ./path/to/package -run TestName (cd api go test ./v1alpha1/...)注意从拥有该包的 module中运行测试。仓库级的标准测试是make test从 Makefile 的test目标可见其完整流程先生成代码与原生测试工具generate manifests test-utils再启用 failpoint 插桩以串行方式-p 1带覆盖率运行根模块与api/模块的全部包测试最后禁用 failpoint。若该目标中途被中断或失败请先运行make failpoint-disable再继续。make coverage基于已存在的cover.out渲染报告文件不新鲜时应先跑make test。验证make check 与独立检查日常开发中不要动辄跑make check而应使用聚焦的包测试、编译与变更相关检查仅当变更范围有限时才运行对应的小范围独立检查。全量校验应保留给最终验证、跨领域大改动或显式要求make checkmake check是 CI 主验证任务的核心其目标依赖链为generate vet lint fmt tidy helm-values-schema见 Makefile覆盖仓库级代码生成、go vet、revive配置见 revive.toml、goimports、全部四个 module 的go mod tidy以及 Helm values schema 生成。部分步骤会重写已跟踪文件之后务必检查git diffCI 随后执行git diff --quiet要求这些检查不留下任何未提交的生成或格式化输出。make fmt使用goimports格式化所有手写 Go 文件并带-local github.com/chaos-mesh/chaos-mesh分组参数它不是单包命令。独立的make vet、make lint、make tidy分别执行make check的对应环节。make gosec-scan是独立的、非阻塞的安全报告不属于make check的一部分。代码生成make generate make proto make generate-makefilemake generate是 CRD/Helm 清单、deepcopy 方法、类型化 clients/informers/listers、Chaos Mesh API 辅助代码与 Dashboard Swagger 输出的总生成器其依赖链为manifests/crd.yaml generate-deepcopy generate-client chaos-build swagger_spec。它已包含manifests/crd.yaml除非只需要合并清单否则不要单独再跑该目标。修改 daemon 或 kernel 的 protobuf 定义后运行make proto它会遍历 pkg/chaosdaemon/pb 与 pkg/chaoskernel/pb 生成.pb.go。根目录的 binary.generated.mk、local-binary.generated.mk、container-image.generated.mk 都标注DO NOT EDIT应修改 cmd/generate-makefile 下的生成器再运行make generate-makefile。名为zz_generated.*的文件、pkg/client/下的客户端、protobuf 输出、Swagger 文档以及带自动生成头部的 UI 文件都必须从源文件重新生成不能手工修补。API/CRD 变更后应把生成的 Go 代码、config/crd/bases、helm/chaos-mesh/crds 与 manifests/crd.yaml 的改动放在一起检查。构建二进制与镜像宿主机构建仅针对local-binary.generated.mk中声明的两个目标make local/chaos-controller-manager make local/chaos-dashboard没有local/chaos-daemon目标daemon 依赖 CGO 与原生辅助对象从 binary.generated.mk 可见其构建依赖pkg/time/fakeclock/fake_clock_gettime.o等必须走生成的 build 环境目标或以镜像方式构建。make image make allmake image构建 controller-manager、daemon 与 dashboard 三个容器镜像make all额外生成合并后的 CRD 清单。两者都是昂贵的 Docker 构建不能替代聚焦编译或测试。UI 开发当前 UI 技术栈为 React、TypeScript、Vite、Material UI、TanStack Query 与 Zustand相关命令在ui/目录下执行pnpm install --frozen-lockfile pnpm build pnpm test pnpm -F ui/app lint VITE_API_BASE_URLhttp://localhost:2333 pnpm startVite dev server 监听 3000 端口并将/api代理到VITE_API_BASE_URL见 ui/vite.config.ts。非交互/CI 安装时如不希望安装 Git hooks 可设置HUSKY0。顶层 Make 目标仅在设置UI1时才构建并内嵌 UI 资产UI1 make ui控制器设计规则变更协调器时必须遵循 controllers/README.md 中沉淀的设计约束一个字段至多由一个控制器拥有不要为同一期望状态引入竞争写入者。多个协调器写同一字段轻则产生冲突重试重则造成矛盾的状态迁移。控制器必须有可独立理解的单机行为不得依赖独立控制器之间未文档化的执行顺序。保持控制器行为小而清晰并为其编写文档若无法清晰概括其行为就应重新考虑资源或控制器的边界。对于应使用 workqueue 限速器的可重试条件仓库约定是ctrl.Result{Requeue: true}, nil应保留周边控制器既有的错误语义而不是机械套用到每个错误上。同时在职责分层上保持一致API 校验/默认值留在 api/v1alpha1编排与状态迁移放在控制器层特权节点操作全部收敛在 Chaos Daemon API 之后。应复用公共 action/pipeline、selector、recorder 与 daemon client 抽象而不是在某个混沌类型内部绕过它们。单一写入者与公共 pipeline从源码结构看公共混沌生命周期的字段所有权被刻意划分desiredphase拥有.status.experiment.desiredPhasecondition拥有.status.conditionsrecords拥有.status.experiment.containerRecordsfinalizers拥有公共 finalizer 生命周期。混沌实现中的Apply/Recover只应作用于一个选定目标并返回结果 phase目标选择、迭代、状态迁移、持久化与重试全部归属公共 pipeline。公共 pipeline 的具体步骤顺序是不可变约定见 controllers/common/pipeline/README.md顺序步骤拥有的状态或效果1finalizers.InitStep为存活的混沌对象添加公共 records finalizer。2desiredphase.Step由删除、一次性行为、持续时间与暂停状态推导Run或Stop。3condition.Step依据当前持久化对象推导 selected/injected/recovered/paused 条件。4records.Step选择目标通过Apply/Recover驱动每条记录走向期望 phase。5finalizers.CleanStep删除恢复完成或强制清理后移除 finalizer。CleanStep 必须位于 records 之后否则删除中的对象会在恢复完成前被提前释放。另外要注意一个启用陷阱Pipeline.AddSteps在某个步骤工厂返回nil时会停止添加后续所有步骤而不是只跳过该步骤因此公共阶段应作为一个有序整体对待。错误与 requeue 语义仓库当前使用 controller-runtime v0.21其 reconcile 契约如下return ctrl.Result{}, err结果被忽略非终结性错误按指数退避重试return ctrl.Result{RequeueAfter: delay}, nil在已知延迟后再次协调适合期限或显式轮询return ctrl.Result{}, nil协调完成直到被观察事件再次入队return ctrl.Result{}, reconcile.TerminalError(err)记录错误但不重试仅当重试无法推进时才使用。不要同时返回非零 Result 与非 nil error因为 controller-runtime 会忽略该 Result。ctrl.Result.Requeue在当前版本已被弃用只有真正的可重试失败才应返回错误错误会被记录并计入协调错误指标预期等待优先用被观察事件或显式RequeueAfter。既有的Requeue: true路径提供带限速的 requeue 且不报错应保留其行为直到被刻意迁移。此外当删除是预期解释时把NotFound当作成功完成处理。新增或修改控制器修改既有控制器时识别它拥有的字段与外部副作用把业务逻辑放在可测试的协调器或 helper 而非 Fx bootstrap 中优先使用 controllers/utils/builder 的Default构建器为新的顶层控制器用稳定的ShouldSpawnController名称做开关pkg/config/controller.go中ENABLED_CONTROLLERS环境变量默认值为*在最窄的 Fx 模块中注册新 provider/bootstrap再按需并入controllers.Module为正常协调、删除、冲突、重试与幂等性补充聚焦测试。新增顶层混沌 Kind 时还需在 api/v1alpha1 定义并标记 API 类型在chaosimpl/下实现单目标的Apply/Recover由实现的 Fx 模块提供ChaosImplPair并纳入chaosimpl.AllImpl最后运行make generate并检查生成的 API 代码、客户端、CRD、workflow/schedule 注册与前端映射。变更特定检查清单按改动类型选择最小必要的验证组合Go 实现聚焦包测试与格式化确需全量验证时再跑make check/make test。CRD 或 Webhook运行make generate、聚焦的api/测试并检查全部清单与生成的客户端。Protobuf运行make proto客户端与服务端包都要测试。Dashboard Go API运行聚焦的pkg/dashboard/...测试API 表面变化时重新生成 Swagger/OpenAPI 相关产物。UI从ui/运行pnpm -F ui/app lint、pnpm build、pnpm test。Helm values/chart用make helm-values-schema重新生成 helm/chaos-mesh/values.schema.json并运行相关pkg/helm/...测试。生成的构建清单修改 cmd/generate-makefile运行make generate-makefile检查三个生成的 Makefile。若需要创建提交请使用git commit --signoff以满足 DCO 合规要求除非任务显式要求否则不要创建提交。总结这份指南把 Chaos Mesh 仓库的开发实践浓缩为一套可执行的规则与命令体系先通过仓库地图理解四个 Go module 与生成产物的边界再按最窄测试优先、全量检查收尾的节奏推进代码生成全部走 Makefile 目标而绝不手改生成文件控制器开发坚守单一写入者、level-based 幂等与显式 pipeline 顺序最后按变更类型对照检查清单逐项验证。无论由人还是由 AI 编码代理执行这套流程都能保证改动在进入 CI 前就已满足仓库的格式、生成与测试约定。赞分享云原生运维测试可观测性【免费下载链接】chaos-meshA Chaos Engineering Platform for Kubernetes.项目地址https://gitcode.com/gh_mirrors/ch/chaos-mesh点击查看免费下载相关推荐Chaos Mesh 仓库开发指南为 AI 编码代理梳理的 Kubernetes 混沌工程平台工程手册Chaos Mesh 仓库开发指南为 AI 编码代理梳理的 Kubernetes 混沌工程平台工程手册 Chaos Mesh 是一个面向 Kubernetes云原生运维测试可观测性Lepton 仓库开发指南面向 AI 编码 Agent 与开发者的 Electron React 代码库导航与实践Lepton 仓库开发指南面向 AI 编码 Agent 与开发者的 Electron React 代码库导航与实践 导读 Lepton 是一个基于 Git桌面应用开发工具如何快速上手 Chaos Mesh面向开发者的完整混沌工程实践指南如何快速上手 Chaos Mesh面向开发者的完整混沌工程实践指南 Chaos Mesh 是一个强大的云原生混沌工程平台专门为 Kubernetes 环境设云原生运维测试可观测性创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Echo Loop 跟读AI评测是如何工作的:离线ASR、LCS对齐与词形还原评分全链路拆解
Echo Loop 跟读AI评测是如何工作的:离线ASR、LCS对齐与词形还原评分全链路拆解

Echo Loop 跟读AI评测是如何工作的:离线ASR、LCS对齐与词形还原评分全链路拆解 【免费下载链接】Echo-Loop Echo Loop 是一款科学、高效的 AI 英语听说训练 App,通过精听、跟读、盲听、复述和间隔复习,自动驱动学习者把每一段音频真正练懂、练… · 2026/9/26 22:41:23

GD库实现webp转换jpg的PHP程序
GD库实现webp转换jpg的PHP程序

PHP程序来执行webp格式转换成jpg格式有几种方法:一是安装imagemagick实现,二是安装GD库实现,可以直接用dwebp命令。本文我们将介绍使用PHP的图像处理库GD,编写一个简单的PHP程序来完成这个任务。首先,确保你的PHP环境已… · 2026/9/26 22:41:16

各类网站排名揭秘:别被拖工期坑了,源码下载权在手
各类网站排名揭秘:别被拖工期坑了,源码下载权在手

各类网站排名揭秘:别被拖工期坑了,源码下载权在手 改个按钮颜色建站公司拖一周?这种憋屈事,我前年还在福州软件园附近的小公司干过,真不是段子。当时客户就改个首页Banner的跳转链接,技术主管说“架构要评估”,结果拖了整整七天,最后发现是后台… · 2026/9/26 22:41:16

AI微信聊天机器人源码搭建指南:从技术路线到避坑实践
AI微信聊天机器人源码搭建指南:从技术路线到避坑实践

简介:这份源码资源面向零基础的技术小白与想快速体验AI微信机器人的开发者,提供从服务器选购到机器人上线的完整搭建方案。包内共3个文件,以html教程页面为主体,辅以inscode项目配置与gitignore忽略规则文件,压缩包仅8… · 2026/9/26 23:23:33

从AI-native到Agent-native:智能体系统的架构落地实践
从AI-native到Agent-native:智能体系统的架构落地实践

1. 从"AI辅助编码"到"Agent原生架构":一次认知范式的迁移过去一年里,我和团队打交道最多的词已经从"大模型能力"变成了"Agent-native"。市面上讨论这个概念的帖子不少,但真正能把"Agent-native… · 2026/9/26 23:23:33

OpenClaw 安装与卸载全流程:从 ollama、node.js 到 TaoToken 配置实战
OpenClaw 安装与卸载全流程:从 ollama、node.js 到 TaoToken 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 23:23:27

产品外包装设计网站从零搭建成本拆解,告别模板尴尬
产品外包装设计网站从零搭建成本拆解,告别模板尴尬

产品外包装设计网站从零搭建成本拆解,告别模板尴尬 很多做包装设计的朋友,第一眼看到市面上那些千篇一律的模板网站,心里都在打鼓: 模板网站太丑,完全不够用。… · 2026/9/26 23:23:27

Kimi Code没有官方桌面客户端:插件形态才是正确打开方式
Kimi Code没有官方桌面客户端:插件形态才是正确打开方式

1. 先把问题说清楚:Kimi Code 到底有没有官方桌面客户端先把结论摆在最前面,省得你翻半天:Kimi Code 目前没有独立的官方桌面客户端。你在搜索引擎里看到的“kimi code桌面客户端上线”“kimi code下载”这类词,绝大多数是第三方整… · 2026/9/26 23:23:21

做网站和维护网站:3步搞定性能优化,避开高价坑
做网站和维护网站:3步搞定性能优化,避开高价坑

做网站和维护网站:3步搞定性能优化,避开高价坑 找建站公司最怕什么?不是功能做不出来,而是后期维护像无底洞,性能优化还得加钱。很多老板花几万块做了个站,打开速度像蜗牛,想优化一下,客服回复“那是高级服务,另收费”。这种“高价坑”在行业里太常… · 2026/9/26 23:23:21

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码