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, 暗色界面, 状态漂移检测, 自动化攻击, 请求拦截, 运维工具