build+deploy: 编译加 -trimpath,镜像改 lghost/opsxsql,K8s 部署到 sql 命名空间

1. -trimpath(抹除源码绝对路径)
   - Dockerfile: go build 加 -trimpath
   - run.sh: 两处 go build 加 -trimpath
   效果:二进制内 /app/backend/ 绝对路径命中 66 → 0(module 相对路径 sql-platform/ 仍保留,
        那是 Go 的正常行为,-trimpath 只去绝对前缀)

2. 镜像
   - kubernetes/deployment.yaml: opsxsql:latest → lghost/opsxsql:latest
   - kubernetes/install.sh: 默认 IMAGE 改 lghost/opsxsql:latest
   - 已构建并推送:lghost/opsxsql:latest (digest 70562a408cae, 25.2MB)

3. K8s 部署验证(namespace: sql)
   - Deployment opsxsql 1/1 Running,0 重启
   - Pod: opsxsql-695444d6b9-chrzp (node 172.19.0.161)
   - Service opsxsql.sql.svc.cluster.local:80
   - PVC opsxsql-data Bound 10Gi (cbs)
   - Secret opsxsql-secrets 自动生成(SECRET_KEY / JWT_SECRET)
   - /health → {"backend":"go","status":"ok","version":"0.4.0"}
   - 首页正常,seed 完成(26 条审核规则 + LDAP 默认配置)

部署命令:bash kubernetes/install.sh
This commit is contained in:
opsx committed 2026-10-26 17:22:29 +00:00
1 parent dbe9e4ab86
commit 396df57c9c
15 files changed
+233 -24

No files matched your search

+1 -1
View File
@@ -82,7 +82,7 @@ apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: opsxsql-data-20261026
namespace: opsxsql
namespace: sql
spec:
volumeSnapshotClassName: <集群的 snapshotClass>
source:
+2 -2
View File
@@ -4,7 +4,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: opsxsql
namespace: opsxsql
namespace: sql
labels:
app.kubernetes.io/name: opsxsql
spec:
@@ -26,7 +26,7 @@ spec:
fsGroup: 1000
containers:
- name: opsxsql
image: opsxsql:latest # TODO: 替换为实际镜像仓库地址
image: lghost/opsxsql:latest
imagePullPolicy: IfNotPresent
ports:
- name: http
+1 -1
View File
@@ -13,7 +13,7 @@ apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opsxsql
namespace: opsxsql
namespace: sql
annotations:
cloud.tencent.com/health-check-path: /health
cloud.tencent.com/health-check-interval: "10"
+1 -1
View File
@@ -5,7 +5,7 @@ apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opsxsql
namespace: opsxsql
namespace: sql
annotations:
alb.ingress.kubernetes.io/healthcheck-path: /health
spec:
+1 -1
View File
@@ -7,7 +7,7 @@ apiVersion: v1
kind: Secret
metadata:
name: opsxsql-secrets
namespace: opsxsql
namespace: sql
type: Opaque
stringData:
SECRET_KEY: "REPLACE_WITH_32_BYTES_HEX"
+1 -1
View File
@@ -3,7 +3,7 @@ apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opsxsql
namespace: opsxsql
namespace: sql
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 32m # CSV 导入/大数据量导出
spec:
+5 -3
View File
@@ -2,6 +2,7 @@
# ============================================================================
# opsxsql 一键部署(参照 opsx-loki 最新 install.sh)
#
# 命名空间固定:sql
# 自动适配:阿里云 ACK / 腾讯云 TKE / AWS EKS / 华为云 CCE / GCP GKE / Azure AKS / K3s / 自建
# 幂等:重复执行不覆盖密钥、不重建数据卷
#
@@ -11,12 +12,13 @@
# WITH_NODEPORT=1 bash kubernetes/install.sh # 同时开 NodePort(:30900)
# bash kubernetes/install.sh --nodeport # 等价于上一行
# bash kubernetes/install.sh --ingress opsxsql.example.com # 通用 nginx Ingress
# STORAGE_CLASS=local-path NS=opsxsql PVC_SIZE=20Gi bash kubernetes/install.sh
# STORAGE_CLASS=local-path PVC_SIZE=20Gi bash kubernetes/install.sh # 命名空间固定 sql
# ============================================================================
set -euo pipefail
NS="${NS:-opsxsql}"
IMAGE="${IMAGE:-opsxsql:latest}"
NS="sql"
# 命名空间固定 sql(如需修改请改此变量与 kubernetes/*.yaml)
IMAGE="${IMAGE:-lghost/opsxsql:latest}"
SECRET_NAME="opsxsql-secrets"
WITH_NODEPORT="${WITH_NODEPORT:-0}"
INGRESS_HOST=""
+1 -1
View File
@@ -1,6 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: opsxsql
name: sql
labels:
app.kubernetes.io/name: opsxsql
+1 -1
View File
@@ -4,7 +4,7 @@ apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: opsxsql-data
namespace: opsxsql
namespace: sql
labels:
app.kubernetes.io/name: opsxsql
spec:
+1 -1
View File
@@ -3,7 +3,7 @@ apiVersion: v1
kind: Service
metadata:
name: opsxsql-nodeport
namespace: opsxsql
namespace: sql
labels:
app.kubernetes.io/name: opsxsql
spec:
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v1
kind: Service
metadata:
name: opsxsql
namespace: opsxsql
namespace: sql
labels:
app.kubernetes.io/name: opsxsql
spec: