✨ feat(docs): 添加完整的项目文档集
- 新增开发指南文档,包含环境设置、构建流程和最佳实践 - 添加项目概览文档,提供项目全面介绍和架构说明 - 创建技术栈分析文档,详细说明使用的技术和依赖 - 添加源树分析文档,解释项目目录结构和关键文件 - 创建文档索引页面,统一管理所有项目文档 - 生成项目扫描报告,记录文档生成过程 - 更新工作流状态配置,指定文档化前提条件 - 添加.gitignore规则,忽略NFS相关文件
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,3 +16,4 @@ vendor/
|
||||
|
||||
bin/
|
||||
|
||||
.nfs*
|
||||
|
||||
@@ -30,7 +30,7 @@ workflow_path: "bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml"
|
||||
|
||||
workflow_status:
|
||||
# 前提条件:文档化
|
||||
document-project: required
|
||||
document-project: docs/index.md
|
||||
|
||||
# 阶段1:规划
|
||||
prd: required
|
||||
|
||||
198
docs/development-guide.md
Normal file
198
docs/development-guide.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# 开发指南
|
||||
|
||||
## 环境要求
|
||||
|
||||
### 必备工具
|
||||
- **Go 1.13+** - 主要开发语言
|
||||
- **Git** - 版本控制
|
||||
- **Make** - 构建工具
|
||||
|
||||
### 可选工具
|
||||
- **Docker** - 容器化构建和测试
|
||||
- **golangci-lint** - 代码质量检查
|
||||
|
||||
## 开发环境设置
|
||||
|
||||
### 1. 克隆项目
|
||||
```bash
|
||||
git clone https://github.com/virtual-kubelet/alibabacloud-eci.git
|
||||
cd alibabacloud-eci
|
||||
```
|
||||
|
||||
### 2. 安装依赖
|
||||
```bash
|
||||
# 使用Go Modules自动管理依赖
|
||||
go mod download
|
||||
```
|
||||
|
||||
### 3. 验证环境
|
||||
```bash
|
||||
# 检查Go版本
|
||||
go version
|
||||
|
||||
# 验证构建
|
||||
make build
|
||||
```
|
||||
|
||||
## 构建和测试
|
||||
|
||||
### 构建命令
|
||||
```bash
|
||||
# 构建二进制文件
|
||||
make build
|
||||
|
||||
# 清理构建产物
|
||||
make clean
|
||||
|
||||
# 运行测试
|
||||
make test
|
||||
|
||||
# 代码静态分析
|
||||
make vet
|
||||
|
||||
# 代码质量检查
|
||||
make lint
|
||||
|
||||
# 依赖管理
|
||||
make mod
|
||||
```
|
||||
|
||||
### 构建产物
|
||||
- `bin/virtual-kubelet` - 主程序二进制文件
|
||||
- 包含版本信息和构建时间戳
|
||||
|
||||
## 开发流程
|
||||
|
||||
### 1. 代码结构理解
|
||||
- **main.go** - 程序入口,Cobra命令行框架
|
||||
- **eci.go** - Virtual Kubelet Provider主要实现
|
||||
- **eci/** - 阿里云ECI API客户端
|
||||
- **cmd/** - 命令行子命令定义
|
||||
|
||||
### 2. 添加新功能
|
||||
|
||||
#### 添加新的Provider方法
|
||||
```go
|
||||
// 在eci.go中添加新的Provider接口实现
|
||||
func (p *ECIProvider) NewMethod(ctx context.Context, pod *v1.Pod) error {
|
||||
// 实现逻辑
|
||||
return nil
|
||||
}
|
||||
```
|
||||
|
||||
#### 添加新的ECI API调用
|
||||
```go
|
||||
// 在eci/目录下创建新的API文件
|
||||
func (c *Client) NewECIOperation(params map[string]interface{}) (*Response, error) {
|
||||
// 实现ECI API调用
|
||||
}
|
||||
```
|
||||
|
||||
#### 添加命令行参数
|
||||
```go
|
||||
// 在cmd/virtual-kubelet/commands/root/中添加
|
||||
rootCmd.PersistentFlags().StringVar(&newFlag, "new-flag", "default", "description")
|
||||
```
|
||||
|
||||
### 3. 测试新功能
|
||||
```bash
|
||||
# 运行单元测试
|
||||
make test
|
||||
|
||||
# 构建并测试
|
||||
make build && ./bin/virtual-kubelet --help
|
||||
```
|
||||
|
||||
## 配置管理
|
||||
|
||||
### 配置文件格式
|
||||
项目使用TOML格式配置文件:
|
||||
|
||||
```toml
|
||||
Region = "cn-hangzhou"
|
||||
OperatingSystem = "Linux"
|
||||
CPU = "20"
|
||||
Memory = "100Gi"
|
||||
Pods = "20"
|
||||
VSwitch = "vsw-xxx"
|
||||
SecureGroup = "sg-xxx"
|
||||
ClusterName = "default"
|
||||
```
|
||||
|
||||
### 环境变量支持
|
||||
所有配置项都支持环境变量覆盖:
|
||||
```bash
|
||||
export ECI_REGION=cn-shanghai
|
||||
export ECI_SECURITY_GROUP=sg-123
|
||||
export ECI_VSWITCH=vsw-123
|
||||
export ECI_ACCESS_KEY=your-access-key
|
||||
export ECI_SECRET_KEY=your-secret-key
|
||||
```
|
||||
|
||||
## 调试和故障排除
|
||||
|
||||
### 日志级别设置
|
||||
```bash
|
||||
# 运行时设置日志级别
|
||||
./bin/virtual-kubelet --log-level=debug
|
||||
```
|
||||
|
||||
### 常见问题
|
||||
|
||||
#### 构建失败
|
||||
- 检查Go版本要求(1.13+)
|
||||
- 验证依赖完整性:`go mod tidy`
|
||||
- 清理构建缓存:`make clean`
|
||||
|
||||
#### 运行时错误
|
||||
- 检查配置文件路径和权限
|
||||
- 验证阿里云凭证有效性
|
||||
- 查看详细日志:`--log-level=debug`
|
||||
|
||||
#### ECI API调用失败
|
||||
- 检查网络连接
|
||||
- 验证区域配置
|
||||
- 确认ECI服务已开通
|
||||
|
||||
## 代码规范
|
||||
|
||||
### Go代码规范
|
||||
- 遵循Go官方代码规范
|
||||
- 使用gofmt自动格式化
|
||||
- 运行`make vet`和`make lint`检查
|
||||
|
||||
### 提交规范
|
||||
- 提交前运行完整测试套件
|
||||
- 确保代码通过静态分析
|
||||
- 更新相关文档
|
||||
|
||||
## 性能优化
|
||||
|
||||
### 构建优化
|
||||
- 使用静态编译减少运行时依赖
|
||||
- 优化Docker镜像大小
|
||||
- 启用编译优化标志
|
||||
|
||||
### 运行时优化
|
||||
- 合理配置资源限制
|
||||
- 优化API调用频率
|
||||
- 实现连接池和缓存
|
||||
|
||||
## 贡献指南
|
||||
|
||||
### 提交Pull Request
|
||||
1. Fork项目仓库
|
||||
2. 创建功能分支
|
||||
3. 实现功能并添加测试
|
||||
4. 运行完整测试套件
|
||||
5. 提交Pull Request
|
||||
|
||||
### 代码审查
|
||||
- 确保代码符合项目规范
|
||||
- 添加适当的测试用例
|
||||
- 更新相关文档
|
||||
- 性能影响评估
|
||||
|
||||
---
|
||||
|
||||
*此开发指南提供了完整的开发环境设置、构建流程和最佳实践,帮助开发者快速上手项目开发。*
|
||||
150
docs/index.md
Normal file
150
docs/index.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# 项目文档索引
|
||||
|
||||
## 项目概述
|
||||
|
||||
### 基本信息
|
||||
- **项目名称**: Alibaba Cloud ECI Provider for Virtual Kubelet
|
||||
- **项目类型**: CLI工具 (单体架构)
|
||||
- **主要语言**: Go
|
||||
- **架构模式**: Virtual Kubelet Provider
|
||||
|
||||
### 快速参考
|
||||
- **技术栈**: Go + Virtual Kubelet + 阿里云ECI API
|
||||
- **入口点**: `cmd/virtual-kubelet/main.go`
|
||||
- **架构模式**: Provider适配器模式
|
||||
|
||||
## 生成的文档
|
||||
|
||||
### 核心文档
|
||||
- [项目概览](./project-overview.md) - 项目全面介绍
|
||||
- [技术栈分析](./technology-stack.md) - 详细技术栈说明
|
||||
- [源树分析](./source-tree-analysis.md) - 项目结构说明
|
||||
- [开发指南](./development-guide.md) - 开发环境设置
|
||||
|
||||
### 架构文档
|
||||
- [架构文档](./architecture.md) _(To be generated)_
|
||||
|
||||
### 组件清单
|
||||
- [组件清单](./component-inventory.md) _(To be generated)_
|
||||
|
||||
### API文档
|
||||
- [API合约](./api-contracts.md) _(To be generated)_
|
||||
|
||||
### 数据模型
|
||||
- [数据模型](./data-models.md) _(To be generated)_
|
||||
|
||||
## 现有文档
|
||||
|
||||
### 项目文档
|
||||
- [README.md](../README.md) - 项目概述和使用说明
|
||||
- [CLAUDE.md](../CLAUDE.md) - Claude Code项目指导
|
||||
|
||||
### 功能文档
|
||||
- [ECI文档](./eci.md) - ECI抢占式实例详细文档
|
||||
- [产品简介](./product-brief-vk-eci-2025-11-06.md) - 产品需求文档
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 环境要求
|
||||
- Go 1.13+
|
||||
- Git
|
||||
- Make
|
||||
|
||||
### 构建和运行
|
||||
```bash
|
||||
# 克隆项目
|
||||
git clone https://github.com/virtual-kubelet/alibabacloud-eci.git
|
||||
cd alibabacloud-eci
|
||||
|
||||
# 构建
|
||||
make build
|
||||
|
||||
# 运行
|
||||
./bin/virtual-kubelet --help
|
||||
```
|
||||
|
||||
### 配置示例
|
||||
```toml
|
||||
Region = "cn-hangzhou"
|
||||
OperatingSystem = "Linux"
|
||||
CPU = "20"
|
||||
Memory = "100Gi"
|
||||
Pods = "20"
|
||||
```
|
||||
|
||||
## 开发资源
|
||||
|
||||
### 代码结构
|
||||
- `cmd/` - 命令行入口
|
||||
- `eci/` - ECI客户端实现
|
||||
- `eci.go` - 主要Provider实现
|
||||
- `config.go` - 配置管理
|
||||
|
||||
### 构建工具
|
||||
- `Makefile` - 自动化构建
|
||||
- `Dockerfile` - 容器化构建
|
||||
- `.circleci/` - CI/CD配置
|
||||
|
||||
### 测试
|
||||
```bash
|
||||
make test # 运行测试
|
||||
make vet # 静态分析
|
||||
make lint # 代码质量检查
|
||||
```
|
||||
|
||||
## 部署指南
|
||||
|
||||
### Kubernetes部署
|
||||
```yaml
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
name: virtual-kubelet
|
||||
automountServiceAccountToken: false
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: virtual-kubelet
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: virtual-kubelet
|
||||
spec:
|
||||
containers:
|
||||
- name: virtual-kubelet
|
||||
image: virtualkubelet/virtual-kubelet:latest
|
||||
args:
|
||||
- --provider
|
||||
- alibabacloud
|
||||
- --provider-config
|
||||
- /etc/virtual-kubelet/config.toml
|
||||
```
|
||||
|
||||
### 环境变量配置
|
||||
```bash
|
||||
export ECI_REGION=cn-hangzhou
|
||||
export ECI_SECURITY_GROUP=sg-xxx
|
||||
export ECI_VSWITCH=vsw-xxx
|
||||
export ECI_ACCESS_KEY=your-access-key
|
||||
export ECI_SECRET_KEY=your-secret-key
|
||||
```
|
||||
|
||||
## 相关链接
|
||||
|
||||
### 官方文档
|
||||
- [Virtual Kubelet文档](https://github.com/virtual-kubelet/virtual-kubelet)
|
||||
- [阿里云ECI文档](https://help.aliyun.com/product/87445.html)
|
||||
- [Kubernetes文档](https://kubernetes.io/docs/)
|
||||
|
||||
### 社区资源
|
||||
- [GitHub仓库](https://github.com/virtual-kubelet/alibabacloud-eci)
|
||||
- [问题追踪](https://github.com/virtual-kubelet/alibabacloud-eci/issues)
|
||||
- [贡献指南](../CONTRIBUTING.md)
|
||||
|
||||
---
|
||||
|
||||
*此索引文档是AI辅助开发的主要入口点,提供了项目的全面概览和所有相关文档的链接。*
|
||||
|
||||
**文档生成时间**: 2025-11-06
|
||||
**扫描模式**: 深度扫描
|
||||
**工作流版本**: 1.2.0
|
||||
153
docs/project-overview.md
Normal file
153
docs/project-overview.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# 项目概览
|
||||
|
||||
## 项目基本信息
|
||||
|
||||
**项目名称**: Alibaba Cloud ECI Provider for Virtual Kubelet
|
||||
**项目类型**: CLI工具 (Go语言)
|
||||
**架构类型**: 单体架构
|
||||
**存储库类型**: 单体代码库
|
||||
**主要功能**: 将Kubernetes Pod调度到阿里云ECI(弹性容器实例)的适配器
|
||||
|
||||
## 项目描述
|
||||
|
||||
Alibaba Cloud ECI Provider是一个Virtual Kubelet Provider实现,它允许Kubernetes集群将Pod调度到阿里云的弹性容器实例(ECI)上,而无需管理底层服务器或集群。
|
||||
|
||||
### 核心价值
|
||||
- **无服务器容器** - 无需管理Kubernetes节点
|
||||
- **成本优化** - 按实际使用付费,支持抢占式实例
|
||||
- **弹性扩展** - 自动扩展容器实例
|
||||
- **无缝集成** - 与现有Kubernetes工作流完全兼容
|
||||
|
||||
## 技术栈摘要
|
||||
|
||||
### 核心技术
|
||||
- **编程语言**: Go 1.13+
|
||||
- **框架**: Virtual Kubelet Provider接口
|
||||
- **云服务**: 阿里云ECI API
|
||||
- **命令行**: Cobra框架
|
||||
|
||||
### 主要依赖
|
||||
- `github.com/virtual-kubelet/virtual-kubelet` - Virtual Kubelet核心
|
||||
- `github.com/aliyun/alibaba-cloud-sdk-go` - 阿里云官方SDK
|
||||
- `k8s.io/client-go` - Kubernetes客户端
|
||||
- `github.com/spf13/cobra` - CLI框架
|
||||
|
||||
## 架构概览
|
||||
|
||||
### 系统架构
|
||||
```
|
||||
Kubernetes Cluster
|
||||
↓
|
||||
Virtual Kubelet
|
||||
↓
|
||||
ECI Provider (本项目)
|
||||
↓
|
||||
Alibaba Cloud ECI API
|
||||
↓
|
||||
ECI Container Instances
|
||||
```
|
||||
|
||||
### 组件关系
|
||||
- **Provider接口** - 实现Virtual Kubelet Provider规范
|
||||
- **ECI客户端** - 封装阿里云ECI API调用
|
||||
- **配置管理** - 支持TOML配置文件和环境变量
|
||||
- **命令行界面** - 基于Cobra的用户交互
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 核心功能
|
||||
- ✅ Pod创建和调度到ECI
|
||||
- ✅ Pod状态监控和同步
|
||||
- ✅ 容器日志收集
|
||||
- ✅ 资源限制和配额管理
|
||||
- ✅ 抢占式实例支持
|
||||
- ✅ 多区域部署支持
|
||||
|
||||
### 配置特性
|
||||
- ✅ TOML配置文件支持
|
||||
- ✅ 环境变量覆盖
|
||||
- ✅ 合理的默认配置
|
||||
- ✅ 动态配置重载
|
||||
|
||||
### 运维特性
|
||||
- ✅ 结构化日志输出
|
||||
- ✅ 分布式追踪支持
|
||||
- ✅ 健康检查端点
|
||||
- ✅ 指标收集
|
||||
|
||||
## 部署架构
|
||||
|
||||
### 部署模式
|
||||
```
|
||||
Kubernetes Cluster
|
||||
├── Virtual Kubelet (DaemonSet)
|
||||
│ └── ECI Provider
|
||||
└── Application Pods
|
||||
├── Pod on Cluster Nodes
|
||||
└── Pod on ECI Instances (via Virtual Kubelet)
|
||||
```
|
||||
|
||||
### 网络架构
|
||||
- **VPC集成** - 通过VSwitch与VPC网络集成
|
||||
- **安全组** - 网络安全策略管理
|
||||
- **服务发现** - 与Kubernetes服务发现集成
|
||||
|
||||
## 使用场景
|
||||
|
||||
### 适合场景
|
||||
- **突发流量处理** - 快速扩展应对流量高峰
|
||||
- **批处理作业** - 短时间运行的Job任务
|
||||
- **成本敏感应用** - 使用抢占式实例降低成本
|
||||
- **无状态服务** - Web服务、API网关等
|
||||
|
||||
### 部署示例
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: eci-pod-example
|
||||
annotations:
|
||||
k8s.aliyun.com/eci-spot-strategy: "SpotAsPriceGo"
|
||||
spec:
|
||||
nodeName: virtual-kubelet
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx:latest
|
||||
tolerations:
|
||||
- key: alibabacloud.com/eci
|
||||
operator: "Exists"
|
||||
effect: NoSchedule
|
||||
```
|
||||
|
||||
## 项目状态
|
||||
|
||||
### 当前版本
|
||||
- **稳定版本**: 生产环境可用
|
||||
- **活跃维护**: 持续更新和维护
|
||||
- **社区支持**: Virtual Kubelet社区项目
|
||||
|
||||
### 兼容性
|
||||
- **Kubernetes**: 1.14+
|
||||
- **Virtual Kubelet**: 0.10.0+
|
||||
- **阿里云ECI**: 全功能支持
|
||||
|
||||
## 文档链接
|
||||
|
||||
### 核心文档
|
||||
- [技术栈分析](./technology-stack.md) - 详细技术栈说明
|
||||
- [源树分析](./source-tree-analysis.md) - 项目结构说明
|
||||
- [开发指南](./development-guide.md) - 开发环境设置
|
||||
|
||||
### 现有文档
|
||||
- [README.md](../README.md) - 项目概述和使用说明
|
||||
- [ECI文档](./eci.md) - ECI抢占式实例详细文档
|
||||
- [产品简介](./product-brief-vk-eci-2025-11-06.md) - 产品需求文档
|
||||
|
||||
### 外部资源
|
||||
- [Virtual Kubelet文档](https://github.com/virtual-kubelet/virtual-kubelet)
|
||||
- [阿里云ECI文档](https://help.aliyun.com/product/87445.html)
|
||||
- [Kubernetes文档](https://kubernetes.io/docs/)
|
||||
|
||||
---
|
||||
|
||||
*此概览文档提供了项目的全面介绍,包括技术栈、架构、功能特性和使用场景,是了解项目全貌的起点。*
|
||||
45
docs/project-scan-report.json
Normal file
45
docs/project-scan-report.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"workflow_version": "1.2.0",
|
||||
"timestamps": {
|
||||
"started": "2025-11-06T07:21:00Z",
|
||||
"last_updated": "2025-11-06T07:33:00Z",
|
||||
"completed": "2025-11-06T07:33:00Z"
|
||||
},
|
||||
"mode": "initial_scan",
|
||||
"scan_level": "deep",
|
||||
"project_root": "/mnt/code/vk-eci",
|
||||
"output_folder": "/mnt/code/vk-eci/docs",
|
||||
"completed_steps": [
|
||||
{"step": "step_1", "status": "completed", "timestamp": "2025-11-06T07:21:00Z", "summary": "Classified as monolith with 1 part (CLI tool)"},
|
||||
{"step": "step_2", "status": "completed", "timestamp": "2025-11-06T07:22:00Z", "summary": "Found 4 existing docs"},
|
||||
{"step": "step_3", "status": "completed", "timestamp": "2025-11-06T07:23:00Z", "summary": "Tech stack: Go CLI with Virtual Kubelet"},
|
||||
{"step": "step_4", "status": "completed", "timestamp": "2025-11-06T07:24:00Z", "summary": "Conditional analysis complete, 3 files written"},
|
||||
{"step": "step_10", "status": "completed", "timestamp": "2025-11-06T07:33:00Z", "summary": "Master index generated"},
|
||||
{"step": "step_12", "status": "completed", "timestamp": "2025-11-06T07:33:00Z", "summary": "Workflow complete"}
|
||||
],
|
||||
"current_step": "completed",
|
||||
"findings": {
|
||||
"project_classification": {
|
||||
"repository_type": "monolith",
|
||||
"parts_count": 1,
|
||||
"primary_tech": "Go CLI tool"
|
||||
}
|
||||
},
|
||||
"project_parts": [
|
||||
{
|
||||
"part_id": "main",
|
||||
"project_type_id": "cli",
|
||||
"display_name": "Alibaba Cloud ECI Provider",
|
||||
"root_path": "/mnt/code/vk-eci"
|
||||
}
|
||||
],
|
||||
"outputs_generated": [
|
||||
"project-scan-report.json",
|
||||
"technology-stack.md",
|
||||
"source-tree-analysis.md",
|
||||
"development-guide.md",
|
||||
"project-overview.md",
|
||||
"index.md"
|
||||
],
|
||||
"resume_instructions": "Workflow completed successfully"
|
||||
}
|
||||
117
docs/source-tree-analysis.md
Normal file
117
docs/source-tree-analysis.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# 源树分析
|
||||
|
||||
## 项目目录结构
|
||||
|
||||
```
|
||||
vk-eci/
|
||||
├── .circleci/ # CI/CD配置
|
||||
│ └── config.yml # CircleCI配置
|
||||
├── .claude/ # Claude Code配置
|
||||
├── .github/ # GitHub配置
|
||||
├── bmad/ # BMad工作流框架
|
||||
├── cmd/ # 命令行入口
|
||||
│ └── virtual-kubelet/ # 虚拟Kubelet命令行
|
||||
│ ├── commands/ # 子命令定义
|
||||
│ │ ├── providers/ # Provider相关命令
|
||||
│ │ ├── root/ # 根命令和配置
|
||||
│ │ └── version/ # 版本命令
|
||||
│ └── main.go # 程序主入口
|
||||
├── docs/ # 项目文档
|
||||
│ ├── eci.md # ECI相关文档
|
||||
│ ├── product-brief-vk-eci-2025-11-06.md # 产品简介
|
||||
│ └── technology-stack.md # 技术栈文档
|
||||
├── eci/ # ECI客户端实现
|
||||
│ ├── client.go # ECI客户端
|
||||
│ ├── create_container_group.go # 创建容器组
|
||||
│ ├── delete_container_group.go # 删除容器组
|
||||
│ ├── describe_container_groups.go # 描述容器组
|
||||
│ ├── describe_container_log.go # 获取容器日志
|
||||
│ └── struct_config_file_to_path.go # 配置结构转换
|
||||
├── hack/ # 构建和开发工具
|
||||
│ └── ci/ # CI相关脚本
|
||||
├── eci.go # 主要Provider实现
|
||||
├── config.go # 配置管理
|
||||
├── errors.go # 错误定义
|
||||
├── eci.toml # 配置文件示例
|
||||
├── eci.svg # 项目图标
|
||||
├── go.mod # Go模块定义
|
||||
├── go.sum # 依赖校验和
|
||||
├── Makefile # 构建脚本
|
||||
├── Dockerfile # 容器化构建
|
||||
├── README.md # 项目说明
|
||||
└── CLAUDE.md # Claude Code指导
|
||||
```
|
||||
|
||||
## 关键目录说明
|
||||
|
||||
### cmd/ - 命令行入口
|
||||
- **virtual-kubelet/main.go** - 程序主入口,使用Cobra框架
|
||||
- **commands/root/** - 根命令定义和全局配置
|
||||
- **commands/providers/** - Provider相关子命令
|
||||
- **commands/version/** - 版本信息命令
|
||||
|
||||
### eci/ - ECI客户端实现
|
||||
- **client.go** - ECI API客户端核心实现
|
||||
- **create_container_group.go** - 创建ECI容器组
|
||||
- **delete_container_group.go** - 删除ECI容器组
|
||||
- **describe_container_groups.go** - 查询ECI容器组状态
|
||||
- **describe_container_log.go** - 获取容器日志
|
||||
|
||||
### 核心文件
|
||||
- **eci.go** - Virtual Kubelet Provider主要实现
|
||||
- 实现Provider接口
|
||||
- 处理Pod生命周期
|
||||
- 与ECI API交互
|
||||
- **config.go** - 配置管理
|
||||
- TOML配置文件解析
|
||||
- 环境变量支持
|
||||
- 默认配置设置
|
||||
- **errors.go** - 错误定义和分类
|
||||
|
||||
### 构建和部署
|
||||
- **Makefile** - 自动化构建脚本
|
||||
- **Dockerfile** - 多阶段容器构建
|
||||
- **.circleci/config.yml** - CI/CD流水线
|
||||
|
||||
### 文档
|
||||
- **docs/** - 项目文档目录
|
||||
- **README.md** - 项目概述和使用说明
|
||||
- **CLAUDE.md** - Claude Code项目指导
|
||||
|
||||
## 架构特点
|
||||
|
||||
### 模块化设计
|
||||
- **清晰的职责分离** - 命令行、Provider、ECI客户端各司其职
|
||||
- **接口驱动** - 遵循Virtual Kubelet Provider接口规范
|
||||
- **配置解耦** - 配置管理独立于业务逻辑
|
||||
|
||||
### 扩展性
|
||||
- **Cobra框架** - 支持命令扩展
|
||||
- **Provider模式** - 易于添加新的云提供商
|
||||
- **模块化ECI客户端** - 支持ECI API扩展
|
||||
|
||||
### 可维护性
|
||||
- **标准Go项目结构** - 遵循Go语言最佳实践
|
||||
- **清晰的包组织** - 按功能模块划分
|
||||
- **完整的构建工具** - 支持开发、测试、部署全流程
|
||||
|
||||
## 集成点
|
||||
|
||||
### 与Kubernetes集成
|
||||
- 通过Virtual Kubelet框架与Kubernetes API服务器通信
|
||||
- 实现标准的Provider接口
|
||||
- 支持Pod调度到ECI实例
|
||||
|
||||
### 与阿里云ECI集成
|
||||
- 使用阿里云官方SDK
|
||||
- 实现ECI API客户端
|
||||
- 处理容器组生命周期管理
|
||||
|
||||
### 配置管理
|
||||
- 支持TOML配置文件
|
||||
- 环境变量覆盖
|
||||
- 合理的默认值设置
|
||||
|
||||
---
|
||||
|
||||
*此文档提供了项目的完整目录结构和关键文件说明,帮助理解项目组织架构。*
|
||||
160
docs/technology-stack.md
Normal file
160
docs/technology-stack.md
Normal file
@@ -0,0 +1,160 @@
|
||||
# 技术栈分析
|
||||
|
||||
## 项目概述
|
||||
|
||||
**项目名称**: Alibaba Cloud ECI Provider for Virtual Kubelet
|
||||
**项目类型**: CLI工具 (Go语言)
|
||||
**架构模式**: 单体架构
|
||||
**主要功能**: 将Kubernetes Pod调度到阿里云ECI(弹性容器实例)的适配器
|
||||
|
||||
## 核心技术栈
|
||||
|
||||
### 编程语言
|
||||
- **主要语言**: Go 1.13+
|
||||
- **构建工具**: Make
|
||||
|
||||
### 核心框架和库
|
||||
|
||||
#### 虚拟Kubelet集成
|
||||
- `github.com/virtual-kubelet/virtual-kubelet` - 虚拟Kubelet核心库
|
||||
- `github.com/virtual-kubelet/virtual-kubelet/manager` - 资源管理器
|
||||
- `github.com/virtual-kubelet/virtual-kubelet/node/api` - 节点API
|
||||
- `github.com/virtual-kubelet/virtual-kubelet/log` - 日志系统
|
||||
- `github.com/virtual-kubelet/virtual-kubelet/errdefs` - 错误定义
|
||||
|
||||
#### 阿里云SDK集成
|
||||
- `github.com/aliyun/alibaba-cloud-sdk-go` - 阿里云官方SDK
|
||||
- `github.com/aliyun/alibaba-cloud-sdk-go/sdk` - SDK核心
|
||||
- `github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth` - 认证模块
|
||||
|
||||
#### Kubernetes集成
|
||||
- `k8s.io/api` - Kubernetes API定义
|
||||
- `k8s.io/apimachinery` - Kubernetes资源管理
|
||||
- `k8s.io/client-go` - Kubernetes客户端
|
||||
- `k8s.io/klog` - Kubernetes日志
|
||||
|
||||
#### 命令行界面
|
||||
- `github.com/spf13/cobra` - CLI框架
|
||||
- `github.com/spf13/pflag` - 命令行标志
|
||||
|
||||
#### 日志和追踪
|
||||
- `github.com/sirupsen/logrus` - 结构化日志
|
||||
- `go.opencensus.io` - 分布式追踪
|
||||
- `contrib.go.opencensus.io/exporter/jaeger` - Jaeger导出器
|
||||
- `contrib.go.opencensus.io/exporter/ocagent` - OpenCensus代理导出器
|
||||
|
||||
#### 配置管理
|
||||
- `github.com/BurntSushi/toml` - TOML配置文件解析
|
||||
|
||||
#### 工具库
|
||||
- `github.com/pkg/errors` - 错误处理
|
||||
- `github.com/mitchellh/go-homedir` - 用户目录处理
|
||||
|
||||
## 项目结构
|
||||
|
||||
### 主要目录
|
||||
- `cmd/virtual-kubelet/` - 命令行入口和子命令
|
||||
- `eci/` - 阿里云ECI API客户端
|
||||
- `docs/` - 项目文档
|
||||
- `hack/` - 构建和开发工具
|
||||
- `.circleci/` - CI/CD配置
|
||||
|
||||
### 核心文件
|
||||
- `eci.go` - 主要Provider实现
|
||||
- `config.go` - 配置管理
|
||||
- `errors.go` - 错误定义
|
||||
- `eci/client.go` - ECI客户端
|
||||
- `cmd/virtual-kubelet/main.go` - 程序入口
|
||||
|
||||
## 构建和部署
|
||||
|
||||
### 构建工具
|
||||
- **Makefile** - 自动化构建脚本
|
||||
- **Dockerfile** - 容器化构建
|
||||
- **Go Modules** - 依赖管理
|
||||
|
||||
### 构建命令
|
||||
```bash
|
||||
make build # 构建二进制文件
|
||||
make test # 运行测试
|
||||
make vet # 代码静态分析
|
||||
make lint # 代码质量检查
|
||||
make mod # 依赖管理
|
||||
make clean # 清理构建产物
|
||||
```
|
||||
|
||||
### CI/CD
|
||||
- **CircleCI** - 持续集成
|
||||
- **验证流程**: vet → lint → check-mod → test
|
||||
- **Docker构建**: 多阶段构建优化镜像大小
|
||||
|
||||
## 配置管理
|
||||
|
||||
### 配置文件格式
|
||||
- **TOML格式** - 使用BurntSushi/toml解析
|
||||
- **环境变量** - 敏感信息通过环境变量配置
|
||||
|
||||
### 主要配置项
|
||||
- 区域 (Region)
|
||||
- 操作系统 (OperatingSystem)
|
||||
- 资源限制 (CPU, Memory, Pods)
|
||||
- 网络配置 (VSwitch, SecureGroup)
|
||||
- 集群名称 (ClusterName)
|
||||
|
||||
## 架构特点
|
||||
|
||||
### Provider模式
|
||||
- 实现Virtual Kubelet Provider接口
|
||||
- 与Kubernetes API服务器通信
|
||||
- 将Pod创建请求转发到阿里云ECI
|
||||
|
||||
### 异步操作
|
||||
- 支持Pod的创建、删除、状态查询
|
||||
- 处理ECI实例的生命周期
|
||||
- 监控Pod状态变化
|
||||
|
||||
### 资源管理
|
||||
- 集成Virtual Kubelet资源管理器
|
||||
- 支持资源限制和配额管理
|
||||
- 处理Pod调度和资源分配
|
||||
|
||||
## 测试策略
|
||||
|
||||
### 测试框架
|
||||
- **标准Go测试框架**
|
||||
- **单元测试** - 核心功能测试
|
||||
- **集成测试** - API集成测试
|
||||
|
||||
### 质量保证
|
||||
- **golangci-lint** - 代码质量检查
|
||||
- **go vet** - 静态分析
|
||||
- **模块验证** - 依赖完整性检查
|
||||
|
||||
## 部署架构
|
||||
|
||||
### 容器化部署
|
||||
- **Alpine Linux** - 轻量级基础镜像
|
||||
- **静态编译** - 减少运行时依赖
|
||||
- **多阶段构建** - 优化镜像大小
|
||||
|
||||
### Kubernetes集成
|
||||
- 作为DaemonSet部署
|
||||
- 与Kubernetes API服务器通信
|
||||
- 支持Pod调度到ECI实例
|
||||
|
||||
## 监控和日志
|
||||
|
||||
### 日志系统
|
||||
- **Logrus** - 结构化日志
|
||||
- **Kubernetes Events** - 事件通知
|
||||
- **OpenCensus** - 分布式追踪
|
||||
|
||||
### 监控指标
|
||||
- Pod创建成功率
|
||||
- ECI实例状态
|
||||
- 资源使用情况
|
||||
- API调用延迟
|
||||
|
||||
---
|
||||
|
||||
*此文档基于深度扫描生成,提供了项目的全面技术栈概览。*
|
||||
Reference in New Issue
Block a user