用 kubernetes-deploying Skill:让 AI Agent 按规范生成 Kubernetes 部署清单

前言

把应用放到 Kubernetes 上,往往不只是写一个 Deployment。Service、Ingress、ConfigMap、Secret、健康检查、资源配额和扩缩容,每一项都有容易踩坑的细节:漏写 resources、生产环境用了 :latest、Secret 明文进仓库、只配了 liveness 没配 readiness。清单文件一多,人工对照最佳实践也容易漏。

Agent Skill 是一套可复用的 SKILL.md 指令文件,用来教 AI 编程助手按固定流程完成某类任务。kubernetes-deploying 就是其中面向 K8s 部署的一份 Skill:把常见资源模板、常用 kubectl 命令、发布策略和注意事项写进 Skill,让 Agent 在生成或修改 YAML 时有据可依。

本文基于该 Skill 的官方 SKILL.md 与仓库说明整理,介绍它是什么、覆盖哪些能力、如何安装启用,以及典型用法。

这是什么

kubernetes-deploying 来自 GitHub 仓库 spencerpauly/awesome-cursor-skills,归类在 Infrastructure & DevOps。官方描述是:

Deploy applications to Kubernetes — Deployments, Services, Ingress, ConfigMaps, Secrets, health checks, and scaling.

它是一份标准 Agent Skills 格式的 SKILL.md(frontmatter 中 namekubernetes-deploying,并声明 user-invocable: true),本身不替代集群或 kubectl,而是约束 Agent:按模板写清单、带上健康检查与资源限制,并提醒密钥与镜像标签等实践。

Cursor 官方文档说明,Agent Skills 是开放标准,兼容支持该标准的 AI 编程工具;Cursor 会自动发现技能目录中的 Skill,也可在 Agent 对话里用 / 按名称手动调用。Claude Code、Codex CLI 等同样可按各自目录加载同类 SKILL.md

核心功能与亮点

根据官方 SKILL.md,该 Skill 主要覆盖以下内容。

1. 核心资源模板

Skill 内给出了可直接参照的 YAML 示例,包括:

  • Deployment:副本数、标签选择器、镜像、端口、resources 的 requests/limits、liveness/readiness 探针,以及从 Secret 注入环境变量等。
  • Service:例如 ClusterIP,把 Service 端口映射到容器端口。
  • Ingress:主机路由、TLS、以及常见的 cert-manager 注解示例。
  • ConfigMap & Secret:非敏感配置与敏感配置分开声明。

这样 Agent 生成清单时,更容易一次带上「能跑且相对规范」的字段,而不是只剩一个光秃秃的 Deployment。

2. 常用运维命令

Skill 汇总了部署与排障时常用的 kubectl 命令,例如:

# Apply manifests
kubectl apply -f k8s/

# Check deployment status
kubectl rollout status deployment/my-app

# View pods
kubectl get pods -l app=my-app

# View logs
kubectl logs -f deployment/my-app

# Execute into a pod
kubectl exec -it <pod-name> -- /bin/sh

# Scale
kubectl scale deployment/my-app --replicas=5

# Rollback
kubectl rollout undo deployment/my-app

# Port forward for local debugging
kubectl port-forward svc/my-app 3000:80

生成清单之后,可以用同一套命令做应用、观察滚动发布、看日志或回滚。

3. 发布策略

Skill 用表格说明了几种常见策略及适用场景:

Strategy How When
Rolling update (default) 逐个替换 Pod 大多数发布
Recreate 先停旧再起新 不能同时跑两个版本时
Blue/green 两套环境,切换流量 需要快速回切
Canary 少量流量打到新版本 高风险变更

并给出 RollingUpdate 的配置示例(如 maxSurge: 1maxUnavailable: 0)。

4. 健康检查与自动扩缩容

Skill 明确要求同时配置:

  • livenessProbe:进程是否健康,失败则重启 Pod
  • readinessProbe:是否可接流量,失败则从 Service 摘除

探针类型包括 httpGetexectcpSocket

此外还给出了 HorizontalPodAutoscalerautoscaling/v2)示例,例如按 CPU 利用率 70% 在 2~10 副本间伸缩。

5. Tips(实践提醒)

Skill 末尾强调了几条容易被忽略的点:

  • 始终设置 resource requests 和 limits
  • 用 namespace 隔离环境(如 dev / staging / prod
  • 不要把明文 Secret 提交进 Git,改用 Sealed Secrets、SOPS 或外部密钥管理
  • 生产环境用具体版本标签,不要用 :latest
  • 高可用工作负载考虑设置 PodDisruptionBudget

安装与启用

官方仓库说明:把现成的 SKILL.md 复制到 Cursor 的技能目录即可;Agent 会自动发现。Cursor 文档中的常见目录包括:

位置 范围
.cursor/skills/.agents/skills/ 项目级
~/.cursor/skills/~/.agents/skills/ 用户级(全局)

为兼容其他工具,Cursor 也会加载 .claude/skills/.codex/skills/ 以及对应的用户级目录。

方式一:手动放入项目

  1. 从仓库取出该 Skill 目录:
    https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/kubernetes-deploying
  2. 放到项目中,例如:
.cursor/skills/kubernetes-deploying/SKILL.md

目录名需与 frontmatter 里的 name 一致(kubernetes-deploying)。

方式二:用 npx skills 安装

仓库 Tools 一节推荐了 vercel-labs/skills CLI。可按 Skill 名称安装,例如(目标 Agent 按你实际使用的工具调整 --agent):

# Claude Code 示例:安装到当前项目的 .claude/skills/
npx skills add spencerpauly/awesome-cursor-skills --skill kubernetes-deploying --agent claude-code

# Cursor 示例(agent 名为 cursor)
npx skills add spencerpauly/awesome-cursor-skills --skill kubernetes-deploying --agent cursor

-g / --global 可装到用户目录。具体落盘路径以 npx skills 当前文档中各 Agent 的 Project Path / Global Path 为准。

安装后,在 Cursor Agent 对话中输入 /,搜索 kubernetes-deploying 可手动调用;涉及 K8s 部署时,Agent 也可能根据描述自动选用该 Skill。

典型用法示例

下面示例均来自官方 SKILL.md,可直接作为对照或提示 Agent 时的参考。

1. 让 Agent 按模板生成一套清单

在已启用该 Skill 的对话里,可以这样说明需求(提示词示例,按你的应用改镜像与域名即可):

请按 kubernetes-deploying Skill 的规范,为 Web 服务生成 k8s/ 目录下的清单:
- Deployment:镜像 my-registry/my-app:v1.2.3,容器端口 3000,3 副本
- 配置 resources、livenessProbe(/healthz)和 readinessProbe(/ready)
- Service(ClusterIP)与 Ingress(主机 app.example.com,TLS)
- ConfigMap 与 Secret 分开;数据库连接串从 Secret 注入

Agent 可参照 Skill 中的 Deployment 结构生成,例如资源与探针部分类似:

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi
livenessProbe:
  httpGet:
    path: /healthz
    port: 3000
  initialDelaySeconds: 10
  periodSeconds: 30
readinessProbe:
  httpGet:
    path: /ready
    port: 3000
  initialDelaySeconds: 5
  periodSeconds: 10

2. Service 与 Ingress

Skill 中的 Service 将 80 映射到容器 3000;Ingress 示例包含 TLS 与 cert-manager 注解。生成后可用:

kubectl apply -f k8s/
kubectl rollout status deployment/my-app

3. 滚动发布与扩缩容

需要滚动更新策略时,可让 Agent 按 Skill 补上:

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

需要按 CPU 自动伸缩时,可参照 Skill 中的 HPA 示例(minReplicas: 2maxReplicas: 10averageUtilization: 70)。临时手动扩容则可用:

kubectl scale deployment/my-app --replicas=5

出问题回滚:

kubectl rollout undo deployment/my-app

适用场景与注意事项

适合使用该 Skill 的情况包括:

  • 给已有容器镜像补全一套可部署的 K8s 清单
  • 让 Agent 统一带上探针、资源限制、ConfigMap/Secret 拆分
  • 对照发布策略、常用 kubectl 命令和 HPA 模板做脚手架或 Code Review 提示

使用时注意:

  1. Skill 是指南,不是集群事实来源。 集群版本、CNI、Ingress Controller、是否安装 cert-manager,都要按真实环境改注解与 API 字段。
  2. Secret 示例仅作格式参考。 Skill 中的 stringData 示例不能原样提交到 Git;生产应使用密文方案或外部密钥管理,这也是 Skill Tips 明确写到的。
  3. 探针路径与端口必须和应用一致。 模板里的 /healthz/ready、端口 3000 需要改成你服务真实提供的健康检查接口。
  4. 该 Skill 主要覆盖清单与常见命令。 复杂的 GitOps、多集群、服务网格等超出当前 SKILL.md 范围,不要指望它单独完成整条交付链路。

小结

kubernetes-deploying 把 K8s 部署里最容易漏的模板与实践(Deployment / Service / Ingress / ConfigMap / Secret、健康检查、发布策略、HPA 与安全提示)收进一份可被 Agent 加载的 Skill,适合云原生开发者在 Cursor、Claude Code、Codex 等支持 Agent Skills 的工具里复用。

官方地址:

https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/kubernetes-deploying

SKILL 原文:

https://github.com/spencerpauly/awesome-cursor-skills/blob/main/resources/kubernetes-deploying/SKILL.md

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜