@dtt_siye/atool 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VERSION +1 -1
- package/hooks/doc-sync-reminder +4 -4
- package/hooks/hooks-cursor.json +20 -0
- package/hooks/hooks.json +21 -1
- package/hooks/pre-commit +191 -0
- package/hooks/prompt-guard +84 -35
- package/hooks/session-start +34 -12
- package/hooks/task-state-tracker +145 -0
- package/lib/common.sh +36 -23
- package/lib/compute-importance.sh +73 -0
- package/lib/install-cursor.sh +2 -2
- package/lib/install-hooks.sh +64 -0
- package/lib/install-skills.sh +19 -0
- package/lib/knowledge-graph.sh +483 -81
- package/lib/pre-scan.sh +81 -6
- package/package.json +1 -1
- package/skills/agent-audit/SKILL.md +180 -0
- package/skills/architecture-guard/SKILL.md +164 -0
- package/skills/architecture-guard/rules/violation-detection.md +90 -0
- package/skills/ci-feedback/SKILL.md +165 -0
- package/skills/project-analyze/SKILL.md +131 -23
- package/skills/project-analyze/phases/phase1-setup.md +15 -1
- package/skills/project-analyze/phases/phase2-understand.md +17 -2
- package/skills/project-analyze/phases/phase2.5-refine.md +293 -0
- package/skills/project-analyze/phases/phase3-graph.md +7 -1
- package/skills/project-analyze/phases/phase4-synthesize.md +117 -120
- package/skills/project-analyze/phases/phase5-export.md +117 -33
- package/skills/project-analyze/prompts/understand-agent.md +17 -0
- package/skills/project-analyze/rules/android.md +61 -260
- package/skills/project-analyze/rules/devops.md +61 -421
- package/skills/project-analyze/rules/generic.md +53 -221
- package/skills/project-analyze/rules/go.md +60 -275
- package/skills/project-analyze/rules/harmony.md +64 -237
- package/skills/project-analyze/rules/java.md +47 -485
- package/skills/project-analyze/rules/mobile-flutter.md +57 -292
- package/skills/project-analyze/rules/mobile-react-native.md +65 -262
- package/skills/project-analyze/rules/mobile-swift.md +58 -303
- package/skills/project-analyze/rules/python.md +50 -296
- package/skills/project-analyze/rules/rust-tauri.md +51 -217
- package/skills/project-analyze/rules/rust.md +50 -274
- package/skills/project-analyze/rules/web-nextjs.md +61 -335
- package/skills/project-analyze/rules/web-react.md +50 -272
- package/skills/project-analyze/rules/web-vue.md +58 -352
- package/skills/project-analyze/rules/web.md +55 -347
- package/skills/project-query/SKILL.md +681 -120
- package/skills/requirements-writer/SKILL.md +48 -1
- package/skills/software-architecture/SKILL.md +73 -3
|
@@ -1,443 +1,83 @@
|
|
|
1
1
|
# DevOps / Infrastructure 项目分析规则
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **编码规范**:本规则不包含编码规范内容。Phase 2.5 精炼阶段会自动加载 `devops-conventions` skill 作为规范约束。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 模块发现策略
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
Infrastructure as Code (IaC)
|
|
9
|
-
├── Docker(容器化)
|
|
10
|
-
│ ├── Dockerfile(镜像构建)
|
|
11
|
-
│ ├── docker-compose.yml(多服务编排)
|
|
12
|
-
│ └── .dockerignore(构建排除)
|
|
13
|
-
├── Kubernetes(容器编排)
|
|
14
|
-
│ ├── Deployment / StatefulSet / DaemonSet
|
|
15
|
-
│ ├── Service / Ingress / Gateway
|
|
16
|
-
│ ├── ConfigMap / Secret / PVC
|
|
17
|
-
│ ├── Helm Chart(模板化部署)
|
|
18
|
-
│ └── Kustomize(overlay 变体)
|
|
19
|
-
├── Terraform / OpenTofu(基础设施)
|
|
20
|
-
│ ├── resource / data / module
|
|
21
|
-
│ ├── provider / backend
|
|
22
|
-
│ └── variable / output / locals
|
|
23
|
-
└── CI/CD(自动化流水线)
|
|
24
|
-
├── GitHub Actions / GitLab CI / Jenkins
|
|
25
|
-
├── ArgoCD / Flux(GitOps)
|
|
26
|
-
└── Makefile / Taskfile(任务编排)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## 目录扫描策略
|
|
30
|
-
|
|
31
|
-
### 1. 识别基础设施类型
|
|
32
|
-
|
|
33
|
-
**信号文件检测:**
|
|
34
|
-
|
|
35
|
-
| 类型 | 信号文件 | 说明 |
|
|
36
|
-
|------|----------|------|
|
|
37
|
-
| Docker | `Dockerfile`, `Dockerfile.*`, `docker-compose.yml`, `docker-compose.yaml`, `.dockerignore` | 容器化配置 |
|
|
38
|
-
| Kubernetes | `k8s/`, `kubernetes/`, `manifests/`, `deploy/`, `kustomization.yaml`, `Chart.yaml`, `values.yaml` | K8s 部署配置 |
|
|
39
|
-
| Terraform | `*.tf`, `*.tfvars`, `terraform.tfstate`, `.terraform.lock.hcl` | IaC 配置 |
|
|
40
|
-
| Ansible | `playbook.yml`, `ansible.cfg`, `inventory/`, `roles/` | 配置管理 |
|
|
41
|
-
| CI/CD | `.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile`, `.circleci/`, `tekton/`, `.argo/` | 流水线配置 |
|
|
42
|
-
| 监控 | `prometheus/`, `grafana/`, `alertmanager/`, `dashboards/`, `rules/*.yml` | 可观测性配置 |
|
|
43
|
-
| 安全 | `vault/`, `policy/`, `cert-manager/`, `istio/` | 安全策略配置 |
|
|
44
|
-
|
|
45
|
-
### 2. Docker 分析
|
|
46
|
-
|
|
47
|
-
**扫描文件**: `Dockerfile`, `Dockerfile.*`, `docker-compose.yml`, `docker-compose.yaml`, `.dockerignore`
|
|
48
|
-
|
|
49
|
-
**提取内容**:
|
|
50
|
-
- 基础镜像及版本(FROM 行)
|
|
51
|
-
- 多阶段构建结构(每个 FROM 为一个阶段)
|
|
52
|
-
- 暴露端口(EXPOSE)
|
|
53
|
-
- 环境变量(ENV)
|
|
54
|
-
- 卷挂载(VOLUME)
|
|
55
|
-
- 入口点(ENTRYPOINT / CMD)
|
|
56
|
-
- 构建参数(ARG)
|
|
57
|
-
- 健康检查(HEALTHCHECK)
|
|
58
|
-
- 用户/权限(USER, RUN chown)
|
|
59
|
-
- `.dockerignore` 排除规则
|
|
60
|
-
|
|
61
|
-
**输出示例**:
|
|
62
|
-
```
|
|
63
|
-
### api-gateway(Dockerfile)
|
|
64
|
-
- **路径**: `services/api-gateway/Dockerfile`
|
|
65
|
-
- **基础镜像**: `node:20-alpine AS builder` → `nginx:alpine AS production`
|
|
66
|
-
- **多阶段构建**:
|
|
67
|
-
| 阶段 | 基础镜像 | 用途 |
|
|
68
|
-
|------|----------|------|
|
|
69
|
-
| builder | node:20-alpine | 依赖安装 + 构建 |
|
|
70
|
-
| production | nginx:alpine | 运行时(Nginx 静态服务) |
|
|
71
|
-
- **暴露端口**: 8080
|
|
72
|
-
- **环境变量**: NODE_ENV=production, API_BASE_URL
|
|
73
|
-
- **健康检查**: `curl -f http://localhost:8080/health || exit 1`
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### 3. Docker Compose 分析
|
|
77
|
-
|
|
78
|
-
**扫描文件**: `docker-compose.yml`, `docker-compose.yaml`, `docker-compose.*.yml`
|
|
79
|
-
|
|
80
|
-
**提取内容**:
|
|
81
|
-
- 服务列表(名称 + 镜像 + 构建上下文)
|
|
82
|
-
- 服务间依赖(depends_on)
|
|
83
|
-
- 网络配置(networks)
|
|
84
|
-
- 卷挂载(volumes)
|
|
85
|
-
- 环境变量(environment / env_file)
|
|
86
|
-
- 端口映射(ports)
|
|
87
|
-
- 健康检查(healthcheck)
|
|
88
|
-
- 扩展策略(deploy.replicas / scale)
|
|
89
|
-
- Compose 文件版本和 overlay 结构
|
|
90
|
-
|
|
91
|
-
**输出示例**:
|
|
92
|
-
```
|
|
93
|
-
### Docker Compose 服务编排
|
|
94
|
-
- **文件**: `docker-compose.yml` (version: '3.8')
|
|
95
|
-
- **服务列表**:
|
|
96
|
-
| 服务名 | 镜像 | 端口 | 依赖 | 说明 |
|
|
97
|
-
|--------|------|------|------|------|
|
|
98
|
-
| api | node:20-alpine (build) | 3000:3000 | postgres, redis | API 服务 |
|
|
99
|
-
| worker | node:20-alpine (build) | - | postgres, redis | 后台任务处理 |
|
|
100
|
-
| postgres | postgres:16-alpine | 5432:5432 | - | 数据库 |
|
|
101
|
-
| redis | redis:7-alpine | 6379:6379 | - | 缓存 |
|
|
102
|
-
- **网络**: app-network (bridge)
|
|
103
|
-
- **卷**: postgres-data, redis-data
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### 4. Kubernetes 分析
|
|
107
|
-
|
|
108
|
-
**扫描文件**: `k8s/**/*.yaml`, `manifests/**/*.yaml`, `deploy/**/*.yaml`, `Chart.yaml`, `values.yaml`, `templates/**/*.yaml`
|
|
109
|
-
|
|
110
|
-
**提取内容**:
|
|
111
|
-
- 资源类型和数量(Deployment, Service, Ingress, ConfigMap, Secret, PVC, CronJob, Job, HPA)
|
|
112
|
-
- 每个 Deployment 的镜像、副本数、资源限制、探针配置
|
|
113
|
-
- Service 类型和端口映射(ClusterIP, NodePort, LoadBalancer)
|
|
114
|
-
- Ingress 规则(主机、路径、TLS)
|
|
115
|
-
- ConfigMap / Secret 数据结构(键名,不记录敏感值)
|
|
116
|
-
- PVC 存储类和大小
|
|
117
|
-
- Helm Chart 元数据(name, version, appVersion, dependencies)
|
|
118
|
-
- Helm values 结构(关键配置项及默认值)
|
|
119
|
-
- Kustomize overlay 结构(base + overlays/)
|
|
120
|
-
|
|
121
|
-
**输出示例**:
|
|
122
|
-
```
|
|
123
|
-
### Kubernetes 部署配置
|
|
124
|
-
#### Deployments
|
|
125
|
-
| 名称 | 命名空间 | 镜像 | 副本 | 资源限制 |
|
|
126
|
-
|------|----------|------|------|----------|
|
|
127
|
-
| api-server | production | myapp/api:v1.2.3 | 3 | cpu: 500m, mem: 512Mi |
|
|
128
|
-
| worker | production | myapp/worker:v1.2.3 | 2 | cpu: 250m, mem: 256Mi |
|
|
129
|
-
|
|
130
|
-
#### Services
|
|
131
|
-
| 名称 | 类型 | 端口 | 选择器 |
|
|
132
|
-
|------|------|------|--------|
|
|
133
|
-
| api-server-svc | ClusterIP | 8080:8080 | app=api-server |
|
|
134
|
-
| api-server-ingress | LoadBalancer | 80:80, 443:443 | app=api-server |
|
|
135
|
-
|
|
136
|
-
#### Ingress
|
|
137
|
-
| 主机 | 路径 | 后端 | TLS |
|
|
138
|
-
|------|------|------|-----|
|
|
139
|
-
| api.example.com | / | api-server-svc:8080 | api-tls |
|
|
140
|
-
|
|
141
|
-
#### ConfigMaps
|
|
142
|
-
| 名称 | 键 |
|
|
143
|
-
|------|-----|
|
|
144
|
-
| api-config | DATABASE_URL, REDIS_URL, LOG_LEVEL |
|
|
145
|
-
|
|
146
|
-
#### Helm Chart
|
|
147
|
-
- **名称**: myapp-chart
|
|
148
|
-
- **版本**: 0.3.0
|
|
149
|
-
- **AppVersion**: 1.2.3
|
|
150
|
-
- **依赖**: postgresql, redis
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### 5. Terraform 分析
|
|
154
|
-
|
|
155
|
-
**扫描文件**: `*.tf`, `*.tfvars`, `*.tf.json`
|
|
156
|
-
|
|
157
|
-
**提取内容**:
|
|
158
|
-
- Provider 列表及版本(aws, azurerm, google, kubernetes, helm 等)
|
|
159
|
-
- Backend 配置(s3, gcs, http 等)
|
|
160
|
-
- Resource 列表(类型 + 名称 + 关键参数)
|
|
161
|
-
- Data source 列表(类型 + 名称)
|
|
162
|
-
- Module 调用(源 + 版本 + 输入变量)
|
|
163
|
-
- Variable 定义(名称 + 类型 + 默认值 + 描述)
|
|
164
|
-
- Output 定义(名称 + 值 + 描述)
|
|
165
|
-
- Locals 定义(名称 + 值)
|
|
166
|
-
- 状态文件引用(remote state data source)
|
|
167
|
-
|
|
168
|
-
**输出示例**:
|
|
169
|
-
```
|
|
170
|
-
### Terraform 基础设施
|
|
171
|
-
#### Providers
|
|
172
|
-
| Provider | 版本 | 源 |
|
|
173
|
-
|----------|------|-----|
|
|
174
|
-
| aws | ~> 5.0 | hashicorp/aws |
|
|
175
|
-
| kubernetes | ~> 2.23 | hashicorp/kubernetes |
|
|
176
|
-
|
|
177
|
-
#### Resources(按类型分组)
|
|
178
|
-
**EC2**:
|
|
179
|
-
| 名称 | 实例类型 | 关键参数 |
|
|
180
|
-
|------|----------|----------|
|
|
181
|
-
| aws_instance.api | t3.medium | ami, vpc_security_group_ids, subnet_id |
|
|
182
|
-
|
|
183
|
-
**RDS**:
|
|
184
|
-
| 名称 | 引擎 | 存储大小 |
|
|
185
|
-
|------|------|----------|
|
|
186
|
-
| aws_db_instance.main | postgres 16 | 100 GB |
|
|
187
|
-
|
|
188
|
-
#### Modules
|
|
189
|
-
| 名称 | 源 | 版本 | 说明 |
|
|
190
|
-
|------|-----|------|------|
|
|
191
|
-
| vpc | terraform-aws-modules/vpc/aws | 5.1.0 | VPC 网络配置 |
|
|
192
|
-
| eks | terraform-aws-modules/eks/aws | 19.15.0 | EKS 集群 |
|
|
193
|
-
|
|
194
|
-
#### Variables
|
|
195
|
-
| 名称 | 类型 | 默认值 | 描述 |
|
|
196
|
-
|------|------|--------|------|
|
|
197
|
-
| environment | string | "production" | 部署环境 |
|
|
198
|
-
| instance_type | string | "t3.medium" | EC2 实例类型 |
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### 6. CI/CD 流水线分析
|
|
202
|
-
|
|
203
|
-
**扫描文件**: `.github/workflows/*.yml`, `.gitlab-ci.yml`, `Jenkinsfile`, `.circleci/config.yml`, `tekton/*.yaml`
|
|
7
|
+
按基础设施组件类型分组发现模块:
|
|
204
8
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
-
|
|
213
|
-
|
|
9
|
+
| 信号文件 / 目录 | 识别类型 | 模块粒度 |
|
|
10
|
+
|----------------|---------|---------|
|
|
11
|
+
| `Dockerfile`, `Dockerfile.*` | Docker 镜像 | 每个 Dockerfile 一个模块 |
|
|
12
|
+
| `docker-compose.yml`, `docker-compose.*.yml` | 服务编排 | 每个 compose 文件一个模块 |
|
|
13
|
+
| `k8s/`, `manifests/`, `deploy/`, `Chart.yaml` | Kubernetes | 按 namespace / application 分组 |
|
|
14
|
+
| `*.tf`, `terraform/modules/` | Terraform IaC | 每个 module 子目录一个模块 |
|
|
15
|
+
| `playbook.yml`, `roles/` | Ansible | 每个 playbook 一个模块 |
|
|
16
|
+
| `.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile` | CI/CD | 每个 workflow 文件一个模块 |
|
|
17
|
+
| `prometheus/`, `grafana/`, `alertmanager/` | 监控 | 按工具分组 |
|
|
214
18
|
|
|
215
|
-
|
|
216
|
-
- Stage 列表和顺序
|
|
217
|
-
- Job 列表(stage + image + script + rules/only/except)
|
|
218
|
-
- 变量定义(variables)
|
|
219
|
-
- 缓存配置(cache)
|
|
220
|
-
- Artifact 定义
|
|
221
|
-
- 触发规则(rules / only / except)
|
|
19
|
+
排除生成文件:`terraform.tfstate`(含敏感信息,只记录 backend 类型)、`helm template` 输出、`terraform plan` 输出。
|
|
222
20
|
|
|
223
|
-
|
|
224
|
-
```
|
|
225
|
-
### GitHub Actions CI/CD
|
|
226
|
-
#### Workflow: ci.yml
|
|
227
|
-
- **触发条件**: push (main, develop), pull_request
|
|
228
|
-
- **Jobs**:
|
|
229
|
-
| Job | 运行器 | 依赖 | 超时 | 说明 |
|
|
230
|
-
|-----|--------|------|------|------|
|
|
231
|
-
| lint | ubuntu-latest | - | 10m | 代码风格检查 |
|
|
232
|
-
| test | ubuntu-latest | lint | 20m | 单元测试 + 覆盖率 |
|
|
233
|
-
| build | ubuntu-latest | test | 15m | Docker 镜像构建 |
|
|
234
|
-
| deploy-staging | ubuntu-latest | build | 10m | 部署到 staging |
|
|
235
|
-
|
|
236
|
-
#### Workflow: deploy.yml
|
|
237
|
-
- **触发条件**: workflow_dispatch (inputs: environment)
|
|
238
|
-
- **环境**: production (需要审批), staging
|
|
239
|
-
- **Secrets**: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, KUBECONFIG
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### 7. 监控与可观测性分析
|
|
243
|
-
|
|
244
|
-
**扫描文件**: `prometheus/*.yml`, `grafana/**/*.json`, `alertmanager/*.yml`, `dashboards/**/*.json`
|
|
245
|
-
|
|
246
|
-
**提取内容**:
|
|
247
|
-
- Prometheus scrape 配置(targets, interval, labels)
|
|
248
|
-
- 自定义指标规则(recording rules)
|
|
249
|
-
- 告警规则(alert name, expr, severity, annotations)
|
|
250
|
-
- Grafana Dashboard 列表(标题 + 数据源 + 面板数)
|
|
251
|
-
- Alertmanager 路由配置(receiver, group_by, inhibit_rules)
|
|
252
|
-
- 日志聚合配置(如 ELK / Loki 的相关配置文件)
|
|
253
|
-
|
|
254
|
-
**输出示例**:
|
|
255
|
-
```
|
|
256
|
-
### 监控配置
|
|
257
|
-
#### Prometheus
|
|
258
|
-
- **Scrape 配置**:
|
|
259
|
-
| Job | Target | 间隔 | 标签 |
|
|
260
|
-
|-----|--------|------|------|
|
|
261
|
-
| api-server | http://api:8080/metrics | 15s | app=api, env=prod |
|
|
262
|
-
|
|
263
|
-
#### 告警规则
|
|
264
|
-
| 告警名 | 表达式 | 严重级别 | 说明 |
|
|
265
|
-
|--------|--------|----------|------|
|
|
266
|
-
| HighErrorRate | rate(http_errors_total[5m]) > 0.05 | warning | 错误率 > 5% |
|
|
267
|
-
| PodCrashLooping | kube_pod_container_status_restarts_total > 5 | critical | Pod 重启循环 |
|
|
268
|
-
|
|
269
|
-
#### Grafana Dashboards
|
|
270
|
-
| 名称 | 数据源 | 面板数 |
|
|
271
|
-
|------|--------|--------|
|
|
272
|
-
| API Overview | Prometheus | 12 |
|
|
273
|
-
| System Resources | Prometheus | 8 |
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
## 模块发现规则
|
|
277
|
-
|
|
278
|
-
- **Docker**: 每个 `Dockerfile` 或 `Dockerfile.*` 为一个分析单元
|
|
279
|
-
- **Compose**: 每个 compose 文件为一个分析单元,按 services 拆分子任务
|
|
280
|
-
- **Kubernetes**: 按 namespace / application 分组,每组内的资源类型为一个子任务
|
|
281
|
-
- **Helm**: Chart 为一个分析单元,`values.yaml` 和 `templates/` 分别分析
|
|
282
|
-
- **Terraform**: 每个 `*.tf` 文件为一个分析单元,按 resource type 分组
|
|
283
|
-
- **Ansible**: 每个 playbook 为一个分析单元
|
|
284
|
-
- **CI/CD**: 每个 workflow/job 文件为一个分析单元
|
|
285
|
-
- **监控**: 按工具(Prometheus / Grafana / Alertmanager)分组
|
|
286
|
-
|
|
287
|
-
## 依赖分析
|
|
288
|
-
|
|
289
|
-
从配置文件提取:
|
|
290
|
-
- Docker 基础镜像及版本(FROM 行,含 digest)
|
|
291
|
-
- K8s 部署的镜像标签(image: registry/...:tag)
|
|
292
|
-
- Terraform provider 及版本约束
|
|
293
|
-
- Terraform module 源和版本
|
|
294
|
-
- CI/CD 使用的 action / plugin 及版本
|
|
295
|
-
- Helm Chart 依赖(Chart.yaml dependencies)
|
|
296
|
-
- 服务间依赖(compose depends_on, K8s init containers, ArgoCD sync waves)
|
|
297
|
-
- Makefile / Taskfile 中的 target 依赖关系
|
|
298
|
-
|
|
299
|
-
## 环境管理分析
|
|
300
|
-
|
|
301
|
-
**扫描文件**: `envs/`, `environments/`, `*.env.example`, `terraform.tfvars`, `values-*.yaml`, `overlays/*/`
|
|
302
|
-
|
|
303
|
-
**提取内容**:
|
|
304
|
-
- 环境列表(development, staging, production)
|
|
305
|
-
- 每个环境的差异配置(副本数、资源限制、域名、数据库实例等)
|
|
306
|
-
- 环境变量管理方式(ConfigMap / Secret / .env / Vault)
|
|
307
|
-
- 配置覆盖策略(Kustomize overlay / Helm values / Terraform workspaces)
|
|
308
|
-
|
|
309
|
-
## 安全配置分析
|
|
310
|
-
|
|
311
|
-
**扫描文件**: `network-policy*.yaml`, `rbac*.yaml`, `pod-security*.yaml`, `vault/*.hcl`, `cert-manager/*.yaml`
|
|
21
|
+
## 入口识别
|
|
312
22
|
|
|
313
|
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
-
|
|
318
|
-
- TLS 配置(证书来源、过期策略)
|
|
23
|
+
- **Docker Compose**: `docker-compose.yml` 中的 `services` 块 — 每个服务为一个入口节点
|
|
24
|
+
- **Kubernetes**: `Deployment` / `StatefulSet` 资源中的 `image` 字段;`Ingress` / `Gateway` 为流量入口
|
|
25
|
+
- **Terraform**: `main.tf` 或根目录 `*.tf` + `backend` 块(状态管理入口)
|
|
26
|
+
- **CI/CD**: workflow 文件的 `on:` 触发条件(push/PR/schedule/dispatch)
|
|
27
|
+
- **Helm**: `Chart.yaml` 的 `name` + `version`;`values.yaml` 为参数入口
|
|
319
28
|
|
|
320
|
-
##
|
|
29
|
+
## 架构模式识别
|
|
321
30
|
|
|
322
|
-
|
|
31
|
+
**服务拓扑**(Docker Compose / Kubernetes):
|
|
32
|
+
- 扫描 `depends_on`(Compose)和 init containers / sync waves(K8s)确定服务依赖顺序
|
|
33
|
+
- 识别 sidecar 模式(同一 Pod 多容器)
|
|
34
|
+
- 识别 multi-stage build(Dockerfile 多 FROM 行)
|
|
323
35
|
|
|
324
|
-
|
|
325
|
-
|
|
36
|
+
**IaC 模块结构**(Terraform / Helm):
|
|
37
|
+
- `terraform/modules/` 下每个子目录为一个可复用 module
|
|
38
|
+
- Helm Chart `templates/` 下的资源类型分组
|
|
39
|
+
- Kustomize `base/` + `overlays/` 多环境分层结构
|
|
326
40
|
|
|
327
|
-
|
|
328
|
-
|
|
41
|
+
**GitOps 检测**:
|
|
42
|
+
- 检查 `.argo/` / `argocd/` 目录或 ArgoCD Application 资源
|
|
43
|
+
- 识别 Flux `Kustomization` / `HelmRelease` 资源
|
|
329
44
|
|
|
330
|
-
##
|
|
331
|
-
### 基础设施拓扑图(ASCII art)
|
|
332
|
-
展示 VPC → K8s Cluster → Services → Pods 的完整拓扑
|
|
45
|
+
## 数据流模式
|
|
333
46
|
|
|
334
|
-
|
|
335
|
-
|
|
47
|
+
- **配置流**: ConfigMap / Secret → Pod 环境变量 / 挂载卷
|
|
48
|
+
- **流量路径**: Ingress → Service → Deployment → Pod
|
|
49
|
+
- **CI/CD 流水线**: 代码提交 → 构建 → 测试 → 镜像推送 → 部署触发
|
|
50
|
+
- **Secret 传递**: Vault / External Secrets Operator → K8s Secret → 应用
|
|
336
51
|
|
|
337
|
-
##
|
|
338
|
-
带注释的目录树
|
|
52
|
+
## 分析关注点
|
|
339
53
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
54
|
+
1. **服务拓扑完整性**:Compose `depends_on` 和 K8s init containers 是否覆盖所有服务依赖
|
|
55
|
+
2. **镜像版本固定**:检测 `image: xxx:latest` 模式(不推荐生产使用)
|
|
56
|
+
3. **资源限制缺失**:K8s Deployment 是否配置 `resources.limits`
|
|
57
|
+
4. **健康检查覆盖**:Dockerfile HEALTHCHECK 和 K8s liveness / readiness probe 是否配置
|
|
58
|
+
5. **Secret 管理方式**:硬编码在 YAML vs ConfigMap vs Vault / External Secrets
|
|
59
|
+
6. **多环境差异**:识别 Kustomize overlay 或 Helm values 中的环境差异配置
|
|
60
|
+
7. **CI/CD 安全门禁**:检查流水线中是否有测试、SAST 扫描、镜像签名步骤
|
|
343
61
|
|
|
344
|
-
##
|
|
345
|
-
| 变量名 | 说明 | 示例值 | 必需 |
|
|
346
|
-
|--------|------|--------|------|
|
|
62
|
+
## 输出示例
|
|
347
63
|
|
|
348
|
-
## 部署流程
|
|
349
|
-
从代码提交到生产部署的完整流程图
|
|
350
|
-
|
|
351
|
-
## 监控与告警
|
|
352
|
-
告警规则摘要 + Dashboard 链接
|
|
353
|
-
|
|
354
|
-
## 常用运维命令
|
|
355
|
-
部署、回滚、扩缩容、日志查看等命令
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
### COMPONENT.md
|
|
359
|
-
|
|
360
|
-
```markdown
|
|
361
|
-
# 基础设施组件文档
|
|
362
|
-
|
|
363
|
-
## Docker 服务
|
|
364
|
-
### {服务名}
|
|
365
|
-
- **镜像**: ...
|
|
366
|
-
- **端口映射**: ...
|
|
367
|
-
- **环境变量**: ...
|
|
368
|
-
- **健康检查**: ...
|
|
369
|
-
- **构建参数**: ...
|
|
370
|
-
|
|
371
|
-
## Kubernetes 资源
|
|
372
|
-
### Deployments
|
|
373
|
-
### Services
|
|
374
|
-
### Ingress
|
|
375
|
-
### ConfigMaps / Secrets
|
|
376
|
-
|
|
377
|
-
## Terraform 资源
|
|
378
|
-
### {资源类型}
|
|
379
|
-
| 名称 | 关键参数 | 依赖 |
|
|
380
|
-
|------|----------|------|
|
|
381
|
-
|
|
382
|
-
## CI/CD Pipelines
|
|
383
|
-
### {流水线名}
|
|
384
|
-
- **触发条件**: ...
|
|
385
|
-
- **阶段**: ...
|
|
386
|
-
- **Secret 使用**: ...
|
|
387
|
-
|
|
388
|
-
## 监控配置
|
|
389
|
-
### Prometheus
|
|
390
|
-
### 告警规则
|
|
391
|
-
### Grafana Dashboards
|
|
392
64
|
```
|
|
65
|
+
### 服务拓扑(docker-compose.yml)
|
|
66
|
+
| 服务名 | 镜像 | 端口 | 依赖 |
|
|
67
|
+
|---------|------------------------|-------------|-----------------|
|
|
68
|
+
| api | node:20-alpine (build) | 3000:3000 | postgres, redis |
|
|
69
|
+
| worker | node:20-alpine (build) | — | postgres, redis |
|
|
70
|
+
| postgres | postgres:16-alpine | 5432:5432 | — |
|
|
71
|
+
| redis | redis:7-alpine | 6379:6379 | — |
|
|
393
72
|
|
|
394
|
-
###
|
|
73
|
+
### Kubernetes Deployments
|
|
74
|
+
| 名称 | 命名空间 | 镜像 | 副本 | 资源限制 |
|
|
75
|
+
|-----------|----------|-----------------------|-----|---------------------|
|
|
76
|
+
| api-server | prod | myapp/api:v1.2.3 | 3 | cpu:500m mem:512Mi |
|
|
77
|
+
| worker | prod | myapp/worker:v1.2.3 | 2 | cpu:250m mem:256Mi |
|
|
395
78
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
## 监控 Dashboard 规范
|
|
402
|
-
- 图表类型选择标准
|
|
403
|
-
- 颜色编码(健康/警告/危险)
|
|
404
|
-
- 时间范围选择器默认值
|
|
405
|
-
|
|
406
|
-
## 告警通知规范
|
|
407
|
-
- 告警级别与通知渠道映射
|
|
408
|
-
- 告警消息格式模板
|
|
409
|
-
- 告警分组和抑制规则
|
|
410
|
-
|
|
411
|
-
## 日志规范
|
|
412
|
-
- 日志级别使用标准
|
|
413
|
-
- 结构化日志格式
|
|
414
|
-
- 日志保留策略
|
|
79
|
+
### CI/CD(.github/workflows/ci.yml)
|
|
80
|
+
- **触发**: push (main, develop), pull_request
|
|
81
|
+
- **阶段**: lint → test → build → deploy-staging
|
|
82
|
+
- **Secrets 使用**: AWS_ACCESS_KEY_ID, KUBECONFIG
|
|
415
83
|
```
|
|
416
|
-
|
|
417
|
-
## 模块边界识别
|
|
418
|
-
|
|
419
|
-
以下目录模式下的每个子目录视为独立模块(L2+ 分析时生成 MODULE-DOC.md):
|
|
420
|
-
|
|
421
|
-
| 层 | 扫描路径 | 模块判定规则 | MODULE-DOC slug 来源 |
|
|
422
|
-
|----|----------|-------------|---------------------|
|
|
423
|
-
| Manifests 层 | `manifests/` | 每个子目录 | 目录名 kebab-case |
|
|
424
|
-
| Terraform 模块 | `terraform/modules/` | 每个子目录 | 目录名 kebab-case |
|
|
425
|
-
| CI/CD 层 | `.github/workflows/` | 每个文件 | 文件名去后缀 kebab-case |
|
|
426
|
-
| Helm Charts | `helm/` | 每个 chart | chart 名 kebab-case |
|
|
427
|
-
| 脚本层 | `scripts/` | 每个子目录或文件 | 名称 kebab-case |
|
|
428
|
-
|
|
429
|
-
**不视为独立模块的情况**:
|
|
430
|
-
- 单文件入口(如 `Makefile`, `docker-compose.yml`)
|
|
431
|
-
- 纯配置文件(`.env.example`, `*.tfvars.example`)
|
|
432
|
-
- Secret 文件(只记录键名,不记录值)
|
|
433
|
-
- `.tf.json` 与 `*.tf` 合并分析
|
|
434
|
-
|
|
435
|
-
## Token 管理
|
|
436
|
-
|
|
437
|
-
- 大型 YAML 文件(K8s manifest、Helm values)单独分析
|
|
438
|
-
- 每个子任务分析 <=10 个文件
|
|
439
|
-
- `values.yaml`(Helm)和 `*.tfvars`(Terraform)单独作为一个子任务
|
|
440
|
-
- 生成的清单文件(`helm template` 输出、`terraform plan` 输出)跳过
|
|
441
|
-
- `terraform.tfstate` 不分析(含敏感信息,仅记录 backend 类型)
|
|
442
|
-
- Secret 文件只记录键名,不记录值
|
|
443
|
-
- `.tf.json` 与 `*.tf` 合并分析
|