DEPLOYMENT

SACTL 部署文档

SACTL Gateway 支持 4 种部署方式: Docker Compose 单机自托管、Managed Cloud 托管、Kubernetes Helm 生产部署、Cloudflare Workers 边缘代理。下面先给一张对比决策表,然后是每种方式的完整步骤。给 IT / SRE 团队的私有部署指南,不写营销话术。

4 种部署方式对比

按团队规模、运维能力、合规要求选。一句话: 个人/小团队走 Managed,中大团队走 K8s Helm,有特殊隔离要求走 Self-Hosted,海外项目方走 Edge。

对比维度 Self-Hosted (Compose) Managed Cloud Kubernetes (Helm) Cloudflare Edge
典型场景 PoC / 内部测试 / 单租户私有 中小团队不想运维 中大型生产、多 AZ HA 海外项目方、200+ 国家加速
上线时间 30 分钟 10 分钟 ~1 小时 45 分钟
运维负担 自己扛全栈 SACTL 扛 K8s 运维 + 外置中间件 Cloudflare 平台 + 自建后端
SLA 自定 99.5% (Managed 标准) 自定 (取决于集群) Cloudflare SLA
数据合规 完全自主 SACTL 合规栈 完全自主 边缘代理 + 自建后端
横向扩容 手动 (单机) 透明 HPA 自动 (3 → 30) 自动 (Workers 全球)
成本结构 1 台服务器 + 上游 token 按 token + 月度服务费 K8s + RDS/ES/Vault + 上游 Workers 计费 + 后端
升级方式 docker compose pull && up -d SACTL 自动滚动 helm upgrade wrangler deploy

Self-Hosted (Docker Compose)

适合: PoC、内部测试、单租户私有部署、开发环境。一台 Linux 服务器 (4 vCPU / 8GB RAM 起) 跑全栈。

一键起

git clone https://github.com/sactl/sactl-api.git
cd sactl-api

# 复制 env 模板,填上游 key + OAuth + SMTP
cp .env.example .env
vim .env

docker compose up -d

组件清单

首次初始化

make init  # 做 4 件事:
  # 1. vault operator init + unseal (5 keys, threshold 3)
  # 2. 运行 goose migrate
  # 3. 创建 default tenant + admin user
  # 4. 生成第一条 Virtual Key,打印一次 (sk-xa-prod-***)
VK 只显示一次 Virtual Key 明文只在创建时显示一次。截走丢了只能重新 rotate。Vault unseal keys 也是同样规则: 5 个 key 按 threshold 3 解封,丢了无法恢复。建议把 unseal keys 拆给 5 个不同的人保管。

升级 / 备份

Managed Cloud

适合: 中小团队、不想运维基础设施、希望按月结算的客户。SACTL 官方托管全栈 (PostgreSQL、Redis、Vault、MinIO、监控告警),你只对接 API。

开通流程

  1. Telegram 客服,提供租户名 + 联系人 + 月度预算上限。
  2. 客服 5 分钟内开通租户,发回 admin 后台地址 + 初始 sk-xa-* Virtual Key。
  3. 登录后台,创建额外 VK、配置月预算上限、IP 白名单、allowed_models。
  4. 客户端把 base_url 指向 https://api.sactl.ai 即可。

跟 Self-Hosted 比的差异

具体方案聊 Telegram,价格按用量定。

Kubernetes (Helm)

适合: 中大型客户、需要多 AZ 高可用、希望复用现有 RDS / ElastiCache / Vault 中间件、需要 HPA 自动扩缩容。

values.prod.yaml 片段

gatewaySidecar:
  replicas: 6
  resources:
    requests: {cpu: "500m", memory: "512Mi"}
    limits: {cpu: "2", memory: "2Gi"}
  hpa:
    enabled: true
    minReplicas: 3
    maxReplicas: 30
    targetCPUUtilizationPercentage: 60

postgres:
  external: true
  dsn: "postgres://sactl:***@rds.internal:5432/sactl?sslmode=require"

redis:
  external: true
  addr: "elasticache.internal:6379"

minio:
  external: true
  endpoint: "s3.amazonaws.com"  # 或直接用 AWS S3

vault:
  external: true
  addr: "https://vault.internal:8200"
  approle: {role_id: "...", secret_id: "..."}

安装 / 升级

# 添加 repo
helm repo add sactl https://charts.sactl.ai
helm repo update

# 首次安装
helm install sactl sactl/sactl-gateway \
  -f values.prod.yaml \
  -n sactl --create-namespace

# 升级到指定版本
helm upgrade sactl sactl/sactl-gateway \
  -f values.prod.yaml --version=N

# 回滚
helm rollback sactl PREVIOUS

外置托管组件

HPA 调优 gateway-sidecar 是热路径, p99 SLO 2ms, CPU 是主要瓶颈。targetCPU 60% 在大多数负载下表现最好。如果 burst 比较激进(比如客户端突然推 100x QPS), 把 minReplicas 提到 6 以减少冷启动延迟。

Cloudflare Workers 边缘代理

适合: 海外项目方、用户分布在 200+ 国家、对国际加速敏感。把认证、限流、上游路由推到 Cloudflare 边缘,减少跨地域延迟。

目录

仓库子目录 deploy/edge-proxy/cloudflare-workers/,包含 Worker 代码、wrangler.toml 模板、KV namespace 定义、CF Rate Limiting Rules 配置。

能力

部署

cd deploy/edge-proxy/cloudflare-workers
wrangler login

# 改 wrangler.toml: account_id / kv_namespaces.id / routes
vim wrangler.toml

# 灌 secrets
wrangler secret put SACTL_UPSTREAM_URL
wrangler secret put SACTL_VAULT_TOKEN

# 部署
wrangler deploy

# 灰度: 先切 5%,观察 24h
# CF Dashboard → Workers Routes → 设置流量百分比
跟自建后端怎么配合 边缘只做轻逻辑 (认证 prefix 校验、Rate Limit、就近路由)。重逻辑 (Vault 解密、HMAC VK 校验、计费预扣、Schema 验证、审计) 仍在自建 gateway-sidecar 跑。Workers 是"前置过滤层", 不是替代品 — 这样边缘加速 + 自建强一致 都拿到。

选好方式了?Telegram 帮你跑一次

不确定走 Self-Hosted 还是 Managed?加 Telegram 客服,我们给你 30 分钟评估 + 方案建议。免费。

Telegram 联系 看 SACTL 接入文档