这是什么
k8s-expert-agent 是一个做 Kubernetes 代码审查的 Agent,本身就是一个 Git 仓库(repo-as-agent 模式)。你把它 clone 下来,从仓库根目录启动自己的 coding agent(Claude Code、Codex、OpenCode 等),它就读 AGENTS.md 拿到 K8s 审查专家的身份和能力。
审查规则 follow Kubernetes API Conventions,覆盖 CRD / API 设计和 controller 行为。规则会持续补充,逐步把更多最佳实践沉淀进来。
怎么用
三步:
git clone https://github.com/xuezhaojun/k8s-expert-agent.git
cd k8s-expert-agent
git pull origin main # 保持同步
然后直接跟你的 coding agent 对话,给它审查目标,三种都行:
- 一个 repo 链接 ——
review this operator: https://github.com/me/my-operator - 一个 PR 链接 ——
review this PR: https://github.com/me/my-operator/pull/42 - 一个 本地目录 ——
review the controller under ./my-operator/
再给它具体的 Code Review 指令(比如"重点看 CRD 设计和 status 处理"),它就会去跑审查。意图模糊时它会先问你清楚。
Claude Code 是个例外:它从
.claude/skills/读技能,需要ln -s ../.agent/skills .claude/skills软链一次。其他 agent 直接可用。前置依赖只有 Go 工具链和curl。
审查流程
拿到目标后,Agent 按几步走:
- 取代码 —— PR 用
fetch_pr.sh取到临时目录、按git diff确定审查范围;repo 或本地目录用clone_repo.sh、按完整文件清单确定范围。 - 跑自动 linter —— 对 Go API 类型调用 kube-api-linter(KAL),机械地抓命名、注释、字段类型这类确定性问题。KAL 的规则直接来自 API Conventions。
- 校验 CRD 新鲜度 —— 当 Go 类型和 CRD YAML 都在范围内时,用
controller-gen重新渲染 CRD 并和已提交的 YAML diff,避免基于过期 YAML 得出错误结论。 - 应用 checklist —— 把 KAL 抓不到的设计判断和 controller 行为问题按 checklist 分章节并行审查,最后整合去重。
最终输出一份统一的报告:按 severity(blocking / warning / suggestion)分组,每条 finding 带 file:line 和具体修法。
依赖的工具
- kube-api-linter (KAL) —— 自动 lint Kubernetes Go API 类型,是审查的机械层。
- controller-tools (
controller-gen) —— 渲染 OpenAPIV3Schema,用于 CRD 新鲜度校验和跨版本兼容性 diff。 - golangci-lint v2 —— 用来构建自定义的 KAL 二进制。
所有版本 pinned 在 tools/versions.env,审查结果可复现。
欢迎试用
如果你在写 controller 或 operator,可以用它来跑一遍 Code Review,看看自己的 CRD 设计和 controller 实现是否满足 Kubernetes 的最佳实践。规则和脚本都接受 PR,欢迎一起补充。