diff --git a/docs/GBS底座服务手册.md b/docs/gbs/GBS底座服务手册.md
similarity index 100%
rename from docs/GBS底座服务手册.md
rename to docs/gbs/GBS底座服务手册.md
diff --git a/docs/GBS底座服务手册v2.md b/docs/gbs/GBS底座服务手册v2.md
similarity index 100%
rename from docs/GBS底座服务手册v2.md
rename to docs/gbs/GBS底座服务手册v2.md
diff --git a/docs/gbs/GBS底座部署.md b/docs/gbs/GBS底座部署.md
new file mode 100644
index 0000000..f844d9a
--- /dev/null
+++ b/docs/gbs/GBS底座部署.md
@@ -0,0 +1,740 @@
+# GBS底座部署
+
+## 安装前准备
+
+每台服务器都需要进行此操作
+
+服务器规划 最低三台服务
+
+| 主机名/域名 | ip | |
+| --- | --- | --- |
+| k8s-master | x.x.x.x | 应用服务器Master(安装nginx,数据库,mq,redis等
安装 docker,安装 Kubernetes) |
+| k8s-work01 | x.x.x.x | 应用服务器work(安装 Kubernetes
,安装 docker) |
+| k8s-work02 | x.x.x.x | 应用服务器work(安装 Kubernetes
,安装 docker) |
+
+基础准备:
+
+1、yum源变更(每台服务器都需要变更)
+
+centos
+
+[https://blog.csdn.net/m0\_74007708/article/details/141276668](https://blog.csdn.net/m0_74007708/article/details/141276668)
+
+rockylinux
+
+[https://developer.aliyun.com/article/1074889](https://developer.aliyun.com/article/1074889)
+
+2、服务器主从节点配置
+
+每台服务器的/etc/hosts文件下都写入
+
+x.x.x.x k8s-master x.x.x.x k8s-work01 x.x.x.x k8s-work02 x.x.x.x k8s-work03
+
+
+
+```shell
+cd /
+cat /config/hosts | while read hostdata;do echo ${hostdata} >> /etc/hosts;done
+```
+
+3、每台服务器都进行同步时间
+
+```shell
+cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
+yum install ntpdate -y
+crontab -e
+*/5 * * * * ntpdate -u time.pool.aliyun.com
+```
+```shell
+# 安装chrony
+sudo dnf install -y chrony
+sudo vi /etc/chrony.conf
+# 注释原有默认的服务器地址,添加以下阿里云 NTP 服务器地址
+server ntp1.aliyun.com iburst
+server ntp2.aliyun.com iburst
+server ntp3.aliyun.com iburst
+#启动并设置开机自启
+sudo systemctl start chronyd
+sudo systemctl enable chronyd
+#立即同步时间
+sudo chronyc makestep
+# 验证
+date
+chronyc sources
+# 查看是否同步(NTP synchronized: yes)
+timedatectl
+# 如果有其他服务需要同步时钟但是其他服务器互通但是其他服务器连不到外网
+# 主服务器 允许x.x.x.0/24网段的服务器向本服务器同步时间
+sudo vi /etc/chrony.conf
+# 添加allow x.x.x.0/24
+# 从服务器 把主服务加入进去
+# 1、先安装chrony 2、编辑chrony.conf
+# 仅同步本地主服务器(替换为实际主服务器IP)
+server 192.168.1.100 iburst
+
+```
+
+4、每台服务器防火墙配置
+
+```shell
+cat /config/hosts | awk '{print $1}' | while read rich_ip; do sudo firewall-cmd --permanent --zone=trusted --add-source=${rich_ip}; firewall-cmd --reload; done
+```
+```shell
+sudo sh -c 'cat /config/hosts | awk "{print \$1}" | while read rich_ip; do
+ firewall-cmd --permanent --zone=trusted --add-source=${rich_ip};
+done;
+firewall-cmd --reload'
+```
+
+```shell
+# 允许 kube-proxy 重定向流量
+sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -j ACCEPT -m comment --comment "kube-proxy redirects"
+
+# 允许 Docker 容器子网之间的流量通信
+sudo firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -j ACCEPT -m comment --comment "docker subnet"
+
+# 设置防火墙伪装IP(打开NAT)
+sudo firewall-cmd --add-masquerade --permanent
+# 添加防火墙端口
+sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
+# 最后重载防火墙使配置生效
+sudo firewall-cmd --reload
+# 验证
+sudo firewall-cmd --list-all --zone=trusted
+```
+
+4、关闭swap分区&selinux
+
+```shell
+sudo swapoff -a
+sudo sed -i 's/.*swap.*/#&/' /etc/fstab
+sudo setenforce 0
+sudo sed -i 's@=enforcing@=disabled@g' /etc/selinux/config
+```
+
+5、加载overlay和br\_netfilter内核模块
+
+```shell
+sudo cat < --hostname-override="
+ExecStart=
+ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_EXTRA_ARGS
+EOF
+
+sudo systemctl daemon-reload
+sudo systemctl enable kubelet
+```
+
+**主节点初始化(不要在工作节点使用)**
+
+```shell
+sudo tee kubeadm-config.yaml <
+ hostname-override: <替换为实际主节点hostname>
+---
+apiVersion: kubeadm.k8s.io/v1beta3
+kind: ClusterConfiguration
+kubernetesVersion: 1.27.6
+imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
+controlPlaneEndpoint: "<替换为实际主节点ip>:6443"
+networking:
+ podSubnet: "10.244.0.0/16"
+ serviceSubnet: "10.96.0.0/12"
+ dnsDomain: "cluster.local"
+apiServer:
+ extraArgs: {}
+controllerManager:
+ extraArgs:
+ bind-address: "0.0.0.0"
+scheduler:
+ extraArgs:
+ bind-address: "0.0.0.0"
+EOF
+```
+
+[请至钉钉文档查看附件《kubeadm-config.yaml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mhyj8glhoxq16bkm6o&type=d&utm_medium=im_card&utm_source=im)
+
+然后配置证书
+
+```plaintext
+mkdir -p $HOME/.kube
+sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
+sudo chown $(id -u):$(id -g) $HOME/.kube/config
+# 验证配置
+kubectl cluster-info
+# 检查 kubelet 状态
+sudo systemctl status kubelet
+
+# 查看 kubelet 日志
+sudo journalctl -u kubelet -n 50 --no-pager
+```
+```shell
+一、优先检查 kubelet 状态(最常见原因)
+kubelet 是节点上的核心组件,若它未运行或异常,控制平面组件(如 kube-apiserver)无法启动。
+查看 kubelet 状态:
+bash
+sudo systemctl status kubelet
+若显示 inactive(未运行),启动并设置开机自启:
+bash
+sudo systemctl enable --now kubelet
+若显示 active (running) 但有错误,查看详细日志:
+bash
+sudo journalctl -xeu kubelet # 重点看 ERROR 级别的日志
+二、常见 kubelet 错误及解决
+1. cgroup 驱动不匹配
+kubelet 与容器运行时(cri-dockerd/Docker)的 cgroup 驱动必须一致,否则会导致启动失败。
+查看 Docker 的 cgroup 驱动:
+bash
+docker info | grep "Cgroup Driver"
+# 输出通常为:Cgroup Driver: systemd
+查看 kubelet 的 cgroup 驱动配置:
+bash
+cat /var/lib/kubelet/config.yaml | grep cgroupDriver
+若不一致(如 Docker 是 systemd,kubelet 是 cgroupfs),修改 kubelet 配置:
+bash
+sudo vi /var/lib/kubelet/config.yaml
+# 将 cgroupDriver: "cgroupfs" 改为 cgroupDriver: "systemd"
+重启 kubelet:
+bash
+sudo systemctl daemon-reload
+sudo systemctl restart kubelet
+2. Swap 未关闭
+Kubernetes 要求禁用 Swap,否则 kubelet 会启动失败。
+临时关闭 Swap:
+bash
+sudo swapoff -a
+永久关闭 Swap(重启生效):
+bash
+sudo sed -i '/swap/s/^/#/' /etc/fstab # 注释 /etc/fstab 中的 Swap 行
+三、检查控制平面容器状态
+若 kubelet 运行正常,需检查控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)的容器是否启动失败。
+列出所有 Kubernetes 相关容器:
+bash
+# 使用 cri-dockerd 的 runtime-endpoint 查看
+crictl --runtime-endpoint unix:///run/cri-dockerd.sock ps -a | grep kube | grep -v pause
+若某个容器状态为 Exited 或 CrashLoopBackOff,记录其 CONTAINER ID。
+查看失败容器的日志(以 kube-apiserver 为例):
+bash
+crictl --runtime-endpoint unix:///run/cri-dockerd.sock logs
+常见错误:
+端口占用:6443(apiserver)、2379(etcd)等端口被占用,需关闭占用进程(如 sudo lsof -i :6443 查找并 kill)。
+镜像拉取失败:检查 imageRepository 配置是否正确(如阿里云镜像是否可用),手动拉取镜像:
+bash
+sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.27.6
+证书错误:删除旧证书重新初始化(谨慎操作,会重置集群):
+bash
+sudo kubeadm reset
+sudo rm -rf /etc/cni/net.d # 清理网络配置
+sudo kubeadm init --config=kubeadm-config.yaml --upload-certs # 重新初始化
+四、其他可能原因
+SELinux 或防火墙限制:
+临时关闭 SELinux:sudo setenforce 0
+开放必要端口(6443、2379、2380、10250 等):
+bash
+sudo firewall-cmd --permanent --add-port=6443/tcp
+sudo firewall-cmd --permanent --add-port=2379-2380/tcp
+sudo firewall-cmd --permanent --add-port=10250/tcp
+sudo firewall-cmd --reload
+kubelet 配置文件错误:若之前修改过 /var/lib/kubelet/config.yaml,可删除后重新生成:
+bash
+sudo rm -f /var/lib/kubelet/config.yaml
+sudo kubeadm reset
+sudo kubeadm init --config=kubeadm-config.yaml --upload-certs
+```
+
+配置集群环境网络插件
+
+```shell
+sudo mkdir -p $HOME/.kube
+sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
+sudo chown $(id -u):$(id -g) $HOME/.kube/config
+# 网络插件安装(Calico v3.26)
+curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
+sudo sed -i -e 's|docker.io/calico/|quay.io/calico/|g' -e 's|path: /var/lib/calico|path: /var/lib/uros/calico|g' calico.yaml
+# 验证安装进度
+kubectl get pods -n kube-system | grep calico-node
+# 看描述
+kubectl describe pod calico-node-《节点》 -n kube-system
+# 如果镜像下载太慢 直接用docker安装
+# sudo docker pull quay.io/calico/node:v3.26.1
+```
+
+集群加入主节点
+
+```shell
+# 如果丢失这个信息了以后 执行这个
+# 生成新的 token(有效期 24 小时)
+kubeadm token create --print-join-command
+# 此次应该要确认 主节点的 6443 端口是否放开。
+#https://blog.csdn.net/weixin_47872288/article/details/120188576
+# 子节点 按刚刚的命令 执行下 子节点注入
+
+# 验证子节点是否注入成功
+kubectl get nodes -o wide
+
+
+# 如果加入不成功( Kubernetes API Server 失败)把主节点admin.conf 改名成 config 复制到从节点的/home/admin/.kube 下重新执行命令。
+
+```
+```shell
+NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
+k8s-master Ready control-plane 2d19h v1.27.6 192.168.198.8 Rocky Linux 8.10 (Green Obsidian) 4.18.0-553.el8_10.x86_64 docker://26.1.3
+k8s-work01 Ready 34m v1.27.6 192.168.198.6 Rocky Linux 8.10 (Green Obsidian) 4.18.0-553.el8_10.x86_64 docker://26.1.3
+k8s-work02 Ready 23m v1.27.6 192.168.198.7 Rocky Linux 8.10 (Green Obsidian) 4.18.0-553.el8_10.x86_64 docker://26.1.3
+```
+
+集群中删除某个节点
+
+```shell
+# 替换 <节点名称> 为实际节点名(如 k8s-work01)
+kubectl cordon <节点名称>
+# 驱逐非 DaemonSet 的 Pod,--ignore-daemonsets 是关键参数
+kubectl drain <节点名称> --ignore-daemonsets
+# 从集群中删除节点
+kubectl delete node <节点名称>
+# 在被删除的节点上重置 kubeadm 配置
+sudo kubeadm reset
+```
+
+ [https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz](https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz)
+
+[请至钉钉文档查看附件《helm-v3.12.3-linux-amd64.tar.gz》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mhym64msa3zc1ny0vn&type=d&utm_medium=im_card&utm_source=im)
+
+安装helm
+
+```shell
+sudo mv linux-amd64/helm /usr/local/bin/helm
+sudo chmod +x /usr/local/bin/helm
+helm version
+# 添加仓库
+helm repo add jjb-prod http://charts.jjbedu.cn:81/prod
+# 更新仓库
+helm repo update
+# 安装dashboard
+```
+
+### 安装dashboard
+
+[请至钉钉文档查看附件《dashboard-value.yaml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi2q49ngbo4puel18u4&type=d&utm_medium=im_card&utm_source=im)
+
+[请至钉钉文档查看附件《metrics-server.yaml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi2lp5hdv7cg3dfeen&type=d&utm_medium=im_card&utm_source=im)
+
+```shell
+# 主节点执行
+kubectl apply -f metrics-server.yaml
+
+
+# 部署dashboard
+helm install kubernetes-dashboard k8s-dashboard/kubernetes-dashboard --version 6.0.6 -f dashboard-value.yaml
+```
+```shell
+# 主节点执行
+kubectl apply -f metrics-server.yaml
+
+# 部署dashboard
+helm install kubernetes-dashboard k8s-dashboard/kubernetes-dashboard --version 6.0.6 -n kube-system -f dashboard-value.yaml
+# 创建用户
+kubectl create clusterrolebinding kube-dashboard-admin-binding \
+ --clusterrole=cluster-admin \
+ --serviceaccount=kube-system:kube-dashboard-admin-sa
+# 生成token
+kubectl create token kube-dashboard-admin-sa -n kube-system --duration=87600h | tee ~/dashboard_log_token
+# 已生成token
+eyJhbGciOiJSUzI1NiIsImtpZCI6IklJcHoySHJTeUw1bmJweGtZdkNYVUJiUkk0VlMwSDBfRnN5Z0ZPWlhHeHcifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoyMDc4NzIwNzM1LCJpYXQiOjE3NjMzNjA3MzUsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJrdWJlLWRhc2hib2FyZC1hZG1pbi1zYSIsInVpZCI6ImQ2MmFjYTllLTY5YTktNGY4Ny1iY2Y5LWE0MGE3ZGJkN2NjMiJ9fSwibmJmIjoxNzYzMzYwNzM1LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06a3ViZS1kYXNoYm9hcmQtYWRtaW4tc2EifQ.hLGSbs_gob8SBkYRQeoY3nBZXsslYmAkxndAt7qMvEkRLVkl8miOuoj5iYbvKsMSzxazP-6H4arCi3k3eR9xLCvmLfte2P0JDCvKr-0FapGevV7uQusKzQTKfIag8CkIs5JN17tsCU5dDAvrwJ6g7hAoPTIccmDcZV6P5AhZrlO0JfXhDBgHyP2n_QFshM-wj_5YwETfJbOnDwEjYEXHviUfGpQQ03LIChKU-vwaG8yrIm7CodnHIE_Bu-9k1Bm2KyDFdVYCpTU_iP2A16zV0590Z9pphSKBbCcxvHCAlkosFE3O-aI9e6SrxieSA02zt-vnoU84li9a6eoLzrbNaA
+```
+
+启动命令
+
+```shell
+ kubectl get svc -n kube-system
+
+```
+
+
+
+访问对应的这个地址
+
+### 安装mysql
+
+```shell
+版本8+
+使用docker 安装 步骤略
+```
+```mysql
+CREATE DATABASE `nacos_config` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `basic-application` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-application` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-application-ota` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-attachment` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-auth` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-base` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-component-design` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-config` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-desk` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-events` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-facade` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-formily-design` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-gateway` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-login` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-message` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-open-platform` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-process-layout` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-risk` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-security` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-system` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-user` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `jjb-saas-view` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+CREATE DATABASE `xxl_job` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci';
+```
+
+### 安装redis
+
+```shell
+版本6.2
+使用docker 安装步骤略
+```
+
+### 安装minio
+
+```shell
+版本 RELEASE.2023-09-04T19-57-37Z
+使用docker 安装步骤略
+```
+
+### 安装rocketmq
+
+[请至钉钉文档查看附件《rocketmq\_install\_for\_k8s.sh》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi2v18z1w5j7bcw6raj&type=d&utm_medium=im_card&utm_source=im)
+
+### 安装nacos
+
+初始库
+
+[请至钉钉文档查看附件《config\_info.sql》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi3zdnnrlxfb4gh01i&type=d&utm_medium=im_card&utm_source=im)
+
+[请至钉钉文档查看附件《nacos.yml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi3zdxg68r1npwfsah4&type=d&utm_medium=im_card&utm_source=im)
+
+[请至钉钉文档查看附件《ns.yml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi3zdxh83vezy07zqx7&type=d&utm_medium=im_card&utm_source=im)
+
+[请至钉钉文档查看附件《cm.yml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi3zdxicg8ozc5vz9yr&type=d&utm_medium=im_card&utm_source=im)
+
+[请至钉钉文档查看附件《cm-1.yml》。](https://alidocs.dingtalk.com/document/preview?chInfo=im&cid=130587771:1935297177&dentryKey=g08Ok5gnh0MaBZlL&docKey=4jKqm0bQMz18Gnw1&dontjump=true&iframeQuery=anchorId%3DX02mi3zdxjlfb29uvxq9z&type=d&utm_medium=im_card&utm_source=im)
+
+四个配置文件放到服务器上
+
+先执行
+
+```bash
+# 初始化配置文件
+kubectl apply -f ns.yml
+kubectl apply -f cm.yml
+kubectl apply -f cm-1.yml
+kubectl apply -f nacos.yml
+# 查看pod 节点
+kubectl get pods -A
+# 查看日志
+kubectl logs -f -n jjb-dragon <新的prod-nacos-pod-name>
+# 修改 pod配置
+# 删除 pod节点
+ kubectl delete pod -n
+```
+
+安装xxljob
+
+### 部署底座应用
+
+```shell
+kubectl create secret docker-registry image-pull-secret \
+ --docker-server=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com \
+ --docker-username=gbs镜像仓库账号 \
+ --docker-password='gbs镜像仓库密码' \
+ -n jjb-dragon
+```
+
+现有镜像地址有问题,不可信,待更新。
+
+插入链接
+
+```shell
+helm upgrade -i jjb-saas-gateway --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-gateway:oat-20251015-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=true --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30140 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-user --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-user:wbyw-20251010-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-system --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-system:wb-20250904-4 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-config --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-config:wb-20250904-4 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-auth --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-auth:ota-20251118-2 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-attachment --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-attachment:wb-20250904-2 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-desk --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-desk:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-application --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-application:wb-20251011-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-facade --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-facade:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-message --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-message:wb-20251021-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-base --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-base:wb-20251016-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-formily-design --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-formily-design:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-login --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-login:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-official --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-official:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-security --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-security:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-open-platform --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-open-platform:wb-20250904-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-netty-server --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/wbyw-dragon-jjb-saas-netty-server:wb-20251010-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-events --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-events:ota-20251017-2 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-process-layout --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-process-layout:ota-20250926-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-data-center --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-data-center:ota-20251111-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-bpm --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-bpm:ota-20251111-2 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+helm upgrade -i jjb-saas-component-design --set Replicas=1 --set Cmd_args[0]='-Dnacos.namespace=jjb-dragon' --set Cmd_args[1]='-Dnacos.url=prod-nacos:8848' --set Cmd_args[2]='-Dspring.profiles.active=prod' --set Image=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/ali_img_ns/prod-aly-ota-dragon-jjb-saas-component-design:ota-20251111-1 --set LimitsCpu=1 --set LimitsMemory=1024M --set RequestsCpu=0.3 --set RequestsMemory=128M --set nodeportOn=false --set ServicePortMap[0].name=app --set ServicePortMap[0].port=80 --set ServicePortMap[0].nodePortNum=30080 --set HealthyCheck=false --set HeathycheckPort=80 --set HealthyCheckpath=/heartbeat --set hpaON=false --set hpaMinRelicas=1 --set hpaMaxRelicas=3 --set hpacpulimit=85 --set hpamemlimit=85 --set logsidecarOn=false --set esHost=127.0.0.1 --set sidecarLimitsCpu=0.3 --set sidecarLimitsMemory=128M --set sidecarRequestsCpu=0.1 --set sidecarRequestsMemory=56M --set logPathdir=/opt/logs --set logfileRegex=*all_log.log --set nodeSelectorOn=false --set nodeLS.kubernetes.io/hostname=k8s-work01 jjb-prod/jjb-java-app -n jjb-dragon
+```
+```shell
+auth_terminal_login_page_config
+终端地址配置表
+```
+```java
+kubectl create secret docker-registry image-pull-secret1 \
+ --docker-server=registry.cn-zhangjiakou.aliyuncs.com \
+ --docker-username=gbs镜像仓库账号 \
+ --docker-password='gbs镜像仓库密码' \
+ -n jjb-dragon
+```
\ No newline at end of file
diff --git a/docs/gbs/服务器地址.txt b/docs/gbs/服务器地址.txt
new file mode 100644
index 0000000..a2e16e1
--- /dev/null
+++ b/docs/gbs/服务器地址.txt
@@ -0,0 +1,19 @@
+服务器信息如下
+k8s1 - 主服务
+192.168.20.100
+Centos7
+root
+Zcloud@zcloud100
+
+
+k8s2 - 从服务
+192.168.20.110
+Centos7
+root
+Zcloud@zcloud110
+
+k8s3 - 从服务
+192.168.20.120
+Centos7
+root
+Zcloud@zcloud120
\ No newline at end of file
diff --git a/docs/gbs/镜像信息和账号密码等.txt b/docs/gbs/镜像信息和账号密码等.txt
new file mode 100644
index 0000000..f75c68d
--- /dev/null
+++ b/docs/gbs/镜像信息和账号密码等.txt
@@ -0,0 +1,18 @@
+{"auths":{"jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com":{"username":"10952138@qq.com","password":"idurCT!rIq9EzISD","auth":"MTA5NTIxMzhAcXEuY29tOmlkdXJDVCFySXE5RXpJU0Q="}}}
+
+
+
+{"auths":{"registry.cn-zhangjiakou.aliyuncs.com":{"username":"kilaa","password":"Kilaa@6666","auth":"a2lsYWE6S2lsYWFANjY2Ng=="}}}
+
+
+image-pull-secret 是底座镜像。
+image-pull-secret1 是应用镜像。
+
+
+image-pull-secret1
+jb-dragon
+kubernetes.io/dockerconfigjson
+
+image-pull-secret
+jb-dragon
+kubernetesio/dockerconfigjson
\ No newline at end of file
diff --git a/docs/~$S部署配置分析报告.docx b/docs/~$S部署配置分析报告.docx
deleted file mode 100644
index fcd42e3..0000000
--- a/docs/~$S部署配置分析报告.docx
+++ /dev/null
@@ -1 +0,0 @@
-
Administrator
A d m i n i s t r a t o r
\ No newline at end of file
diff --git a/docs/阿里云镜像地址.txt b/docs/阿里云镜像地址.txt
new file mode 100644
index 0000000..2eb5416
--- /dev/null
+++ b/docs/阿里云镜像地址.txt
@@ -0,0 +1,13 @@
+access Key id:
+LTAI5tF8GbtKizLAowJbAYmT
+access Key secret:
+G0ZYeaZtnpxhp0bO1rPp4HPrq57LaT
+
+
+
+Repository address
+Internet
+registry.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation
+
+VPC Network:
+registry-vpc.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java
index 67a9fe2..5d3c9c2 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java
@@ -1,10 +1,9 @@
package org.qinan.safetyeval.app.executor;
-import com.jjb.saas.system.client.user.facade.UserFacade;
-import com.jjb.saas.system.client.user.request.FacadeUserAddCmd;
import com.jjb.saas.system.client.user.request.UserAddCmd;
import com.jjb.saas.system.client.user.request.UserUpdatePasswordCmd;
-import org.apache.dubbo.config.annotation.DubboReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.qinan.safetyeval.app.support.OrgPersonnelChangeRecorder;
import org.qinan.safetyeval.app.support.OrgPersonnelViewEnricher;
import org.qinan.safetyeval.client.api.OrgPersonnelApi;
@@ -22,6 +21,7 @@ import org.qinan.safetyeval.domain.query.OrgPersonnelQuery;
import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.service.OrgPersonnelDomainService;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
+import org.qinan.safetyeval.infrastructure.adapter.gbs.GbsUserFacadeClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
@@ -36,6 +36,8 @@ import java.util.List;
@Service
public class OrgPersonnelExecutor implements OrgPersonnelApi {
+ private static final Logger LOGGER = LoggerFactory.getLogger(OrgPersonnelExecutor.class);
+
@Lazy
@Autowired(required = false)
private OrgPersonnelDomainService orgPersonnelDomainService;
@@ -49,12 +51,16 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
@Autowired(required = false)
private OrgResignApplyGateway orgResignApplyGateway;
- @DubboReference
- private UserFacade userFacade;
+ @Autowired
+ private GbsUserFacadeClient gbsUserFacadeClient;
@Value("${def.password:a123456}")
private String defPassword;
+
+ @Value("${safety-eval.gbs-user-sync.fail-fast:true}")
+ private boolean gbsUserSyncFailFast;
+
@Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse add(OrgPersonnelAddCmd cmd) {
@@ -68,7 +74,12 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
userAddCmd.setAccount(result.getAccount());
userAddCmd.setIdCard(result.getIdCardNo());
userAddCmd.setTenantId(result.getTenantId());
- userFacade.add(userAddCmd);
+ syncGbsUser("add user", new Runnable() {
+ @Override
+ public void run() {
+ gbsUserFacadeClient.add(userAddCmd);
+ }
+ });
return SingleResponse.success(co);
}
@@ -109,7 +120,12 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
UserUpdatePasswordCmd userUpdatePasswordCmd = new UserUpdatePasswordCmd();
userUpdatePasswordCmd.setId(entity.getId());
userUpdatePasswordCmd.setPassword(defPassword);
- userFacade.updatePassword(userUpdatePasswordCmd);
+ syncGbsUser("reset user password", new Runnable() {
+ @Override
+ public void run() {
+ gbsUserFacadeClient.updatePassword(userUpdatePasswordCmd);
+ }
+ });
return SingleResponse.success();
}
@@ -143,6 +159,16 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
return PageResponse.of(records, pageResult.getTotal());
}
+ private void syncGbsUser(String action, Runnable runnable) {
+ try {
+ runnable.run();
+ } catch (RuntimeException ex) {
+ LOGGER.warn("GBS user sync failed while {}", action, ex);
+ if (gbsUserSyncFailFast) {
+ throw ex;
+ }
+ }
+ }
private void enrich(OrgPersonnelCO co) {
if (orgPersonnelViewEnricher != null) {
orgPersonnelViewEnricher.enrichPersonnel(co);
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java
index f6729a9..ba0bc94 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java
@@ -16,10 +16,10 @@ import org.qinan.safetyeval.domain.gateway.OrgPositionGateway;
import org.qinan.safetyeval.domain.gateway.OrgResignApplyGateway;
import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery;
import org.qinan.safetyeval.domain.query.PageResult;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
-import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@@ -29,52 +29,53 @@ import java.util.stream.Collectors;
@Component
public class OrgPersonnelViewEnricher {
- @Resource
+ @Autowired(required = false)
private OrgDepartmentGateway orgDepartmentGateway;
- @Resource
+ @Autowired(required = false)
private OrgPositionGateway orgPositionGateway;
- @Resource
+ @Autowired(required = false)
private OrgPersonnelCertGateway orgPersonnelCertGateway;
- @Resource
+ @Autowired(required = false)
private OrgPersonnelGateway orgPersonnelGateway;
- @Resource
+ @Autowired(required = false)
private OrgPersonnelChangeGateway orgPersonnelChangeGateway;
- @Resource
+ @Autowired(required = false)
private OrgResignApplyGateway orgResignApplyGateway;
public void enrichPersonnel(OrgPersonnelCO co) {
if (co == null) {
return;
}
- if (co.getDeptId() != null) {
+ if (co.getDeptId() != null && orgDepartmentGateway != null) {
OrgDepartmentEntity dept = orgDepartmentGateway.get(co.getDeptId());
if (dept != null) {
co.setDeptName(dept.getDeptName());
}
}
- if (co.getPostId() != null) {
+ if (co.getPostId() != null && orgPositionGateway != null) {
OrgPositionEntity position = orgPositionGateway.get(co.getPostId());
if (position != null) {
co.setPostName(position.getPositionName());
}
}
if (co.getId() != null) {
- OrgPersonnelCertQuery certQuery = new OrgPersonnelCertQuery();
- certQuery.setPersonnelId(co.getId());
- certQuery.setPageNum(1L);
- certQuery.setPageSize(200L);
- PageResult certPage = orgPersonnelCertGateway.page(certQuery);
- String certNames = certPage.getRecords().stream()
- .map(OrgPersonnelCertEntity::getCertName)
- .filter(StringUtils::hasText)
- .collect(Collectors.joining("、"));
- co.setCertNames(certNames);
-
+ if (orgPersonnelCertGateway != null) {
+ OrgPersonnelCertQuery certQuery = new OrgPersonnelCertQuery();
+ certQuery.setPersonnelId(co.getId());
+ certQuery.setPageNum(1L);
+ certQuery.setPageSize(200L);
+ PageResult certPage = orgPersonnelCertGateway.page(certQuery);
+ String certNames = certPage.getRecords().stream()
+ .map(OrgPersonnelCertEntity::getCertName)
+ .filter(StringUtils::hasText)
+ .collect(Collectors.joining("、"));
+ co.setCertNames(certNames);
+ }
enrichChangeSummary(co);
}
if (co.getEmploymentStatusCode() == null) {
@@ -84,10 +85,10 @@ public class OrgPersonnelViewEnricher {
}
private void enrichChangeSummary(OrgPersonnelCO co) {
- List changes = orgPersonnelChangeGateway.listByPersonnelId(co.getId());
+ List changes = orgPersonnelChangeGateway != null ? orgPersonnelChangeGateway.listByPersonnelId(co.getId()) : null;
co.setChangeCount(changes != null ? changes.size() : 0);
- List applies = orgResignApplyGateway.listByPersonnelId(co.getId());
+ List applies = orgResignApplyGateway != null ? orgResignApplyGateway.listByPersonnelId(co.getId()) : null;
if (applies == null || applies.isEmpty()) {
return;
}
@@ -110,12 +111,15 @@ public class OrgPersonnelViewEnricher {
if (co.getPersonnelId() == null) {
return;
}
+ if (orgPersonnelGateway == null) {
+ return;
+ }
OrgPersonnelEntity personnel = orgPersonnelGateway.get(co.getPersonnelId());
if (personnel == null) {
return;
}
co.setAccount(personnel.getAccount());
- if (personnel.getDeptId() != null) {
+ if (personnel.getDeptId() != null && orgDepartmentGateway != null) {
OrgDepartmentEntity dept = orgDepartmentGateway.get(personnel.getDeptId());
if (dept != null) {
co.setDeptName(dept.getDeptName());
diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/adapter/gbs/GbsUserFacadeClient.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/adapter/gbs/GbsUserFacadeClient.java
new file mode 100644
index 0000000..a3f3847
--- /dev/null
+++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/adapter/gbs/GbsUserFacadeClient.java
@@ -0,0 +1,35 @@
+package org.qinan.safetyeval.infrastructure.adapter.gbs;
+
+import com.jjb.saas.system.client.user.facade.UserFacade;
+import com.jjb.saas.system.client.user.request.UserAddCmd;
+import com.jjb.saas.system.client.user.request.UserUpdatePasswordCmd;
+import com.jjb.saas.system.client.user.request.UserUpdateQuitCmd;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.stereotype.Component;
+
+@Component
+public class GbsUserFacadeClient {
+
+ @DubboReference(protocol = "dubbo", url = "${safety-eval.gbs-user-sync.user-facade-url:}")
+ private UserFacade userFacade;
+
+ public void add(UserAddCmd cmd) {
+ userFacade.add(cmd);
+ }
+
+ public void delete(Long userId) {
+ userFacade.delete(userId);
+ }
+
+ public void updatePassword(UserUpdatePasswordCmd cmd) {
+ userFacade.updatePassword(cmd);
+ }
+
+ public void quit(UserUpdateQuitCmd cmd) {
+ userFacade.quit(cmd);
+ }
+
+ public void restoreJob(UserUpdateQuitCmd cmd) {
+ userFacade.restoreJob(cmd);
+ }
+}
\ No newline at end of file
diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java
index a7c7d5d..664bb26 100644
--- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java
+++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgInfoGatewayImpl.java
@@ -3,15 +3,16 @@ package org.qinan.safetyeval.infrastructure.gatewayimpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jjb.saas.system.client.user.facade.UserFacade;
import com.jjb.saas.system.client.user.request.UserUpdatePasswordCmd;
import com.jjb.saas.system.client.user.request.UserUpdateQuitCmd;
-import org.apache.dubbo.config.annotation.DubboReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.qinan.safetyeval.domain.entity.OrgInfoEntity;
import org.qinan.safetyeval.domain.gateway.OrgInfoGateway;
import org.qinan.safetyeval.domain.query.OrgInfoQuery;
import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
+import org.qinan.safetyeval.infrastructure.adapter.gbs.GbsUserFacadeClient;
import org.qinan.safetyeval.infrastructure.dataobject.OrgInfoDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
import org.qinan.safetyeval.infrastructure.mapper.OrgInfoMapper;
@@ -37,17 +38,23 @@ import java.util.stream.Collectors;
@Component
public class OrgInfoGatewayImpl implements OrgInfoGateway {
+ private static final Logger LOGGER = LoggerFactory.getLogger(OrgInfoGatewayImpl.class);
+
@Resource
private OrgInfoMapper orgInfoMapper;
@Resource
private OrgPersonnelMapper orgPersonnelMapper;
@Resource
private OrgInfoCascadeDeleter orgInfoCascadeDeleter;
- @DubboReference
- private UserFacade userFacade;
+ @Autowired
+ private GbsUserFacadeClient gbsUserFacadeClient;
@Value("${def.password:a123456}")
private String defPassword;
+
+ @Value("${safety-eval.gbs-user-sync.fail-fast:true}")
+ private boolean gbsUserSyncFailFast;
+
@Override
public OrgInfoEntity save(OrgInfoEntity entity) {
OrgInfoDO dataObject = toDO(entity);
@@ -91,7 +98,13 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
.eq(OrgPersonnelDO::getOrgId, id)).stream().map(OrgPersonnelDO::getId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(orgPersonnelDOIdS)) {
for (Long orgPersonnelDOId : orgPersonnelDOIdS) {
- userFacade.delete(orgPersonnelDOId);
+ final Long userId = orgPersonnelDOId;
+ syncGbsUser("delete user", new Runnable() {
+ @Override
+ public void run() {
+ gbsUserFacadeClient.delete(userId);
+ }
+ });
}
}
orgInfoCascadeDeleter.deleteRelatedData(id);
@@ -115,10 +128,20 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
userUpdateQuitCmd.setId(orgPersonnelDOId);
if (state == 1) {
// 禁用
- userFacade.quit(userUpdateQuitCmd);
+ syncGbsUser("quit user", new Runnable() {
+ @Override
+ public void run() {
+ gbsUserFacadeClient.quit(userUpdateQuitCmd);
+ }
+ });
} else {
// 启用
- userFacade.restoreJob(userUpdateQuitCmd);
+ syncGbsUser("restore user job", new Runnable() {
+ @Override
+ public void run() {
+ gbsUserFacadeClient.restoreJob(userUpdateQuitCmd);
+ }
+ });
}
}
}
@@ -176,9 +199,24 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
UserUpdatePasswordCmd userUpdatePasswordCmd = new UserUpdatePasswordCmd();
userUpdatePasswordCmd.setId(id);
userUpdatePasswordCmd.setPassword(defPassword);
- userFacade.updatePassword(userUpdatePasswordCmd);
+ syncGbsUser("reset user password", new Runnable() {
+ @Override
+ public void run() {
+ gbsUserFacadeClient.updatePassword(userUpdatePasswordCmd);
+ }
+ });
}
+ private void syncGbsUser(String action, Runnable runnable) {
+ try {
+ runnable.run();
+ } catch (RuntimeException ex) {
+ LOGGER.warn("GBS user sync failed while {}", action, ex);
+ if (gbsUserSyncFailFast) {
+ throw ex;
+ }
+ }
+ }
private OrgInfoDO toDO(OrgInfoEntity entity) {
OrgInfoDO dataObject = new OrgInfoDO();
dataObject.setUnitName(entity.getUnitName());
diff --git a/safety-eval-start/src/main/resources/application-local.yml b/safety-eval-start/src/main/resources/application-local.yml
index 33c3c22..c8f74d9 100644
--- a/safety-eval-start/src/main/resources/application-local.yml
+++ b/safety-eval-start/src/main/resources/application-local.yml
@@ -71,6 +71,7 @@ dubbo:
namespace: jjb-dragon-facade
protocol:
port: 20895
+ name: dubbo
dragon:
gateway:
@@ -89,6 +90,9 @@ logging:
# 本地联调:企业信息管理接口免鉴权(覆盖 application.yml 中 security 配置)
safety-eval:
+ gbs-user-sync:
+ fail-fast: true
+ user-facade-url: ${GBS_USER_FACADE_URL:dubbo://192.168.20.100:32080}
security:
permit-all-paths:
- /v2/api-docs
diff --git a/safety-eval-start/src/main/resources/application.yml b/safety-eval-start/src/main/resources/application.yml
index 6dd5a57..060216d 100644
--- a/safety-eval-start/src/main/resources/application.yml
+++ b/safety-eval-start/src/main/resources/application.yml
@@ -42,6 +42,8 @@ mybatis-plus:
dubbo:
application:
name: safety-eval-service
+ service-discovery:
+ migration: FORCE_INTERFACE
registry:
timeout: 20000
check: false
@@ -56,6 +58,9 @@ dubbo:
filter: consumerContextFilter
safety-eval:
+ gbs-user-sync:
+ fail-fast: true
+ user-facade-url: ${GBS_USER_FACADE_URL:}
security:
# Exact paths that can be accessed without authentication.
permit-all-paths: