From 63a7978d50dc3a2f2deb89036ac72fa91ff145dc Mon Sep 17 00:00:00 2001 From: Yvan <8574526@qq,com> Date: Fri, 4 Sep 2026 17:06:50 +0800 Subject: [PATCH] jenkins --- deploy/DEPLOYMENT.md | 2 +- deploy/Jenkinsfile | 3 ++- deploy/README.md | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/deploy/DEPLOYMENT.md b/deploy/DEPLOYMENT.md index 7cfa164..97cdbcf 100644 --- a/deploy/DEPLOYMENT.md +++ b/deploy/DEPLOYMENT.md @@ -160,7 +160,7 @@ gitlabBranch(集成/推送触发) 1. 服务启动时数据库未就绪,首页显示"前往初始化"。 2. 走完 `/init/initdb` 向导:建库建表 + 写入种子数据(默认账号 admin)。 3. 向导最后一步把数据库连接**写回**节点目录中的 `/data/conf/config.yaml`,配置不会随 Pod 重建消失。 -4. 初始化期间建议先把后端缩容到 1 个副本:`kubectl -n -dev scale deployment/-backend --replicas=1`。初始化完成后再恢复副本数并滚动重启:`kubectl -n -dev scale deployment/-backend --replicas=3`,然后 `kubectl -n -dev rollout status deployment/-backend`。后续手工改配置也需要执行滚动重启。 +4. 当前 Jenkins 默认将前后端都部署为 1 个副本,适配单节点和 hostPath 存储。初始化完成后如需扩容,必须先迁移到真正的共享存储,再调整 Jenkinsfile 中的 `KRA_REPLICAS` 并重新部署;后续手工改配置也需要执行滚动重启。 > `-config-template` Secret 只负责首次创建配置文件。初始化后,运行时配置以 hostPath 中的 `/data/conf/config.yaml` 为准;更新 Secret 或 Jenkins JWT 凭据不会覆盖已有配置,避免覆盖初始化写入的数据库连接。JWT 后续轮换应通过系统设置完成并滚动重启后端。 diff --git a/deploy/Jenkinsfile b/deploy/Jenkinsfile index 056832c..d69dba4 100644 --- a/deploy/Jenkinsfile +++ b/deploy/Jenkinsfile @@ -14,7 +14,8 @@ pipeline { IMAGE_REPO = 'library/kra' // Harbor 中镜像仓库路径 REGISTRY = '192.168.200.132' BIN_NAME = 'kratos-admin' // Makefile build 的产物名 - KRA_REPLICAS = '3' + // 当前单节点部署固定使用单副本,避免首次初始化和 hostPath 数据共享产生竞争。 + KRA_REPLICAS = '1' KRA_FRONTEND_NODEPORT = '30080' KRA_BACKEND_NODEPORT = '30081' KRA_MYSQL_IMAGE = 'docker.m.daocloud.io/library/mysql:8.4' diff --git a/deploy/README.md b/deploy/README.md index 5115348..fbc09ad 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -57,7 +57,7 @@ Harbor 项目和 Kubernetes 两个环境都会由流水线自动创建 `harbor-r | 密码 | Jenkins 凭据 `kra-mysql-root-password` 的值 | | 库名 | `kra`(与应用名一致) | -提交后框架自动建表、写入种子数据(管理员账号、菜单、casbin)并把连接配置写回节点目录中的 `config.yaml`,Pod 重建后配置不丢失。初始化期间建议暂时保持后端为 1 个副本,完成后再扩容到 `KRA_REPLICAS`,避免多个 Pod 同时执行首次初始化。初始化完成后请执行一次后端滚动重启,让所有副本加载新配置。**不要**通过环境变量注入数据库 DSN:那会让应用跳过初始化向导,导致数据库有表无种子数据、无法登录。 +提交后框架自动建表、写入种子数据(管理员账号、菜单、casbin)并把连接配置写回节点目录中的 `config.yaml`,Pod 重建后配置不丢失。当前单节点部署固定使用 1 个后端副本,避免多个 Pod 同时执行首次初始化。未来如需扩容,必须先迁移到真正的共享存储,再调整 `KRA_REPLICAS` 并滚动重启,让所有副本加载新配置。**不要**通过环境变量注入数据库 DSN:那会让应用跳过初始化向导,导致数据库有表无种子数据、无法登录。 ## 基于 kra 模板接入新项目 @@ -69,7 +69,7 @@ Harbor 项目和 Kubernetes 两个环境都会由流水线自动创建 `harbor-r | `IMAGE_REPO` | Harbor 镜像仓库路径 | `library/kra` | | `REGISTRY` | Harbor 地址 | `192.168.200.132` | | `BIN_NAME` | 后端二进制名,须与 `Makefile` 的 `make build` 产物一致 | `kratos-admin` | -| `KRA_REPLICAS` | 前后端副本数 | `3` | +| `KRA_REPLICAS` | 前后端副本数(当前单节点部署使用 1) | `1` | | `KRA_FRONTEND_NODEPORT` / `KRA_BACKEND_NODEPORT` | NodePort 端口,同一集群多个项目必须错开 | `30080` / `30081` | | `KRA_MYSQL_IMAGE` / `KRA_REDIS_IMAGE` | 中间件镜像 | daocloud mysql:8.4 / redis:7-alpine | | `GO_IMAGE` / `NODE_IMAGE` / `PNPM_VERSION` | 构建镜像与工具版本 | 见文件 |