用途:开发 ark/ 目录下的 Ark Kubernetes operator,主要覆盖修改 Go 类型定义(api/v1alpha1/*_types.go)、新增 CRD 字段或资源、修复 CRD/Helm chart 同步错误,以及控制器、webhook 与相关逻辑的改动。
主要能力与流程:CRD 生成链路为 api/v1alpha1/_types.go → make manifests → config/crd/bases/.yaml 与 dist/chart/templates/crd/。make manifests 会自动把源 CRD 同步到 Helm chart,并保留模板头。遇到“CRDs out of sync”错误时,执行:cd ark;make manifests;make build。关键目录包括 api/v1alpha1/(类型定义)、config/crd/bases/(自动生成源 CRD)、dist/chart/templates/crd/(Helm CRD)、internal/controller/(调谐逻辑)、internal/webhook/(准入 webhook)、internal/genai/(AI/ML 执行逻辑)。
常用命令:修改类型或注释后运行 make manifests 与 make build;任何 Go 改动后运行 make lint-fix、make lint(CI 强制规则,必须)、make build、make test。提交 PR 前用 chainsaw 对真实集群跑 e2e,优先确定性 mock-llm 套件:(cd tests && chainsaw test --selector '!llm'),仅当改动涉及 LLM 路径时跑 (cd tests && chainsaw test --selector 'llm')。
重要约定:优先复用 Go 标准库、go.mod 依赖(controller-runtime、apimachinery、相关 SDK、golang.org/x/...),可通过类型别名重导出库类型,避免重复实现;不要内联魔法数字,优先使用 spec 可配置字段、带说明的包级常量或测试局部常量;每个内部改动都要有 _test.go,覆盖 happy path、各失败模式(稳定的 condition reason)、幂等性与回归保护。完成清单包括 make manifests、make lint、make build、make test、chainsaw 确定性套件、测试文件、Helm CRD 提交,以及 CRD 变更时重新生成 OpenAPI/Python/TypeScript SDK,并在容器重启后核对控制器日志。
限制:资料未提供具体版本、平台兼容性、收费或许可信息;实际使用需参照仓库现状与 CI 配置。