# JWT + ETCD 加密系统文档索引

## 📚 文档完整导航

### 快速入门 (5-15分钟)

**推荐路径：** 从上到下顺序阅读

1. **[SUMMARY.md](./SUMMARY.md)** ⭐ 从这里开始
   - 📋 项目概览和架构图
   - 🎯 核心特性一览
   - ✅ 生产就绪检查清单
   - 🚀 下一步行动计划
   
2. **[README.md](./README.md)**
   - 🏃 4个快速部署步骤
   - 🔐 安全考虑事项
   - 🔄 密钥轮换程序
   - 🆘 故障排查

3. **[QUICK_REFERENCE.md](./QUICK_REFERENCE.md)**
   - ⚡ 一页速查表
   - 📝 常见命令复制粘贴
   - 🗺️ 文档地图
   - 🎓 关键参数速知

### 部署实施 (30-60分钟)

4. **[DEPLOYMENT.md](./DEPLOYMENT.md)** - 最详细的部署指南
   - 📦 第1步：创建 Secret 和 RBAC（必需）
   - 🔄 第2步：更新 user-rpc Deployment
   - 🌐 第3步：更新 Envoy Gateway Deployment
   - 🔐 第4步：启用 ETCD 加密（生产推荐）
   - ✔️ 第5步：验证整个系统
   - 📊 监控和日志配置
   - 🛠️ 安全最佳实践
   - 🆘 故障排查指南
   - 💾 灾难恢复流程

### 验证和监控 (20-30分钟)

5. **[VERIFICATION.md](./VERIFICATION.md)** - 完整验证清单
   
   **12个验证部分：**
   
   | 部分 | 用途 | 时间 |
   |-----|------|------|
   | 第1部分 | Secret/RBAC 基础验证 | 2分钟 |
   | 第2部分 | 权限测试（allow/deny） | 3分钟 |
   | 第3部分 | Deployment 配置检查 | 2分钟 |
   | 第4部分 | Redis 连接测试 | 2分钟 |
   | 第5部分 | 应用启动日志 | 3分钟 |
   | 第6部分 | 网络和服务发现 | 3分钟 |
   | 第7部分 | Prometheus 指标 | 3分钟 |
   | 第8部分 | Loki 日志聚合 | 2分钟 |
   | 第9部分 | ETCD 加密验证 | 5分钟 |
   | 第10部分 | JWT 功能测试 | 10分钟 |
   | 第11部分 | 故障排查诊断 | 5分钟 |
   | 第12部分 | 清理和总结 | 2分钟 |

### 高级话题

6. **[ENCRYPTION.md](./ENCRYPTION.md)** - ETCD 加密完整指南
   - 🔑 第1部分：密钥生成
   - 📋 第2部分：配置格式
   - 🔧 第3部分：kube-apiserver 修改
   - ✅第4部分：验证加密
   - ⚠️ 第5部分：关键警告（数据不可恢复）
   - 🔐 第6部分：RBAC 解释
   - 📦 第7部分：Deployment 示例
   - 🍎 第8部分：Minikube 特定说明

7. **[INTEGRATION.md](../api/INTEGRATION.md)** - 代码集成指南
   - 🔗 第1部分：gRPC Unary Interceptor
   - 🔗 第2部分：gRPC Stream Interceptor
   - 👤 第3部分：登录 Handler 实现
   - 🔐 第4部分：受保护 Handler 中的声明提取
   - 🔄 第5部分：令牌刷新端点
   - 🚪 第6部分：登出处理
   - 🛣️ 第7部分：REST Routes 配置
   - 🔎 第8部分：错误处理最佳实践
   - 🧪 第9部分：单元测试示例

---

## 📁 文件结构详解

```
deploy/k8s/
├── secrets/
│   ├── jwt-secret.yaml              ✅ Kubernetes 清单文件
│   │   ├── Secret: jwt-secret       (JWT 秘钥数据)
│   │   ├── ServiceAccount: user-rpc
│   │   ├── ServiceAccount: envoy-gateway
│   │   ├── Role: jwt-secret-reader
│   │   ├── RoleBinding: jwt-secret-reader-user-rpc
│   │   └── RoleBinding: jwt-secret-reader-envoy-gateway
│   │
│   ├── README.md                    📖 快速参考指南（5分钟入门）
│   ├── SUMMARY.md                   📊 系统概览（10分钟了解全貌）
│   ├── QUICK_REFERENCE.md           ⚡ 速查表（查找命令和参数）
│   ├── DEPLOYMENT.md                📦 详细部署指南（60分钟完整部署）
│   ├── ENCRYPTION.md                🔐 ETCD 加密指南（Control Plane 配置）
│   ├── VERIFICATION.md              ✅ 验证清单（部署后验证）
│   └── INDEX.md                     🗺️ 本文件（文档导航）
│
└── envoy/
│   └── envoy.yaml                   ✅ Envoy 网关配置
│       └── 已更新: serviceAccountName: envoy-gateway
│
service/user/
├── user-api.yaml                    ✅ user-api Service
├── user-rpc.yaml                    ✅ user-rpc Deployment（已更新）
│   ├── serviceAccountName: user-rpc (已更新)
│   ├── JWT_SECRET_KEY env var (已更新)
│   └── Redis Cluster configuration
└── ...

app/users/
├── api/
│   └── INTEGRATION.md               📝 REST/gRPC 集成指南
│
└── rpc/
    ├── internal/utils/jwt.go        ✅ JwtManager 实现（已存在）
    ├── internal/config/config.go    ✅ JWT 配置（已存在）
    ├── internal/svc/
    │   └── serviceContext.go        ✅ 依赖注入（已存在）
    └── etc/pb.yaml                  ✅ 运行时配置（已存在）
```

---

## 🎯 按场景查找文档

### 场景 1：我想快速了解这个系统是什么

**推荐阅读顺序：**
1. [SUMMARY.md](./SUMMARY.md) - 项目概览（5分钟）
2. [SUMMARY.md](./SUMMARY.md) 中的架构图和特性说明

**关键信息：**
- JWT 令牌系统 + Redis 存储 + RBAC 权限 + ETCD 加密
- 支持 7 天有效期、30 天可刷新
- Envoy 网关 CSRF 防护

---

### 场景 2：我想立即部署到 Kubernetes

**推荐阅读顺序：**
1. [README.md](./README.md) - 快速参考（2分钟）
2. [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) - 复制粘贴命令（3分钟）
3. 运行部署命令（5分钟）
4. [VERIFICATION.md](./VERIFICATION.md) 第1-7部分 - 验证（10分钟）

**快速命令：**
```bash
# Copy from QUICK_REFERENCE.md "部署命令" 部分
kubectl apply -f deploy/k8s/secrets/jwt-secret.yaml
kubectl apply -f deploy/k8s/service/user/user-rpc.yaml
kubectl apply -f deploy/k8s/envoy/envoy.yaml
```

---

### 场景 3：部署后验证一切正常

**推荐阅读：**
- [VERIFICATION.md](./VERIFICATION.md) - 12部分完整验证清单
- 逐部分执行验证命令

**预计时间：** 30-40分钟

**验证触发点：**
- ✅ Secrets 和 RBAC 已创建
- ✅ Pods 已启动运行
- ✅ 权限验证通过
- ✅ Redis 连接成功

---

### 场景 4：启用 ETCD 加密（生产推荐）

**推荐阅读顺序：**
1. [ENCRYPTION.md](./ENCRYPTION.md) - 完整加密指南
2. 按照 8 个步骤逐一执行
3. [VERIFICATION.md](./VERIFICATION.md) 第9部分 - 加密验证

**需要的权限：**
- Control Plane 节点的 root/sudo 权限
- Kubernetes 集群管理员权限

**预计时间：** 15-20分钟

---

### 场景 5：集成 JWT 到我的应用代码中

**推荐阅读顺序：**
1. [INTEGRATION.md](../api/INTEGRATION.md) 第1-2部分 - gRPC 拦截器
2. 第3-4部分 - 登录和受保护 Handlers
3. 第7-8部分 - REST API 中间件
4. 第9部分 - 单元测试

**需要实现：**
- ✅ gRPC Unary/Stream Interceptors
- ✅ 登录/登出端点
- ✅ JWT Middleware for REST
- ✅ 错误处理

**预计时间：** 2-3 小时

---

### 场景 6：部署后遇到问题

**根据错误类型选择：**

| 错误类型 | 查看文档 |
|---------|--------|
| Pod 无法启动 | [VERIFICATION.md](./VERIFICATION.md) 第11部分 |
| 权限被拒绝 | [VERIFICATION.md](./VERIFICATION.md) 第2部分 + [README.md](./README.md) 故障排查 |
| Redis 连接失败 | [VERIFICATION.md](./VERIFICATION.md) 第4部分 |
| ETCD 加密失败 | [ENCRYPTION.md](./ENCRYPTION.md) 第5-6部分 |
| 配置不清楚 | [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) 配置文件位置 |

---

### 场景 7：定期维护任务

#### 任务：轮换 JWT 秘钥

**阅读：** [DEPLOYMENT.md](./DEPLOYMENT.md) 安全最佳实践 > 密钥轮换
**或：** [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) 密钥轮换步骤

**频率：** 季度（3个月）

#### 任务：轮换 ETCD 加密密钥

**阅读：** [ENCRYPTION.md](./ENCRYPTION.md) 第5部分
**或：** [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) ETCD 加密系统

**频率：** 年度（12个月）

#### 任务：备份密钥

**阅读：** [DEPLOYMENT.md](./DEPLOYMENT.md) 灾难恢复
**或：** [ENCRYPTION.md](./ENCRYPTION.md) 关键警告

**频率：** 立即 + 每次轮换后

---

## 📊 文档深度对比

| 文档 | 深度 | 丰富度 | 代码 | 适合角色 |
|-----|------|--------|------|---------|
| README | 浅 | 概览 | - | PM/初学者 |
| SUMMARY | 浅 | 概览 | - | 决策者 |
| QUICK_REFERENCE | 中 | 速查 | 命令 | DevOps/SRE |
| DEPLOYMENT | 深 | 详细 | 示例 | DevOps/运维 |
| VERIFICATION | 深 | 详细 | 脚本 | QA/DevOps |
| ENCRYPTION | 非常深 | 极详细 | YAML | 安全/运维 |
| INTEGRATION | 非常深 | 代码级 | 完整 | 开发者 |

---

## 🔄 学习路径建议

### 对于 DevOps/SRE

1. SUMMARY.md (5 分钟)
2. DEPLOYMENT.md (30 分钟)
3. VERIFICATION.md (30 分钟)
4. ENCRYPTION.md (20 分钟)
5. 实践部署 (60 分钟)

**总计：** ~3 小时

### 对于应用开发者

1. SUMMARY.md > "集成点" 部分 (5 分钟)
2. INTEGRATION.md (60 分钟)
3. QUICK_REFERENCE.md > "JWT Manager API" (10 分钟)
4. 代码实现 (2-3 小时)
5. 单元测试 (INTEGRATION.md 第9部分)

**总计：** ~4 小时

### 对于安全/合规人员

1. SUMMARY.md (5 分钟)
2. ENCRYPTION.md (30 分钟)
3. DEPLOYMENT.md > 安全最佳实践 (15 分钟)
4. VERIFICATION.md 第9部分 (10 分钟)

**总计：** ~1 小时

### 对于项目经理

1. SUMMARY.md (5 分钟)
2. DEPLOYMENT.md > "部署状态示意图" (5 分钟)
3. DEPLOYMENT.md > "快速部署" (2 分钟)

**总计：** ~15 分钟

---

## 🎓 学习成果预期

### 完成后，您将能够：

✅ 在 Kubernetes 中部署 JWT 认证系统  
✅ 配置 RBAC 权限控制  
✅ 启用 ETCD 加密保护敏感数据  
✅ 在 Go-zero 应用中集成 JWT  
✅ 实现令牌刷新和撤销  
✅ 诊断和排查常见问题  
✅ 执行密钥轮换和灾难恢复  

---

## 🆘 求助指南

### 第一步：找到相关文档
- 浏览本索引找到相关章节
- 或用 Ctrl+F 搜索关键词

### 第二步：查看文档中的相关部分
- DEPLOYMENT.md 的相关章节
- 或 VERIFICATION.md 的故障排查部分

### 第三步：运行诊断命令
- QUICK_REFERENCE.md 的 "故障排查" 部分
- 或 VERIFICATION.md 的 "故障排查" 部分

### 第四步：检查日志
```bash
kubectl logs -n juwan -l app=user-rpc -f
kubectl logs -n juwan -l app=envoy-gateway -f
```

### 第五步：查看详细文档
如果上述步骤未能解决，查看对应的详细文档：
- 配置问题 → DEPLOYMENT.md
- 权限问题 → VERIFICATION.md 第2/11部分
- 集成问题 → INTEGRATION.md
- 加密问题 → ENCRYPTION.md

---

## 📞 文档反馈

如果您发现：
- ❌ 文档不清楚
- ❌ 命令不工作
- ❌ 信息缺失或过时
- ❌ 错别字或格式问题

请在相应的 `.md` 文件中标记，或提交更新建议。

---

## 📌 关键概念快速链接

| 概念 | 详见 |
|-----|------|
| JWT 令牌生命周期 | SUMMARY.md "关键特性" |
| Redis 双键结构 | SUMMARY.md "关键特性" |
| RBAC 权限隔离 | SUMMARY.md "关键特性" |
| CSRF 防护 | SUMMARY.md "关键特性" |
| ETCD 加密 | ENCRYPTION.md |
| 错误处理 | INTEGRATION.md 第8部分 |
| 密钥轮换 | DEPLOYMENT.md "安全最佳实践" |
| 灾难恢复 | DEPLOYMENT.md "灾难恢复" |

---

## ✨ 文档特性

✅ **模块化** - 每个文档独立，但相互链接  
✅ **分层** - 从快速概览到深度细节  
✅ **实践导向** - 包含实际命令和代码示例  
✅ **完整性** - 覆盖部署、验证、维护、故障排查  
✅ **易查找** - 目录、索引、速查表  

---

**开始阅读：** 👉 [SUMMARY.md](./SUMMARY.md)

或根据您的角色选择：

| 角色 | 开始文档 | 预计时间 |
|-----|--------|--------|
| DevOps/运维 | [DEPLOYMENT.md](./DEPLOYMENT.md) | 1-2 小时 |
| 应用开发 | [INTEGRATION.md](../api/INTEGRATION.md) | 2-3 小时 |
| 安全审查 | [ENCRYPTION.md](./ENCRYPTION.md) | 30 分钟 |
| 项目经理 | [SUMMARY.md](./SUMMARY.md) | 15 分钟 |
| 新手 | [README.md](./README.md) → [SUMMARY.md](./SUMMARY.md) | 15-20 分钟 |
