feat(ldap): Active Directory 双目录支持与 Docker 构建优化

- 新增 ldap_ad.go,支持 AD 密码编码、字段映射与目录类型判断
- 重构 ldap/ldap_users/ldap_ou,兼容 OpenLDAP 与 AD 登录、导入、OU 浏览
- 前端系统设置增加目录类型选择与 AD 配置项
- Dockerfile 按 TARGETARCH 单架构编译 Agent,限制 Node 内存防 OOM
- run.sh 新增 docker fast/upgrade,README 补充 LDAP/AD 与常见问题
This commit is contained in:
Logan committed 2026-07-02 22:45:49 +08:00
1 parent 0f0f2770e1
commit 78c27037e3
12 files changed
+613 -226

No files matched your search

+59 -8
View File
@@ -19,6 +19,7 @@
- WebSocket (Gorilla) / PTY 终端 (creack/pty)
- 自研轻量 Kubernetes HTTP 客户端(channel.k8s.io WebSocket 协议)
- go:embed 嵌入前端静态资源(单二进制 / 单容器部署)
- **LDAP / Active Directory** 统一身份认证(登录、用户列表、批量导入)
- Agent CLI 引擎(`pkg/agentcli/`):ReAct + Evolver + 双协议 LLM(OpenAI / Anthropic)
### Agent
@@ -63,15 +64,31 @@ curl http://localhost:8080/version # 查看运行版本
### Docker Compose 部署
```bash
./run.sh docker up # 构建并启动 (MySQL + Redis + AIOps)
./run.sh docker up v1.5.0 # 指定版本构建
./run.sh docker push v1.5.0 # 构建并推送到 lghost/aiops
# 日常推荐:镜像已存在时,跳过构建直接启动(低负载)
./run.sh docker fast
# 访问(前后端同一端口)
# http://localhost:8080
# http://localhost:8080/version
# 代码有变更:增量构建 + 启动
./run.sh docker up
./run.sh docker up v1.5.0 # 指定版本构建
# 仅升级应用容器,不重建 MySQL/Redis
./run.sh docker upgrade
# 依赖或缓存异常时:无缓存全量重建
./run.sh docker up fresh
./run.sh docker push v1.5.0 # 构建并推送到 lghost/aiops
./run.sh docker down # 停止容器
./run.sh docker logs # 查看日志
```
访问地址(前后端同一端口):
- http://localhost:8080
- http://localhost:8080/version(健康检查推荐,无 DB 依赖)
> **小机器提示(2 核 / 8GB)**:`docker up` 会触发前端 `npm run build`(临时 `node` 进程 CPU 可达 100%+),属构建期正常现象;AIOps 运行时仅为 Go 二进制,稳态 CPU 通常 < 1%。日常用 `docker fast` 可避免重复编译。
### Kubernetes 部署
```bash
@@ -112,6 +129,30 @@ curl http://localhost:8080/version # 查看运行版本
| ops01 | 123456 | 运维 |
| dev01 | 123456 | 开发 |
> 生产环境请修改默认密码与 `JWT_SECRET`。
## LDAP / Active Directory
系统设置 → LDAP 支持 **OpenLDAP** 与 **Active Directory** 双目录:
| 能力 | OpenLDAP | Active Directory |
|------|----------|------------------|
| 连接 / 登录认证 | ✅ | ✅ |
| 用户列表 / 批量导入 | ✅ | ✅ |
| OU / 容器浏览 | ✅ | ✅(含 `CN=Users` 等容器) |
| 目录内创建用户 | ✅ | ✅(需 LDAPS + 服务账号权限) |
**AD 推荐配置示例**:
| 配置项 | 推荐值 |
|--------|--------|
| 目录类型 | Active Directory |
| Base DN | `DC=company,DC=com` |
| Admin DN | `CN=svc-aiops,CN=Users,DC=company,DC=com` |
| 搜索过滤器 | 留空(使用内置兼容过滤器)或 `(sAMAccountName=%s)` |
| 用户名字段 | `sAMAccountName` |
| LDAPS | 创建 AD 用户时必须启用 |
## 项目结构
```
@@ -144,7 +185,7 @@ aiops/
├── deploy/kubernetes/ # K8s 部署清单 (devops 命名空间)
├── docker-compose.yml # MySQL + Redis + AIOps embed(3 容器)
├── docker-compose.k8s.yml # 单应用容器(连接外部 DB)
├── Dockerfile # embed 单容器镜像(推荐)
├── Dockerfile # embed 单容器镜像(推荐)
├── run.sh # 统一入口脚本
└── aiops # 独立二进制产物(gitignore,项目根目录)
```
@@ -161,7 +202,7 @@ aiops/
| 自动化运维 | 定时任务、脚本库、**远程执行**(Go-native SSH,执行/上传) |
| AIOps 智能 | AI 助手、告警分析、容量预测、**Agent CLI**(ReAct + WebSocket 实时回传 + 终端审计回放) |
| 资源申请 | 云服务器/应用部署申请审批 |
| 系统管理 | 用户/角色、操作审计、终端会话审计、凭证配置(7 种类型)、大模型设置(OpenAI + Anthropic 双协议) |
| 系统管理 | 用户/角色、**LDAP / AD 统一认证**、操作审计、终端会话审计、凭证配置(7 种类型)、大模型设置(OpenAI + Anthropic 双协议) |
### UI 与体验
@@ -169,6 +210,16 @@ aiops/
- **7 套主题**:跟随系统、深海蓝、明亮白 + One Dark / Dracula / Tokyo Night / Catppuccin
- **国际化**:i18next 框架,已覆盖 dashboard / server / alert / approval / audit / deploy / k8s 等模块
## 常见问题
| 现象 | 原因 | 处理 |
|------|------|------|
| `docker up` 时 `node` CPU 100%+ | Docker 构建前端(`npm run build`) | 正常,构建结束后自动消失;日常用 `docker fast` |
| 构建后 load 仍偏高 | 宿主机其他服务(网关/监控 Agent) | `top` 排查非 AIOps 进程 |
| MySQL 内存占用高 | 默认 buffer pool 较大 | Compose 已限制 `innodb-buffer-pool-size=256M` |
| Mac 二进制无法在 Linux 运行 | 平台不匹配 | 在 Linux 构建或使用 Docker 镜像 |
| LDAP 登录失败 | 过滤器/字段映射与目录类型不匹配 | 系统设置选择正确目录类型并配置 `user_mapping` |
## 文档
详细开发文档见 [docs/README.md](./docs/README.md)。