nutcas3/the-engine

GitHub: nutcas3/the-engine

一个用于多云基础设施部署、成本管理和安全验证的统一平台。

Stars: 73 | Forks: 22

# Sovereign Engine:多云基础设施平台 一个极简、高性能的多云基础设施平台,抽象了AWS、Azure、GCP、Hetzner、OVH和DigitalOcean之间的云复杂性,同时维持严格的治理和成本控制。 ## 快速开始 ### 安装(无需Go/Kubernetes) ``` # 下载并安装预构建的二进制文件 curl -fsSL https://raw.githubusercontent.com/nutcas3/the-engine/main/install.sh | bash # 设置您的主密钥(安装过程中生成) export ENGINE_MASTER_KEY= # 加密您的云凭证 engine-encrypt -key AWS_ACCESS_KEY_ID -value 'your_key' -file ~/.engine/secure.env engine-encrypt -key AWS_SECRET_ACCESS_KEY -value 'your_secret' -file ~/.engine/secure.env # 部署基础设施 engine deploy --provider aws --tier micro --region us-east-1 # 或使用网页界面 engine-web # 打开 http://localhost:8080 ``` ### 告警系统配置 告警系统监控成本阈值、资源TTL和测试完成状态: ``` // Default alert thresholds (customize in your deployment) - Cost alerts trigger at 80% of budget (warning) and 90% (critical) - TTL alerts trigger when resources exceed configured lifetime - Test completion alerts notify when tests finish ``` ### 清理策略(必需) **开发环境** 在闲置8小时后自动清理,24小时后彻底销毁。 **测试环境** 在闲置2小时后自动清理,6小时后彻底销毁。 ``` # 默认清理策略 dev-auto-shutdown: environment: dev auto_shutdown: true shutdown_after: 8h nuke_after: 24h exclude_patterns: - "essential-*" - "database-*" test-auto-cleanup: environment: test auto_shutdown: true shutdown_after: 2h nuke_after: 6h exclude_patterns: [] ``` ### 定时任务(自动配置) 以下定时任务自动运行: - **每小时**:开发环境清理检查 - **每小时**:测试环境清理检查 - **每天**:成本告警验证 ### 生产环境集成 清理系统集成了外部监控、CI/CD和部署系统,实现生产就绪的环境管理。 #### 监控集成 通过 `MONITORING_SYSTEM` 环境变量配置监控后端: ``` # Prometheus (默认) export MONITORING_SYSTEM=prometheus export PROMETHEUS_URL=https://prometheus.example.com export PROMETHEUS_TOKEN=your_token # Datadog export MONITORING_SYSTEM=datadog export DATADOG_API_KEY=your_api_key export DATADOG_APP_KEY=your_app_key export DATADOG_SITE=datadoghq.com # CloudWatch export MONITORING_SYSTEM=cloudwatch export CLOUDWATCH_LOG_GROUP=/aws/lambda/your-app ``` 监控集成检查: - 环境闲置时间(无API请求、日志或用户活动) - 销毁开发环境前的近期用户活动 - 清理前的测试环境活动 #### CI/CD集成 通过 `CICD_SYSTEM` 环境变量配置CI/CD系统: ``` # GitHub Actions export CICD_SYSTEM=github export GITHUB_TOKEN=ghp_xxxxx export GITHUB_REPOSITORY=owner/repo # Jenkins export CICD_SYSTEM=jenkins export JENKINS_URL=https://jenkins.example.com export JENKINS_USER=username export JENKINS_TOKEN=api_token # GitLab CI export CICD_SYSTEM=gitlab export GITLAB_URL=https://gitlab.example.com export GITLAB_TOKEN=glpat_xxxxx export GITLAB_PROJECT_ID=12345 ``` CI/CD集成检查: - 清理测试环境前的测试完成情况 - 销毁前的活跃工作流/作业/流水线 - 与GitHub Actions、Jenkins和GitLab CI API集成 #### 部署跟踪 通过 `DEPLOYMENT_SYSTEM` 环境变量配置部署系统: ``` # ArgoCD export DEPLOYMENT_SYSTEM=argocd export ARGOCD_URL=https://argocd.example.com export ARGOCD_TOKEN=your_token # Flux export DEPLOYMENT_SYSTEM=flux # 使用 Kubernetes 客户端和 Flux CRDs # Kubernetes export DEPLOYMENT_SYSTEM=kubernetes # 使用 Kubernetes 客户端进行原生部署 ``` 部署跟踪检查: - 销毁开发环境前的近期部署 - ArgoCD应用程序的同步状态和时间戳 - Flux Kustomization和HelmRelease的协调时间 - Kubernetes部署更新时间戳 #### Kubernetes客户端配置 对于Flux和Kubernetes部署跟踪,配置Kubernetes访问权限: ``` # 集群内配置 (默认) # 在 Kubernetes 中运行时使用服务账户 # 本地开发 export KUBECONFIG=/path/to/kubeconfig ``` ### 资源排除模式 使用通配符模式保护关键资源免于自动清理: - `essential-*` - 排除所有以“essential-”开头的资源 - `database-*` - 排除所有数据库资源 - `prod-*` - 排除生产环境资源 ### 手动操作 ``` # 手动关闭一个资源 curl -X POST http://localhost:8080/api/cleanup/shutdown \ -d '{"provider":"aws","resource_id":"i-1234567"}' # 手动清除一个环境 curl -X POST http://localhost:8080/api/nuke/environment \ -d '{"environment":"test","provider":"aws"}' # 查看活跃警报 curl http://localhost:8080/api/alerts?environment=dev # 查看清理策略 curl http://localhost:8080/api/cleanup/policies # 查看计划任务 curl http://localhost:8080/api/cron/jobs ``` ### CLI用法 ``` # 部署新实例 engine deploy --provider aws --tier micro --region us-east-1 --budget 100 --team platform # 列出部署 engine list --provider aws # 检查成本报告 engine cost --team platform --month 2024-01 # 检查健康状态 engine status # 获取帮助 engine help ``` ### Web界面 ``` # 启动网页服务器 engine-web # 在 http://localhost:8080 访问 # 功能: # - 实时部署监控 # - 预算跟踪与成本可视化 # - 组合管理 # - 健康状态仪表板 # - API 文档 (Swagger) # - 深色/浅色主题切换 ``` ## 功能特性 ### 核心能力 - **多云抽象**:单个API支持6家云提供商 - **CLI优先设计**:独立二进制文件,无需Kubernetes - **Web界面**:采用HTMX + Tailwind v4的现代仪表板 - **安全环境管理**:AES-GCM加密用于凭证存储 - **实时更新**:SSE流式传输实时数据 - **速率限制**:令牌桶速率限制用于API保护 - **连接池**:优化的HTTP连接 - **全面健康检查**:组件级监控 ### 安全特性 - **AES-GCM加密**:安全的凭证存储 - **主密钥系统**:安全的密钥派生 - **文件权限**:安全的文件处理(600权限) - **速率限制**:API滥用防护 ## 安装说明 ### 前置条件 - curl或wget(用于下载二进制文件) - CLI使用无需Go、Kubernetes或Docker ### 手动安装 ``` # 下载 Linux 版本 wget https://github.com/nutcas3/the-engine/releases/download/v1.0.0/engine-linux-amd64.tar.gz tar -xzf engine-linux-amd64.tar.gz sudo cp engine /usr/local/bin/ sudo cp engine-encrypt /usr/local/bin/ sudo cp engine-web /usr/local/bin/ # 下载 macOS 版本 wget https://github.com/nutcas3/the-engine/releases/download/v1.0.0/engine-darwin-amd64.tar.gz tar -xzf engine-darwin-amd64.tar.gz sudo cp engine /usr/local/bin/ sudo cp engine-encrypt /usr/local/bin/ sudo cp engine-web /usr/local/bin/ ``` ### 配置 配置存储在 `~/.engine/config.yaml` 中: ``` version: 1.0.0 compositions_dir: ./compositions providers: - aws - azure - gcp - hetzner - ovh - digitalocean secure_env_file: ~/.engine/secure.env web_port: 8080 ``` ### 安全环境变量 ``` # 生成主密钥 openssl rand -base64 32 export ENGINE_MASTER_KEY= # 加密凭证 engine-encrypt -key AWS_ACCESS_KEY_ID -value 'your_key' -file ~/.engine/secure.env engine-encrypt -key AWS_SECRET_ACCESS_KEY -value 'your_secret' -file ~/.engine/secure.env # 加密后的值存储在 ~/.engine/secure.env # 它们在需要时会自动解密 ``` ## 架构 ### CLI优先方法 ``` User (CLI Tool) | v Secure Environment (AES-GCM Encrypted) | v Cloud Provider APIs | v Infrastructure Provisioning ``` ### Web界面 ``` User (Browser) | v Web Server (engine-web) | v HTMX + Tailwind v4 UI | v API Endpoints (Rate Limited) | v Secure Environment (AES-GCM Encrypted) | v Cloud Provider APIs ``` ## 提供商支持 | 提供商 | 状态 | 支持的层级 | |----------|--------|-----------------| | AWS | 已完成 | micro, small, pro | | Azure | 开发中 | micro, small, pro | | GCP | 开发中 | micro, small, pro | | Hetzner | 已完成 | micro, small, pro | | OVH | 开发中 | micro, small, pro | | DigitalOcean | 开发中 | micro, small, pro | ## FinOps仪表板 Web界面包含全面的FinOps功能: - **预算跟踪**:按团队和提供商实时跟踪预算使用情况 - **成本估算**:部署前提供精确的成本估算 - **支出分析**:历史成本数据和趋势分析 - **成本告警**:接近预算阈值时自动告警 - **提供商比较**:跨不同云提供商的成本比较 - **优化建议**:成本优化建议 通过Web仪表板(`http://localhost:8080`)或CLI访问FinOps功能: ``` engine cost --team platform --month 2024-01 ``` ## 开发 ### 从源码构建 ``` # 安装 Go 1.21+ go version # 克隆仓库 git clone https://github.com/nutcas3/the-engine.git cd the-engine # 安装依赖项 make install-deps # 构建所有二进制文件 make build-cli make build-web make encrypt # 运行测试 make test ``` ### 项目结构 ``` the-engine/ cmd/ cli/ # CLI tool ui/ # Web server encrypt/ # Encryption tool internal/ handlers/ # HTTP handlers cache/ # Caching layer health/ # Health checks rate/ # Rate limiting config/ # Secure configuration kubernetes/ # Kubernetes client (internal use) web/ index.html # Web UI with HTMX + Tailwind v4 script.js # Theme toggle and SSE configs/ # Configuration files ``` ## API文档 ### 端点 - `GET /` - Web仪表板 - `GET /api/compositions` - 列出可用组合 - `GET /api/deployments` - 列出部署 - `GET /api/cost/monthly?team=` - 获取成本数据 - `GET /api/health/status` - 健康检查 - `GET /api/stream` - SSE实时更新 - `GET /api/swagger` - OpenAPI文档 ### 速率限制 - 每秒100个请求 - 突发:10个请求 - 基于IP的速率限制 ## 故障排除 ### 安装问题 ``` # 如果下载失败,请检查网络连接 curl -I https://github.com/nutcas3/the-engine/releases/ # 如果出现权限错误,请使用 sudo sudo ./install.sh ``` ### 加密问题 ``` # 确保 ENGINE_MASTER_KEY 已设置 echo $ENGINE_MASTER_KEY # 如果丢失则重新生成 openssl rand -base64 32 ``` ### Web服务器问题 ``` # 检查端口是否被占用 lsof -i :8080 # 在 config.yaml 中更改端口 # web_port: 8081 ``` ## 贡献指南 1. 复刻仓库 2. 创建功能分支 3. 进行更改 4. 添加测试 5. 提交拉取请求 ## 许可证 MIT许可证 - 详见[LICENSE](LICENSE)文件。 *"基础设施是一种负债。控制是一种选择。引擎是桥梁。"*
标签:Cron 作业, Crossplane, EVTX分析, Go 语言, IT 运维, Web 管理界面, WSL, 云基础设施, 云成本优化, 云服务商集成, 凭证加密, 多云管理, 成本管理, 日志审计, 极简设计, 治理控制, 特权提升, 环境管理, 自动化部署, 自动清理, 警报系统, 资源生命周期管理, 预算监控, 高性能平台