refactor(k01): flatten directory layout and split deployment into five scripts
build-and-push-harbor / docker-build-push (push) Waiting to run

This commit is contained in:
zetaloop
2026-05-06 02:37:25 +08:00
parent 8ba8c7ca20
commit c575b53843
31 changed files with 95 additions and 57 deletions
+10 -21
View File
@@ -2,7 +2,7 @@
该目录是 juwan-backend 所有 k3s 节点的初始化配置。公网入口由 center 的 Caddy 接管——`/wt/*` 走 UDP 直达 chat-api,其余路径反代到 envoy-gateway NodePort 30080。
第一台机器按以下步骤初始化为 k3s server;后续加入的 k02、k03 只运行 `install-k3s.sh agent`,其他步骤k8s Secret、CR、业务 yaml在 server 上 apply 一次即可。
第一台机器按以下步骤初始化为 k3s server;后续加入的 k02、k03 只运行 `install.sh agent`,其他步骤在 server 上执行一次即可。
## 前置条件
@@ -12,29 +12,18 @@
- `/root/registry-password` 文件存放 zot admin 密码(`chmod 600`
- `.env` 已按 `.env.example` 填好(zot admin 密码、Brevo SMTP、Garage S3 凭据)
如果还没 `.env`:先 `cp .env.example .env && nano .env`,再跑 `install-k3s.sh`
如果还没 `.env`:先 `cp .env.example .env && nano .env`,再跑 `secrets.sh`
## k3s server 初始化
```bash
cd /root/juwan-backend/deploy/k01
# 装 k3s + Helm + 四个 Operator,并自动调用 secrets.sh 生成全部 k8s Secret
bash install-k3s.sh
# 应用基础设施层(Operator CR
kubectl apply -f 01-infra/postgres.yaml
kubectl apply -f 01-infra/redis.yaml
kubectl apply -f 01-infra/mongo.yaml
kubectl apply -f 01-infra/kafka.yaml
kubectl apply -f 01-infra/ratelimit.yaml
kubectl apply -f 01-infra/envoy.yaml
# PostgreSQL Cluster 全部 Ready 后写入 schema 与 fixture
bash 01-infra/load-schema.sh
# 启动业务服务
kubectl apply -f 02-service/
bash install.sh # k3s + Helm + 四个 Operator
bash secrets.sh # 生成所有 k8s Secret
bash apply-infra.sh # 数据层 + envoy + ratelimit,分批等待 Ready
bash apply-schema.sh # 向 CNPG 写入 schema 与 fixture
bash apply-services.sh # 启动业务 Deployment
kubectl -n juwan get pods -w
```
@@ -43,7 +32,7 @@ kubectl -n juwan get pods -w
控制面是 k3s server,跑着 CNPG / Strimzi / Redis / MongoDB 四个 Operator 管理有状态服务。
数据层 11 个 per-domain PostgreSQL Cluster + 12 个 RedisReplication + 1 个 MongoDBCommunitychat+ Strimzi KRaft Kafka1 broker
数据层 11 个 per-domain PostgreSQL Cluster + 12 个 RedisReplication + 1 个 MongoDBCommunity + Strimzi KRaft Kafka。
业务层 27 个 Go 服务镜像指向 `registry.juwan.xhttp.zip/juwan/<name>:latest`,每个 domain 一套 rpc + api,外加 snowflake、authz-adapter、email-mq 和 frontend。所有 Deployment 带 `imagePullSecrets: registry-creds`containerd 的 `registries.yaml` 配了 zot admin 凭据。
@@ -55,7 +44,7 @@ chat-api 的 WebTransport 走 UDP 8443 hostPortcenter Caddy 的 PR 7669 fork
`secrets.sh` 生成随机密码写入 `secrets/` 目录,同时 `kubectl create secret``juwan` namespace。需要手动填的是 `.env` 里的 zot admin 密码、Brevo SMTP key 和 Garage S3 access key。
CNPG 每个 Cluster Ready 后自动生成 `<cluster>-app` Secretusername/password/dbname/host/port),业务 pod 的 env 直接从这些 Secret 取值
CNPG 每个 Cluster Ready 后自动生成 `<cluster>-app` Secretusername/password/dbname/host/port),业务 pod 的 env 这些 Secret 提供
## 加节点
@@ -71,7 +60,7 @@ cat /var/lib/rancher/k3s/server/node-token
cd /root/juwan-backend/deploy/k01
echo "<zot-admin-password>" > /root/registry-password && chmod 600 /root/registry-password
K3S_URL=https://<server-ip>:6443 K3S_TOKEN=<token> bash install-k3s.sh agent
K3S_URL=https://<server-ip>:6443 K3S_TOKEN=<token> bash install.sh agent
```
## 日常操作