Keep 部署选型:从单机 Compose 到 K8s,怎么挑路线
Keep 部署选型从单机 Compose 到 K8s怎么挑路线【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keepKeep 是一个开源 AIOps 告警管理平台把各监控源的告警收进来、去重降噪、跑工作流自动响应还能聚合出事件incident。这篇文章只谈部署读完你能按团队规模在「单机 Docker Compose / Compose Redis / K8s Helm / ECS」四条路线里挑一条跑起来核心就是 Keep 部署这件事怎么选。 先做决定四条路线一张表选型前先把成本摊开看避免先装了再说路线上手成本适用规模维护成本什么时候选单机 Docker Compose5 分钟体验、≤5 人团队低盯住./state目录评估功能、搭内网小环境Compose ARQRedis多 10 分钟中等中工作流/AI 调用多怕阻塞 APIK8s Helm Chart约半小时多副本生产中要管 Ingress 和证书团队正式环境要高可用AWS ECS Fargate1~2 小时中小低平台托管没有集群运维人力、已在 AWS结论先给出来五人以内团队别急着上集群Compose 路线的天花板比你想象的高真正需要 K8s 的触发点通常是多副本和密钥要进 Vault而不是告警量大。⚡ 单机 Compose三条命令到登录页最小可跑配置仓库里直接带了docker-compose.yml拉下来就能起git clone https://gitcode.com/GitHub_Trending/kee/keep cd keep docker compose up -d起完三个服务前端Next.js3000 端口、后端FastAPI8080 端口、WebSocket 推送Soketi6001 端口。浏览器开http://localhost:3000。想顺手把官方监控面板也拉起来加个 profile 就行docker compose --profile grafana up -d默认配置是AUTH_TYPENO_AUTH——没有登录直接进。内网试用没问题暴露到公网之前必须先翻下面这两个开关。必须翻的两个开关认证和数据落盘第一个是认证。仓库里有现成的带认证版本docker-compose-with-auth.yml本质就是改这几个环境变量你自己改docker-compose.yml也一样services: keep-frontend: environment: - AUTH_TYPEDB # …其余项保持默认 keep-backend: environment: - AUTH_TYPEDB - KEEP_JWT_SECRET换成一串强密钥 - KEEP_DEFAULT_PASSWORD换掉默认的 # 默认账号 keep/keep第二个开关是数据。默认DATABASE_CONNECTION_STRINGsqlite:////state/db.sqlite3密钥管理也是SECRET_MANAGER_TYPEFILE存/state——所有数据都落在宿主机./state这一个目录里。单机路线这很省心备份一个目录就够了生产环境建议把连接串换成 Postgres具体变量含义见官方文档 docs/deployment/configuration.mdx。最容易踩的三个坑清了./state等于删库。官方文档给的重装流程第一步就是删这个目录数据、工作流、provider 配置全没操作前想清楚。AI 功能前后端都要配OPENAI_API_KEY。只配了后端前端里 AI 相关按钮照样报没 key。想从别的机器访问 UI 时前端只是皮它调的是浏览器能直连的:8080后端所以后端端口也得到达不是只通 3000 就行。 Helm 上 K8s真正要动的是 Ingress 那几个字段装起来只要三行前提集群里有可用的 Ingress Controller官方最熟 ingress-nginx也支持 HAProxydocs/deployment/kubernetes/installation.mdx 有完整前置说明。helm repo add keephq https://keephq.github.io/helm-charts helm install keep keephq/keep -n keep --create-namespace kubectl -n keep get ingressChart 是官方维护的全家桶版本Postgres 都内置了。装完看 Ingress 的 ADDRESS 拿到访问地址。两个容易翻车的地方一是ingress-nginx 的 snippet 注解。Chart 靠 rewrite 注解把/路由到前端、/v2路由到后端 API4.12 之后不显式放行这类注解装完就是 502/404。装 ingress-nginx 时带上# 安装 ingress-nginx 时需要4.12 两个都要 --set controller.config.allow-snippet-annotationstrue \ --set controller.config.annotations-risk-levelCritical二是没装 Ingress 时别指望 Service 直接暴露。官方给的是 port-forward 三件套本地调试够用kubectl port-forward svc/keep-frontend 3000:3000 -n keep kubectl port-forward svc/keep-backend 8080:8080 -n keep # websocket 服务 svc/keep-websocket 6001:6001 按需再加要上 HTTPS先建 TLS Secret 再 upgrade两条命令解决kubectl create secret tls keep-tls --certtls.crt --keytls.key -n keep helm upgrade keep keephq/keep -n keep \ --set global.ingress.hosts[0].hostkeep.example.com \ --set global.ingress.tls[0].secretNamekeep-tls多副本跑之前还有一件事文件型密钥管理FILE没法跨副本共享SECRET_MANAGER_TYPE要切到K8S或VAULT数据库用 Chart 自带的 Postgres 而不是 SQLite。 ECS 路线什么时候该选 Fargate 而不是集群判断标准很简单团队里没有常驻的 K8s 运维人力、而且已经深度用 AWS。Keep 在 ECS 上是三个 Fargate 任务定义——keep-frontend3000 端口、keep-backend8080 端口、keep-websocket6001 端口各 1 vCPU / 2 GB 起步环境变量照抄 Compose 那套凭据建议塞进 Parameter Store 或 Secrets Manager 而不是明文。缺点也得说清没有原生副本弹性扩容就是手动加任务而且三个任务的环境变量要三份同步维护比 Helm 多一层心智负担。 为什么状态能装进一个卷两个设计取舍看docker-compose.common.yml的默认值能读出作者的思路DATABASE_CONNECTION_STRING默认 SQLite、SECRET_MANAGER_TYPE默认 FILE、目录都指向/state。这是刻意的零依赖启动取舍——不装任何外部组件一条docker compose up就有可用系统代价是单写者模型单机路线爽多副本就得分出去外置数据库 共享密钥存储。理解了这一点你在任何路线上调数据相关配置就只是把默认的本地实现换成共享实现不是无底洞。第二个取舍是实时推送独立成服务。后端 FastAPI 不持有任何长连接告警的实时通知走独立部署的 SoketiPusher 协议WebSocket 服务前端用PUSHER_HOST/PUSHER_PORT指过去。好处是后端可以随便扩缩、甚至多副本长连接压力不落在 API worker 上不需要实时通知的场景直接PUSHER_DISABLEDtrue把这个服务砍掉少一个要维护的容器。 环境跑起来之后先做这一件事别急着配一堆 provider先让一条真实告警进来走通收告警 → 工作流 → 通知整条链路仓库 examples/workflows/ 里有 100 多个现成工作流挑个最贴近你场景的比如 Slack 通知或 Jira 建单改成自己的比看十页文档都直观。后面要把 provider、mapping、工作流当代码管起来再看 provision 相关文档即可。【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考