RGCsAGupta/driftlens
GitHub: RGCsAGupta/driftlens
DriftLens 是一款专注于 Kubernetes apps/v1 Deployment 期望状态与实时状态对比的配置漂移检测工具,目前处于提供运维契约和应用外壳的基础阶段。
Stars: 0 | Forks: 0
# DriftLens
DriftLens 是一款专注于将 Kubernetes `apps/v1` Deployment 的期望状态与其集群实时状态进行对比的运维工具。当前的基础版本提供了应用外壳和运维契约;扫描功能将在下一个获批的垂直切片中推出。
## 前置条件
- Node.js `24.15.0`
- npm `11`
- 用于生产环境容器检查的 Docker
## 本地设置
```
npm ci
npm run dev
```
打开 `http://localhost:3000`。
## 运维端点
| 端点 | 成功状态 | 用途 |
| ------------------- | -------------- | ------------------------------------------ |
| `GET /api/health` | `200` | 进程存活性,独立于外部配置 |
| `GET /api/ready` | `200` 或 `503` | 配置就绪状态,带有安全的问题代码 |
| `GET /api/version` | `200` | 内嵌的构建提交 SHA |
成功的响应使用以下稳定的数据结构:
```
{"service":"driftlens","status":"ok"}
{"checks":{"configuration":"pass"},"issues":[],"service":"driftlens","status":"ready"}
{"buildSha":"0123456789abcdef0123456789abcdef01234567","service":"driftlens"}
```
就绪检查失败会返回 `503`,将 `status` 设置为 `not_ready`,将配置检查设置为 `fail`,并且仅报告安全的问题代码:
| 问题代码 | 操作 |
| --------------------- | ---------------------------------------------------------- |
| `RUNTIME_MODE_INVALID` | 将 `NODE_ENV` 设置为 `development`、`test` 或 `production` |
| `BUILD_SHA_REQUIRED` | 构建生产应用时注入完整的提交 SHA |
| `BUILD_SHA_INVALID` | 精确使用 40 个小写十六进制字符 |
| `DATA_DIR_INVALID` | 使用绝对且不包含空字节的生产数据目录 |
本地开发默认构建版本为 `development`。生产环境在构建时需要将 `DRIFTLENS_BUILD_SHA` 设置为小写的完整 40 字符 Git SHA。该值在 `next build` 期间被内嵌,无法通过运行时环境更改。如果生产环境的值缺失或无效,健康检查依然会成功,但就绪检查会失败。
`NODE_ENV` 必须精确为 `development`、`test` 或 `production`。如果值缺失或未知,存活性检查依然会成功,但就绪检查会失败并返回安全的 `RUNTIME_MODE_INVALID` 代码。
`DRIFTLENS_DATA_DIR` 为后续的 SQLite 切片保留了持久化数据位置。在本地默认为 `.driftlens`,在生产环境中为 `/data`。生产环境的覆盖路径必须是绝对路径。
## 质量门禁
```
npm run verify
```
该命令会执行格式化、lint、严格类型检查、单元测试覆盖率、生产构建、生产依赖审计以及受限的密钥模式扫描。单元测试不使用网络。
也支持单独执行各项命令:
```
npm run format:check
npm run lint
npm run typecheck
npm run test
npm run test:coverage
npm run test:scanner
npm run build
npm run audit
npm run secret:scan
```
## 生产环境容器
使用精确的源码修订版本进行构建:
```
docker build \
--build-arg DRIFTLENS_BUILD_SHA="$(git rev-parse HEAD)" \
-t driftlens:"$(git rev-parse HEAD)" .
```
使用持久化数据卷运行:
```
docker run --rm \
--publish 3000:3000 \
--volume driftlens-data:/data \
driftlens:"$(git rev-parse HEAD)"
```
最终镜像以非特权用户身份运行。使用以下命令进行验证:
```
curl --fail http://localhost:3000/api/health
curl --fail http://localhost:3000/api/ready
curl --fail http://localhost:3000/api/version
```
## 当前限制
- 尚未实现扫描工作流或 Kubernetes 访问。
- 尚未实现持久化。
- 尚未实现 AI 解释。
- 本应用基础架构中尚未实现 CI、Proxmox、Cloudflare 或域名配置。
请参阅 [PRD](docs/PRD.md)、[架构概述](docs/architecture.md) 和 [AI 证据程序](docs/ai-interaction-evidence.md)。
标签:GNU通用公共许可证, MITM代理, Node.js, 暗色界面, 状态漂移检测, 自动化攻击, 请求拦截, 运维工具