Conftest 策略测试器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/conftest-policy-tester 到你的 AI 助手。
技能介绍
要解决什么问题
在 Kubernetes 工作流里,部署清单(比如 deployment.yaml)往往是先写后审:先 kubectl apply,出问题再回滚。人工 review 既慢又容易漏掉「没有资源限制」「镜像来源不可信」「缺少必要标签」这类合规项。这个技能做的事情,是把策略检查前移到 apply 之前,让配置在合入或上线前先过一道自动化关卡。
技能如何工作
核心思路是 policy-as-code:用 OPA 的 Rego 语言写断言,用 Conftest 执行。
- 编写策略:把规则保存为
policy/deployment.rego,用 Rego 描述「合法的部署应该是什么样」,比如必须设置spec.replicas、必须声明resources.limits。 - 执行检查:针对
deployment.yaml运行 Conftest,工具会把 YAML 解析成结构化数据,逐条匹配 Rego 规则。 - 读取结果:通过时给出确认;不通过时列出哪条规则失败、违反了哪个字段,直接定位到配置本身。
对开发者来说,策略和配置一样可以进版本库、走 code review,CI 里加一步就能拦住不合规的清单。
适用边界与注意点
- Conftest 只检查静态清单内容,不会验证集群运行时行为(比如 pod 是否真的按策略启动)。
- Rego 学习成本不低:规则写得太松等于没检查,太严又会产生大量噪音。
- 技能是策略加执行的组合,需要本机具备 Conftest(或等价工具)才能实际跑起来。
- 策略要跟着集群版本演进,不同 K8s 版本的字段结构可能存在差异。
使用场景
- 提交 `deployment.yaml` 前运行 Conftest,确认部署是否满足 replicas 和 resources 规则
- 编写 `policy/deployment.rego`,为集群部署定义资源配置与标签合规检查
- 在 CI 中对 Kubernetes 清单做策略审查,阻止不合规配置进入仓库
- 排查部署失败时,用 Conftest 输出定位具体违反了哪条策略
适合人员
- 平台工程师:需要在发布前验证部署清单是否符合团队策略
- DevOps 工程师:希望把 Kubernetes 合规检查纳入 CI/CD 流水线
- 安全工程师:负责用 Rego 编写并维护集群资源配置基线
- 后端开发者:提交部署变更时想快速确认没有违反集群约定