k01 业务集群部署
承载 juwan-backend 全部业务的 k3s 单节点集群(演示阶段),后续可扩 k02 / k03。
架构层次
| 层 |
组件 |
| 控制面 |
k3s server(已禁用内置 traefik) |
| Operator |
CloudNativePG / Strimzi Kafka / Ot-Container-Kit Redis / MongoDB Community |
| 数据 |
11 CNPG Cluster / 12 RedisReplication / Strimzi KRaft Kafka 1 broker / MongoDBCommunity 单实例 |
| 网络 |
envoy-gateway(NodePort 30080)/ ratelimit + rl-redis |
| 业务 |
snowflake、authz-adapter、12 rpc、14 api、email-mq、frontend |
入口路径
前置条件
- Ubuntu 26.04 LTS,root
- center 已部署,registry.juwan.xhttp.zip 可推可拉
- DNS:
juwan.xhttp.zip A 记录指向 k01(140.82.15.92)
- 仓库已复制到
/root/juwan-backend
首次部署
凭据管理
secrets.sh 生成的全部明文密码写入 secrets/ 目录,chmod 600,.gitignore 已排除。
| Secret |
用途 |
registry-creds |
imagePullSecret(zot) |
jwt-secret |
user-rpc 签发 / 校验 JWT |
admin-bootstrap |
user-rpc 启动时插入 admin 账号 |
email-smtp |
email-mq 发邮件 |
objectstory-s3 |
objectstory-rpc 接 garage |
chat-wt-tls |
chat-api WT 自签证书(来自 deploy/dev/certs) |
<domain>-redis |
12 个 RedisReplication 的 password |
chat-mongodb-app-user-password |
MongoDB SCRAM 密码 |
<cluster>-app |
CNPG 自动生成的 PG 凭据 |
已知限制
- snowflake 使用 Deployment + WorkerId=0。扩到多副本前需让 snowflake 业务代码支持从 env 读 WorkerId。
- chat-api UDP 8443 走 hostPort,扩 k02/k03 时新 node 需开放 UDP 8443,DNS 也要做轮询或 LB。
- email-api 复用 user-redis 实例(验证码 key 与 user-rpc 共享读写),跟 dev 行为一致。
- HPA 暂不部署。加副本前把
replicas: 1 改大或加 HPA。
加节点(k02 / k03)
与 center 协同
| 事项 |
哪一边 |
juwan.xhttp.zip LE 证书 |
center Caddy 自动签 |
| WebTransport 终结 |
center Caddy(PR 7669 fork) |
| WebTransport 上游 |
k01 chat-api UDP 8443(hostPort) |
| envoy-gateway 上游 |
k01 NodePort 30080 |
| 镜像拉取 |
k01 containerd → registry.juwan.xhttp.zip |
| S3 后端 |
k01 objectstory-rpc → s3.juwan.xhttp.zip → center Garage |
| CD 触发 |
gitea Actions runner(在 center) → kubectl 远程操作 k01 |