feat: 完成 issue #8 ⑥ K8s/Helm 部署底座 + 昇腾适配层

This commit is contained in:
2026-08-04 22:04:18 +08:00
parent 691a812fcf
commit e620d4937e
20 changed files with 1013 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
# iAOP Helm Chart(一键部署底座)
对应 PRD 5.6「⑥ 部署底座」与 EPIC #8:
K8s/Helm/ArgoCD 部署底座;GPU/NPU 推理后端可插拔(5090 / 华为昇腾)。
**验收:一套 Chart 部署内核 + 模板;切换后端仅改 values,不动业务代码。**
## 目录结构
```
deploy/k8s/helm/iaop/
├── Chart.yaml Chart 元信息(name/version/appVersion)
├── values.yaml 全部配置点(镜像/后端/副本/资源/存储/灰度/域名)
├── templates/
│ ├── _helpers.tpl 标签/名称辅助模板
│ ├── backend-configmap.yaml 推理后端适配层配置(按 backend 分支渲染)
│ ├── deployment.yaml 推理服务 Deployment(nodeSelector 按后端分流)
│ ├── service.yaml ClusterIP 服务(:8000/v1)
│ ├── ingress.yaml 可选域名入口
│ ├── pvc.yaml 模型权重/日志持久化
│ └── NOTES.txt 部署后提示
└── README.md
```
## 一键部署
```bash
helm repo add iaop http://git.xayunmei.com/iaop/charts # 或本地路径
helm install iaop deploy/k8s/helm/iaop -n iaop --create-namespace
```
## 切换推理后端(仅改 values,业务代码零改动)
```bash
# 默认 gpu(NVIDIA 5090,vLLM/Triton):
helm install iaop deploy/k8s/helm/iaop -n iaop \
--set inference.backend=gpu \
--set inference.device=nvidia-5090
# 切换为华为昇腾 NPU(ACL/CANN/MindIE):
helm upgrade iaop deploy/k8s/helm/iaop -n iaop \
--set inference.backend=npu \
--set inference.device=ascend-910b \
--set inference.cannVersion=8.0
```
切换行为(由模板自动处理):
- `backend-configmap.yaml`:渲染对应后端适配层配置(npu 追加 `cann_version`);
- `deployment.yaml`:nodeSelector 自动切到 `ascend.com/npu=true`(GPU 为 `nvidia.com/gpu=true`),
并在 Pod 标签标注 `iaop.ai/inference-backend`;
- 后端实现差异全部收敛在 `core/inference-backend/` 适配层,业务代码零改动。
## 其他配置点(PRD 5.6)
| 配置点 | values 路径 | 说明 |
| --- | --- | --- |
| 资源配额 | `resources.requests/limits` | CPU/内存配额 |
| 推理后端选择 | `inference.backend` | `gpu` / `npu` |
| 灰度发布策略 | `rollingUpdate` | `maxUnavailable: 0, maxSurge: 1`(滚动) |
| 存储 | `storage.*` | 模型权重持久卷 |
| 域名入口 | `ingress.*` | 可选 Ingress |
## 说明
- Chart 未引入任何外部依赖(dependencies 为空),`helm template` 可离线渲染;
- 推理服务镜像对应 `core/inference-backend/` 适配层容器化(本文档发布配套镜像时更新 `image.tag`)。