运维

部署

OpsKeeper 支持 standalone、高可用和 Kubernetes 部署。本页介绍典型拓扑;详细清单在仓库的 deploy/ 下。

Standalone

单主机安装,适合开发或小团队。一个二进制、一个 PostgreSQL、一个 Qdrant 实例。

standalone
# 1. 配置
cp .env.example .env
$EDITOR .env   # 配置 POSTGRES_DSN、QDRANT_URL、OPSKEEPER_PLUGIN_HMAC

# 2. 启动
docker compose up -d

# 3. 校验
opskeeper health
opskeeper incident list --limit 5

高可用

在 TCP 负载均衡器后面跑多个 OpsKeeper 控制平面实例。编排器通过 MySQL GET_LOCK 风格的咨询锁做 per-incident 串行化,因此 leader 是隐式的、不需要选举。

ha topology
              ┌──────────────┐
              │  client / web │
              └──────┬───────┘
                     ▼
            ┌──────────────────┐
            │  TCP 负载均衡器    │
            └──────┬───────────┘
                   ▼
   ┌───────────┬──┴──┬───────────┐
   ▼           ▼     ▼           ▼
opskeeper-1 opskeeper-2 opskeeper-3 opskeeper-N
   └───────────┴──┬──┴───────────┘
                  ▼
        ┌──────────────────────┐
        │  PostgreSQL 主库      │
        │   + 只读副本           │
        └──────────────────────┘
                  ▼
        ┌──────────────────────┐
        │  Qdrant 集群          │
        └──────────────────────┘

标准的 Compose 和 Kubernetes 清单,以及备份/恢复 runbook,见 docs/deployment/ha.md

Kubernetes

Kubernetes Operator 在 2027 Q1 路线图上。当前推荐方式是用 deploy/k8s/ 下的 Helm chart:

kubernetes
helm upgrade --install opskeeper deploy/k8s/charts/opskeeper \
  --namespace opskeeper --create-namespace \
  --set persistence.postgres.size=200Gi \
  --set persistence.qdrant.size=100Gi

边缘安装

opskeeper-edge 二进制在边缘侧(车间、零售 POS、区域 POP)跑 Worker,通过插件 stdio MCP 通道把证据转发到中心控制平面。

edge
# 配置一个新的边缘节点
opskeeper-edge provision \
  --endpoint https://opskeeper.internal.example.com \
  --name factory-floor-7

# 跑边缘守护进程
opskeeper-edge serve --config /etc/opskeeper/edge.yaml

升级

按你的拓扑对应的升级 runbook 走。一般流程:

  1. 把活跃事件排到 verifiedpostmortem
  2. 应用新镜像 / 新二进制。
  3. 逐个滚动升级控制平面实例。
  4. 重放最近的账本事件,确认没有事件丢失。

外部依赖

必需和可选服务的完整表格(含最低版本、不可用时的故障模式)见 docs/deployment/external-deps.md