部署总览(双形态)
同一套服务代码、同一套契约、同一个镜像矩阵—— 单机一体化与云化 Helm 是同一平台的两种装配,不是两个产品。
双形态对照
| 维度 | 单机一体化(all-in-one) | 云化(Helm + K8s) |
|---|---|---|
| 进程 | 1 个(svc-all-in-one) | 9 个部署单元 + migrator Job |
| 总线 | MemBus(进程内) | NATS JetStream(ORCH_EVENTS) |
| 对象存储 | local(data_dir)/ mem | RustFS / S3 |
| 外部依赖 | 仅 PostgreSQL(+PostGIS) | PG 集群、NATS、对象存储、K8s、(Istio ambient) |
| 配置 | AIO__* 一把梭 + 服务级 env | ConfigMap TOML + Secret |
| 数据库自举 | create_databases=true + auto_migrate=true | migrator Job 前置(helm pre-hook) |
| 发布 | 停进程换二进制(fail-fast 语义) | Argo Rollouts 金丝雀 + 自动回退 |
| 伸缩 | 不支持(单副本设计) | HPA(prod 已配 gateway/iam/metadata) |
| 适合 | 开发/演示/小站点/边缘 | 生产 |
形态选择决策树
text
需要高可用/多副本/金丝雀?
├─ 否 → 有 Docker?
│ ├─ 是 → standalone Docker Compose
│ └─ 否 → 源码运行 svc-all-in-one(本地 PG)
└─ 是 → Helm 云化
├─ staging:values-staging.yaml(NATS + Istio + Rollouts)
└─ prod:values-prod.yaml(副本/HPA 扩大 + keda)云化环境分层
| 环境 | values | 特征 |
|---|---|---|
| dev | values.yaml | mem 总线、istio 关、rollouts 关、operator 关 |
| staging | values-staging.yaml | NATS、istio 开(host 待 overlay)、rollouts 金丝雀、operator 开、metadata authz=iam |
| prod | values-prod.yaml | gateway 6 副本 HPA 6-20 / iam·metadata 3 副本带 HPA / orch·met 3 / gis 2 / indexer 1 / keda 开 |
| gitops | values-gitops.yaml | CI 自动写的镜像钉版(当前 sha-cb746c1d49aa) |
镜像矩阵
10 个镜像(CI release.yml matrix):svc-gateway/iam/metadata/orchestrator/ metering/gis/gis-tantivy-indexer/all-in-one/operator + migrator。 仓库 ghcr.io/echemoo/rustsvc/svc-<name>:<tag>;tag 由 GitOps 钉 sha-<12位>。
前置条件清单(云化)
按 deploy/README.md:K8s(N-1,PodSecurity restricted)、Istio ambient、 ArgoCD、Argo Rollouts、(KEDA,prod)、VictoriaMetrics 单栈 + Grafana + Loki/Tempo、cert-manager/sealed-secrets、镜像仓库(当前 GHCR)。 外加:PG 集群(Patroni)、NATS(3 节点 JetStream)、RustFS。 这些基础设施本身不在本仓库 chart 内——本 chart 只部署 rustsvc 工作负载。