claude-howto 之 DevOps 自动化插件实战:用 Claude Code 打通部署、回滚、监控与事故响应全流程
本篇技术指南基于当前仓库(claude-howto)中的完整插件示例 devops-automation,系统拆解一个"一次安装即得全套能力"的 Claude Code DevOps 插件应当如何组织:从斜杠命令、专职 Subagent、Kubernetes MCP 到部署钩子与 Shell 脚本,逐文件还原其内部实现。读完你将掌握该插件的安装、配置、调用方式,理解一条 /deploy production 命令背后的真实执行链路,并能照此骨架复刻出属于自己团队的自动化插件。
一、插件概览:一个包装下完整的发布与运维闭环
devops-automation 是 07-plugins 目录下三个完整插件示例之一,其定位在插件的 README 中被概括为一句话:"Complete DevOps automation for deployment, monitoring, and incident response."——即把部署、监控与事故响应打包成一套可共享、可分发、可版本化的 Claude Code 扩展。
它对外声明的核心能力包括:
- ✅ 自动化部署(Automated deployments)
- ✅ 回滚流程(Rollback procedures)
- ✅ 系统健康监控(System health monitoring)
- ✅ 事故响应工作流(Incident response workflows)
- ✅ Kubernetes 集成(Kubernetes integration)
在 Claude Code 的插件体系里,插件是最上层的扩展机制——把斜杠命令、Subagent、MCP 服务器、钩子统一捆绑进一个可安装单元,只需一次安装命令即可全部启用(参见 07-plugins/README.md 的架构说明)。本插件恰好完整覆盖了这四类组件,是理解"插件如何编排多种扩展点协同工作"的最小而完整的范本。
二、先读懂插件骨架:目录结构逐文件对照
仓库中 devops-automation 的实际目录结构与各组件一一对应(相对仓库根路径):
07-plugins/devops-automation/
├── README.md # 插件说明:功能、安装、用法、工作流示例
├── agents/ # 专职 Subagent 定义(3 个)
│ ├── alert-analyzer.md # 告警 / 系统指标分析
│ ├── deployment-specialist.md # 部署专家
│ └── incident-commander.md # 事故指挥
├── commands/ # 斜杠命令(4 个)
│ ├── deploy.md
│ ├── incident.md
│ ├── rollback.md
│ └── status.md
├── hooks/ # 部署生命周期钩子(Node.js)
│ ├── post-deploy.js # 部署后:等待 Pod、冒烟测试
│ └── pre-deploy.js # 部署前:校验 kubectl 与集群连通
├── mcp/ # MCP 服务器配置
│ └── kubernetes-config.json # Kubernetes 集群接入
└── scripts/ # 可执行自动化脚本
├── deploy.sh
├── health-check.sh
└── rollback.sh
对照 07-plugins/README.md 中给出的通用插件目录规范(commands/、agents/、skills/、hooks/、.mcp.json、scripts/ 等),可以直观看到 devops-automation 正是该规范的实例化:每个斜杠命令是一个带 YAML frontmatter 的 Markdown 文件,每个 Subagent 同样以 Markdown 定义,MCP 与钩子则以配置/脚本形式独立存在。这种"一切皆文件、文件头声明元数据"的设计,让整套自动化能力既可被 Claude Code 读取,也能被人类直接 review 与版本化管理。
三、安装与前置条件
根据插件 README,安装仅需一条命令:
/plugin install devops-automation
(从 CLI 侧也可使用 claude plugin install <name>@<marketplace> 形式,参见 07-plugins/README.md。)
安装前需满足文档列出的运行环境:
| 条件 | 说明 |
|---|---|
| Claude Code 2.1+ | 插件文件脚注标注的编写/验证版本为 2.1.220 |
| Kubernetes CLI(kubectl) | 部署与回滚脚本、前后置钩子都依赖它 |
| 集群访问已配置 | 需要能连通目标 Kubernetes 集群 |
最关键的环境配置是让本机指向目标集群:
export KUBECONFIG=~/.kube/config
该变量不止供 kubectl 读取,还会被透传给插件内置的 Kubernetes MCP 服务器(详见下文第五节),因此务必在会话启动前正确导出。文档建议在首次使用 /deploy 前确认集群连通性,这一检查实际由 pre-deploy 钩子自动完成(见第七节)。
四、四大斜杠命令:从发布到救火的操作入口
4.1 /deploy staging|production —— 部署到目标环境
# 部署到预发环境
/deploy staging
# 部署到生产环境
/deploy production
部署命令的任务定义见 commands/deploy.md,其中声明了六步流水线:
- 运行部署前检查(Run pre-deployment checks)
- 构建应用(Build application)
- 运行测试(Run tests)
- 部署到目标环境(Deploy to target environment)
- 运行健康检查(Run health checks)
- 通过 Slack 通知团队(Notify team on Slack)
环境名 staging / production 作为参数传入底层脚本,被 deploy.sh 解析后决定应用的目标命名空间与访问域名。
4.2 /rollback production —— 回滚到上一个稳定版本
/rollback production
回滚命令对应 commands/rollback.md:
- 识别上一个部署版本(Identify previous deployment)
- 校验回滚目标健康(Verify rollback target is healthy)
- 执行回滚流程(Execute rollback procedure)
- 运行健康检查(Run health checks)
- 通知团队(Notify team)
注意文档示例默认回滚生产环境;若不带参数,底层脚本的默认回滚目标为 staging(见第七节 rollback.sh 的 ENV=${1:-staging})。
4.3 /status —— 全局系统健康检查
/status
状态命令对应 commands/status.md,横跨六类检查项:
- 查询 Kubernetes Pod 状态
- 检查数据库连接
- 监控 API 响应时间
- 审查错误率
- 检查资源利用率
- 汇总整体健康报告
4.4 /incident —— 结构化事故响应
/incident
事故命令对应 commands/incident.md,提供一套有纪律的事故处置流程:
- 创建事故记录
- 评估严重等级与影响范围
- 通知当班团队
- 收集诊断信息
- 协调响应动作
- 记录解决方案
- 安排事后复盘(post-mortem)
在 Claude Code 插件体系内,斜杠命令通常会被冠以插件命名空间。参考 07-plugins/README.md 的说明:插件命令规范形态为
/插件名:命令(如/myplugin:review),同时支持空格写法/myplugin review。本插件文档为便于阅读统一采用/deploy这类直接形式,实际环境中请结合你的安装方式调用。
五、三大专职 Subagent:把专业判断交给角色化 Agent
与"命令即流水线"不同,Subagent 提供的是角色化专家——每个文件用 YAML frontmatter 声明名字、职责与可用工具,Claude 在需要时会委派(delegate)任务给对应角色,形成多 Agent 协作。
| Subagent 文件 | name | 可用工具 | 擅长领域 |
|---|---|---|---|
| agents/deployment-specialist.md | deployment-specialist | Read, Write, Bash, Grep | 部署全流程 |
| agents/incident-commander.md | incident-commander | Read, Write, Bash, Grep | 事故指挥 |
| agents/alert-analyzer.md | alert-analyzer | Read, Grep, Bash | 告警与指标分析 |
Deployment Specialist(部署专家):负责蓝绿部署(Blue-green deployments)、金丝雀发布(Canary releases)、回滚流程、健康检查与数据库迁移。它被设计为 /deploy、/rollback 命令的执行主体,掌握 Bash 工具以运行真实脚本。
Incident Commander(事故指挥):聚焦事故响应管理——严重性评估、团队协调、状态更新、解决跟踪与事后复盘引导。它是 /incident 命令的指挥中枢,特点是用 Read/Write 记录事故全过程,确保处置过程可追溯。
Alert Analyzer(告警分析):偏分析与诊断——告警关联(Alert correlation)、趋势分析(Trend analysis)、根因定位(Root cause identification)、指标可视化与主动性问题探测。注意其工具集(Read、Grep、Bash)中没有 Write,说明该角色的定位是"只读诊断"而非直接修改系统,这是一个值得借鉴的权限最小化设计。
从源码结构看,三者各司其职又相互衔接:alert-analyzer 负责"发现问题",incident-commander 负责"组织处置",deployment-specialist 负责"完成修复/发布",共同构成一个闭环。
六、MCP:让 Claude 拥有 Kubernetes 集群的"眼睛"
插件通过 mcp/kubernetes-config.json 接入一个 Kubernetes MCP 服务器,这是整个工作流中 Claude 能"实时观测部署进度、查询 Pod 状态"的关键:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["@modelcontextprotocol/server-kubernetes"],
"env": {
"KUBECONFIG": "${KUBECONFIG}"
}
}
}
}
这段配置有三个要点:
- 启动方式:通过
npx直接拉起@modelcontextprotocol/server-kubernetes,无需单独安装守护进程; - 认证透传:
env.KUBECONFIG引用${KUBECONFIG}环境变量占位符——这正是本文第三节要求先export KUBECONFIG=~/.kube/config的原因:MCP 服务器与本机 kubectl 共享同一份集群凭据; - 能力价值:接入后,Claude 可以读取实时集群状态(如部署进度、Pod 就绪情况),作为
/deploy工作流第 4 步"通过 Kubernetes MCP 监控部署进度"和/status命令第 1 步"查询 Pod 状态"的数据来源。
关于 MCP 服务器如何被 Claude Code 以工具形式暴露给会话,可进一步阅读仓库的 05-mcp 目录说明。
七、Hooks 源码解析:部署前后的安全阀
钩子(Hooks)负责在关键时点自动执行校验与收尾,本插件的两个钩子用 Node.js 实现。在通用插件规范中,钩子最终需在插件清单的 hooks 配置中完成事件绑定(参见 07-plugins/README.md 中 hooks 目录与 hooks.json 的说明);本插件将它们独立成文件并接入工作流的第 1 步与第 5 步。
7.1 pre-deploy.js:部署前的"闸门"
完整源码见 hooks/pre-deploy.js,核心逻辑是两道硬性校验:
const { execSync } = require('child_process');
// ① 检查 kubectl 是否已安装
try {
execSync('which kubectl', { stdio: 'pipe' });
} catch (error) {
console.error('❌ kubectl not found. Please install Kubernetes CLI.');
process.exit(1);
}
// ② 检查是否已连接集群
try {
execSync('kubectl cluster-info', { stdio: 'pipe' });
} catch (error) {
console.error('❌ Not connected to Kubernetes cluster');
process.exit(1);
}
从实现可以提炼出它的设计意图:任何一步失败都以非零退出码(process.exit(1))中断部署,绝不允许在环境不具备时带病发布。第 ② 步用 kubectl cluster-info 而非简单 ping,能同时验证凭据有效性、集群可达性与 API Server 响应,是成本很低但覆盖面很广的一次探测。
7.2 post-deploy.js:部署后的"验收"
完整源码见 hooks/post-deploy.js,部署完成后执行:
// 等待 Pod 全部就绪(超时 300 秒)
execSync('kubectl wait --for=condition=ready pod -l app=myapp --timeout=300s', {
stdio: 'inherit'
});
// 冒烟测试(预留扩展点)
// Add your smoke test commands here
两个细节值得注意:
kubectl wait --for=condition=ready是声明式等待而非固定 sleep,--timeout=300s防止无限阻塞;-l app=myapp通过标签选择器圈定应用 Pod;- 冒烟测试以注释占位符形式预留——说明这是按项目定制的扩展点,接入真实业务时应替换为实际的 HTTP 探测或断言命令。
钩子执行结果同样决定流程走向:Pod 未就绪即 process.exit(1),上层即可据此判定部署失败并触发 /rollback。
八、Shell 脚本实战剖析:自动化三件套
8.1 deploy.sh —— 端到端发布流水线
完整源码见 scripts/deploy.sh。脚本开头 set -e 保证任何一步出错立即终止,杜绝"失败继续";环境参数带默认值:
ENV=${1:-staging} # 第一参数为目标环境,缺省 staging
其执行链条如下:
| 阶段 | 命令 | 说明 |
|---|---|---|
| 前置检查 | npm run lint + npm test |
质量门禁 |
| 构建 | npm run build |
产出可部署产物 |
| 部署 | kubectl apply -f k8s/$ENV/ |
按环境应用 Kubernetes 清单 |
| 健康检查 | sleep 10 后 curl -f http://api.$ENV.example.com/health |
curl -f 遇 HTTP 错误即失败 |
其中 kubectl apply -f k8s/$ENV/ 与健康检查 URL 中的 $ENV 说明:仓库约定每个环境一套清单目录(k8s/staging/、k8s/production/)与独立访问域名,这提示你在实际项目中需要准备对应资源。
8.2 rollback.sh —— Kubernetes 原生回滚
完整源码见 scripts/rollback.sh,利用了 Kubernetes Deployment 内置的 rollout 机制:
# 查询历史版本
PREVIOUS=$(kubectl rollout history deployment/app -n $ENV | tail -2 | head -1 | awk '{print $1}')
# 执行回滚
kubectl rollout undo deployment/app -n $ENV
# 等待回滚收敛
kubectl rollout status deployment/app -n $ENV
值得学习的是它的"回滚三步法":先查历史(rollout history)→ 再执行撤销(rollout undo)→ 最后等状态收敛(rollout status)。第 1 步解析出的历史 revision 被打印出来供审计,但没有强制指定 revision——即默认回退到上一个 revision。回滚完成后同样执行健康检查(curl -f),确保"回滚成功"以服务真实可用为准。
8.3 health-check.sh —— 多维度体检
完整源码见 scripts/health-check.sh,注意其不带 set -e,因为该脚本的职责是"报告各项健康状态"而非"失败即中断",逐项探测并汇总:
# API 存活探测
curl -sf http://api.$ENV.example.com/health
# 数据库就绪探测
pg_isready -h db.$ENV.example.com
# Kubernetes Pod 就绪率统计
PODS_READY=$(kubectl get pods -n $ENV --no-headers | grep "Running" | wc -l)
PODS_TOTAL=$(kubectl get pods -n $ENV --no-headers | wc -l)
它输出的指标(API 健康/不健康、数据库就绪、Pod x/y 就绪)直接服务于 /status 命令与 alert-analyzer 的角色判断,也是本文末尾工作流示例中"🚀 Pods: 3/3 ready"这一类输出的事实来源。
九、端到端演练:一条 /deploy production 的完整链路
插件 README 用一个对话示例串起了全部组件。结合前文源码分析,可将每个步骤落到具体实现载体上:
| 步骤 | 文档描述的工作流 | 对应的组件载体 |
|---|---|---|
| 1 | 运行 pre-deploy 钩子(校验 kubectl、集群连通) | hooks/pre-deploy.js |
| 2 | 委派给 deployment-specialist Subagent | agents/deployment-specialist.md |
| 3 | 执行 deploy.sh 脚本 | scripts/deploy.sh |
| 4 | 通过 Kubernetes MCP 监控部署进度 | mcp/kubernetes-config.json |
| 5 | 运行 post-deploy 钩子(等待 Pod、冒烟测试) | hooks/post-deploy.js |
| 6 | 输出部署总结 | Claude 会话汇总 |
对应的一次会话输出:
✅ Deployment complete
📦 Version: v2.1.0
🚀 Pods: 3/3 ready
⏱️ Time: 2m 34s
这条链路揭示了本插件的核心设计思想——各组件按"职责"分层:钩子负责无脑执行的硬校验,Subagent 负责需要判断力的专业执行,MCP 提供实时观测能力,脚本封装可复用的确定性操作,而 Claude 作为编排者串联调度。你可以反向用同样思路设计自己的插件:先定"流程骨架",再为每个环节挑选最合适的扩展点类型。
十、复用与扩展:把它改造成你自己的 DevOps 插件
当前仓库为只读示例,安装到自己的环境后,建议以 07-plugins/devops-automation/ 为骨架复制一份到自己的插件仓库中,按下面的定制点改造(不修改本仓库):
- 匹配真实服务标识:
post-deploy.js中kubectl wait -l app=myapp的标签、deploy.sh里kubectl apply -f k8s/$ENV/的清单目录、各脚本的api.$ENV.example.com域名,全部替换为你的应用真实取值; - 补齐环境资源:准备
k8s/staging/与k8s/production/两套 Kubernetes 清单,并确保 Deployment 启用rollout(历史记录功能)以便回滚脚本生效; - 接入真实监控源:为
alert-analyzer补充实际的告警通道与指标端点,或扩展 mcp/kubernetes-config.json 加入 Prometheus 等 MCP 服务器; - 按插件规范打包:参考 07-plugins/README.md 补充
.claude-plugin/plugin.json清单并声明钩子绑定,再用claude plugin validate校验结构、claude plugin tag v0.1.0打发布标签; - 本地联调:开发阶段用
claude --plugin-dir ./devops-automation方式加载,无需发布即可验证全部命令、Subagent、MCP 与钩子行为(该用法同样出自 07-plugins/README.md)。
改造完成后,你的团队即可像本插件一样,把"发布、回滚、体检、救火"固化为一套人人可调用、可审计、可共享的 Claude Code 插件能力。
十一、关联阅读(仓库内延伸资源)
- 插件总览与通用规范:07-plugins/README.md(插件架构、manifest 结构、安装与生命周期、CLI 命令)
- 插件原始说明文档:07-plugins/devops-automation/README.md
- 命令级任务定义:
07-plugins/devops-automation/commands/下的 deploy.md、rollback.md、status.md、incident.md - 同族插件参考:
07-plugins/pr-review/(含 review-pr.md、check-security.md)与07-plugins/documentation/,对比不同领域插件的组件取舍 - 更底层能力的前置知识:斜杠命令见 01-slash-commands,MCP 见 05-mcp,钩子见 06-hooks,Subagent 见 04-subagents
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00