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, 云基础设施, 云成本优化, 云服务商集成, 凭证加密, 多云管理, 成本管理, 日志审计, 极简设计, 治理控制, 特权提升, 环境管理, 自动化部署, 自动清理, 警报系统, 资源生命周期管理, 预算监控, 高性能平台