cognis-digital/chartwright
GitHub: cognis-digital/chartwright
纯 Python 实现的 Helm chart 模板渲染、lint 和 values diff 工具,无需安装 Helm binary 即可在 CI、隔离环境等场景中操作 chart。
Stars: 0 | Forks: 0
# chartwright
**Helm chart 模板渲染、lint 和 values diff —— 无需 Helm binary。** 渲染
chart 实际使用的模板指令,lint chart 结构,并对比
不同环境下的 values 文件,全部使用纯 Python 实现。
**Cognis Neural Suite** 的一部分。
## 为什么使用
在 CI、air-gap(物理隔离)环境或快速的 pre-commit hook 中,你并不总是拥有(或想要)安装 Helm。chartwright 会读取标准的 Helm chart 布局
(`Chart.yaml`、`values.yaml`、`templates/`)并渲染大多数 chart 所依赖的
Go/Sprig 模板行为的实用子集 —— 无需 binary,无需 pip 安装。
## 命令
```
# 根据 chart 的 values 渲染其 templates。
python -m chartwright template ./mychart --release prod
# 合并特定环境的 values override。
python -m chartwright template ./mychart --values values-prod.yaml
# Lint 结构 + 平衡的 if/range/with blocks。
python -m chartwright lint ./mychart
python -m chartwright lint ./mychart --fail-on warning
# Diff 两个 values 文件(添加 / 删除 / 更改的 leaf keys)。
python -m chartwright diff values.yaml values-prod.yaml
# 作为本地 MCP server 运行 (stdio JSON-RPC)。
python -m chartwright mcp
```
## 支持的模板指令
- `{{ .Values.a.b }}`, `{{ .Chart.name }}`, `{{ .Release.Name }}`
- pipelines:`{{ .Values.x | default "y" | quote | upper | lower | trim }}`
- 条件判断:`{{- if .Values.flag }} … {{- else }} … {{- end }}`
- 循环:`{{- range .Values.list }} … {{ . }} … {{- end }}`
- 使用 `{{-` 和 `-}}` 进行空白字符修剪
## chartwright 的独特之处
- **无 Helm 依赖。** 可以在安装 Helm 不切实际的环境中进行渲染和 lint。
- **内置 Values diff 功能。** 在 `values.yaml` 和生产环境覆盖配置发布之前发现它们之间的偏差 —— 扁平化、叶子节点级别、易于阅读。
- **MCP 原生**(`template` / `lint` / `diff`),并带有可选的 local-fleet AI hook(默认关闭),可为环境推荐 values 覆盖配置。
- **与 air-gap suite 配合使用:** 使用 chartwright 进行 lint 和渲染,使用 [oradeck](https://github.com/cognis-digital/oradeck) 镜像 image,并使用 [airlock](https://github.com/cognis-digital/airlock) 打包应用程序。
## 测试
```
python -m pytest -q # or: python -m unittest discover -s tests
```
## 互操作性
`chartwright` 可与包含 300+ 工具的 Cognis suite 组合使用 —— 输入/输出均为 JSON,并共享兼容 OpenAI 的 `/v1` 骨干网。请参阅 **[INTEROP.md](INTEROP.md)** 了解 suite 映射、组合模式和参考技术栈。
## 集成
通过
[`cognis-connect`](https://github.com/cognis-digital/cognis-connect) 将 `chartwright` 的结果转发至 STIX/MISP/Sigma/Splunk/Elastic/Slack/webhook。请参阅 **[INTEGRATIONS.md](INTEGRATIONS.md)**。
## 许可证
Cognis Open Collaboration License (COCL) 1.0 —— 请参阅 [`LICENSE`](LICENSE)。
© 2026 Cognis Digital LLC。最初的 Cognis 工作针对开放的 Helm chart
布局和模板行为;它不内嵌或供应商化 Helm 或 Sprig,且
不包含任何第三方代码、名称或品牌。
## 领域
**主要领域:** Cyber & Security · **JTF MERIDIAN 部门:** NULLBYTE · SPECTER
**主题:** `cognis` `security` `infosec` `cybersecurity` `blue-team`
**Cognis Neural Suite** 的一部分 —— 包含 300+ 源代码可用的工具,组织在 JTF MERIDIAN 指挥结构下的 12 个领域中。请参阅 [GitHub 上的 suite](https://github.com/cognis-digital) 和 [jtf-meridian](https://github.com/cognis-digital/jtf-meridian) 了解各部分是如何协同工作的。
## 使用指南 —— 逐步说明
`chartwright` 可以渲染、lint 并对比 Helm chart 及其 values —— 无需 Helm binary。
1. **安装**(纯标准库,Python 3.10+):
pip install "git+https://github.com/cognis-digital/chartwright.git"
2. **渲染** chart 的模板(基于其 values),叠加环境覆盖文件和内联的 `--set`:
chartwright template ./mychart --release prod --values values-prod.yaml --set image.tag=2.0
3. **Lint** chart 结构以及平衡的 if/range/with 块;`--fail-on warning` 可提高门禁标准:
chartwright lint ./mychart --fail-on warning
4. **使用输出** —— 列出 chart 引用的 `.Values` 路径(使用 `--fail-on-undeclared` 捕捉拼写错误),或对比不同环境下的 values:
chartwright schema ./mychart --fail-on-undeclared
chartwright diff values.yaml values-prod.yaml --format json
5. **在 CI 中实现自动化** —— 将 lint + schema 检查作为合并前的门禁:
chartwright lint ./mychart && chartwright schema ./mychart --fail-on-undeclared
或者将其作为本地 MCP 服务器(stdio JSON-RPC)运行:`chartwright mcp`。
标签:Helm, MCP, Python, SOC Prime, 开发工具, 无后门, 模板引擎, 逆向工具, 静态检查