Skip to content

feat(deploy): 新增 k3s/k8s Helm Chart 部署方案#1154

Open
acllm wants to merge 2 commits into
sansan0:masterfrom
acllm:feat/helm-chart
Open

feat(deploy): 新增 k3s/k8s Helm Chart 部署方案#1154
acllm wants to merge 2 commits into
sansan0:masterfrom
acllm:feat/helm-chart

Conversation

@acllm

@acllm acllm commented May 31, 2026

Copy link
Copy Markdown

概述

为 TrendRadar 新增 k3s/k8s Helm Chart 部署方案,与现有 Docker 部署方案并行,方便已在 k3s/k8s 环境的用户一键部署。

设计原则

  • 零侵入:不修改项目任何已有文件,全部新增于 deploy/helm/trendradar/
  • 向前兼容:复用 Docker Hub 公开镜像,利用项目已有的环境变量覆盖机制,与 Docker 部署行为完全一致
  • 运维极简:所有参数通过 values.yaml 暴露,一条 helm upgrade --set 即可调参

架构决策

采用 Deployment + supercronic 而非 CronJob,理由:

  • 无需拆分 web server 为独立 Deployment
  • 容器行为与 Docker 完全一致,社区后续更新自动兼容
  • 单个 Deployment 管理主服务,运维更简单

新增文件 (16 个)

deploy/helm/trendradar/
├── Chart.yaml                    # Chart 元数据
├── values.yaml                   # 运维调参核心入口
├── .helmignore
├── templates/
│   ├── _helpers.tpl              # 模板辅助函数
│   ├── deployment.yaml           # 主服务 (supercronic + web server)
│   ├── deployment-mcp.yaml       # MCP 服务 (条件渲染,默认关闭)
│   ├── service.yaml              # Web Server Service
│   ├── service-mcp.yaml          # MCP Service (条件渲染)
│   ├── ingress.yaml              # Ingress (条件渲染,默认关闭)
│   ├── pvc.yaml                  # PVC (条件渲染)
│   ├── secret.yaml               # 敏感配置 (API keys, tokens)
│   ├── configmap.yaml            # 非敏感环境变量
│   ├── poddisruptionbudget.yaml  # PDB (条件渲染)
│   ├── NOTES.txt                 # 安装后提示
│   └── tests/test-connection.yaml # Helm test hook
└── files/.gitkeep

快速开始

# 1. 准备配置文件到 PVC(首次)
kubectl run config-init --image=busybox -- sleep 3600
kubectl cp config/. trendradar-config-init:/data/config/
kubectl delete pod config-init

# 2. 安装
helm install trendradar deploy/helm/trendradar -n trendradar --create-namespace

# 3. 添加通知/AI 配置
helm upgrade trendradar deploy/helm/trendradar -n trendradar \
  --set notifications.feishu.webhookUrl=https://open.feishu.cn/open-apis/bot/v2/hook/xxx \
  --set ai.analysisEnabled=true \
  --set ai.apiKey=sk-xxx \
  --set ai.model=deepseek/deepseek-v4-flash

# 4. 开启 MCP 服务
helm upgrade trendradar deploy/helm/trendradar -n trendradar --set mcp.enabled=true

# 5. 开启 Ingress
helm upgrade trendradar deploy/helm/trendradar -n trendradar \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host=trendradar.example.com

冒烟测试

已在 k3s (v1.33.5) 单节点集群上完成以下验证:

检查项 结果
helm install 最小配置安装
PVC 自动创建绑定 (local-path)
主服务运行 + supercronic cron
首次立即执行爬取 11 平台
Web Server 响应
helm test 连通性检查
helm upgrade 无损升级
既有项目文件零修改

🤖 Generated with [Aiden x Claude Code]

Co-Authored-By: Aiden

Copilot AI review requested due to automatic review settings May 31, 2026 16:04
acllm added 2 commits June 1, 2026 11:58
- 新增 deploy/helm/trendradar/ 完整 Helm Chart
- 复用 Docker 镜像 (wantcat/trendradar, wantcat/trendradar-mcp),零侵入现有代码
- Deployment + supercronic 模式,保持与 Docker 部署行为一致
- MCP 服务和 Ingress 均为条件渲染,默认关闭
- 支持 hostPath (单节点 k3s) 和 PVC (多节点/生产) 两种存储模式
- 所有参数通过 values.yaml 暴露,利用项目已有的环境变量覆盖机制
- Secret 管理敏感配置 (API keys, tokens),ConfigMap 管理非敏感环境变量
- 包含 PodDisruptionBudget、Helm test hook、安装提示等运维友好特性

🤖 Generated with [Aiden x Claude Code]

Co-Authored-By: Aiden
- 新增 schedule.enabled / schedule.preset / reportMode 参数
- ConfigMap 条件渲染 SCHEDULE_ENABLED / SCHEDULE_PRESET / REPORT_MODE
- 留空时使用 config.yaml 默认值,零侵入

🤖 Generated with [Aiden x Claude Code]

Co-Authored-By: Aiden
@acllm acllm force-pushed the feat/helm-chart branch from 48db78e to 17c4102 Compare June 1, 2026 03:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant