opsx
|
396df57c9c
|
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
|
2026-10-26 17:22:29 +00:00 |
|
Logan.Li
|
738498fea3
|
feat(k8s): align install.sh with latest opsx-loki version
- cloud auto-detection (ACK/TKE/EKS/CCE/GKE/AKS/K3s/self-hosted) via
node providerID, used for deployment banner and failure diagnostics
- storage class resolution chain: explicit STORAGE_CLASS > default
annotation > sole SC; self-hosted clusters without any SC now get a
zero-dependency static local PV (hostPath DirectoryOrCreate +
nodeAffinity pin + WaitForFirstConsumer + Retain), LOCAL_STORAGE
auto/off/force tri-state
- PVC rendered with resolved storageClassName + PVC_SIZE; image
rendered into deployment via IMAGE env
- rollout failure diagnostics per waiting-reason: ImagePullBackOff
lists per-cloud registry suggestions, CreateContainerConfigError
points to secret, PVC Pending suggests per-cloud SC
- colored info/ok/warn/die helpers, /dev/urandom key fallback,
completion banner with pod/node/ip, port-forward and backup hints
- kubernetes/examples/: alibaba ALB + tencent qcloud (CLB health
check annotations, NodePort backend) ingress templates, secret
example moved here (opsx-loki layout)
- README updated with env-var table and local-storage notes
|
2026-10-26 22:09:33 +08:00 |
|
Logan.Li
|
0b16488029
|
feat(deploy): single-image docker-compose and kubernetes install.sh
- multi-stage root Dockerfile (opsx-loki pattern): frontend dist +
go binary + gh-ost in one alpine image, non-root user, HEALTHCHECK,
entrypoint warning for missing SECRET_KEY; gin now serves the SPA
from DIST_DIR (asset/db-logos/favicon passthrough, /api returns JSON
404, SPA fallback to index.html) - one origin, no CORS surface
- docker-compose.yml rewritten: single service, named data volume,
no-new-privileges + cap_drop ALL, /health healthcheck, resource
limits, log rotation; SECRET_KEY required (openssl rand -hex 32),
JWT_SECRET optional (auto-generated and persisted in prod)
- kubernetes/: install.sh one-command deploy (idempotent secret
reuse, --nodeport/--ingress flags, rollout wait, backup tips) plus
namespace/secret/pvc/deployment(single replica + Recreate, probes,
resource limits, non-root)/service/nodeport/ingress manifests and
README (sqlite single-writer constraints, snapshot backup)
- docs: README quick-start now has 3 deployment paths; ARCHITECTURE
ch.14 expanded
single-image runtime verified locally (SPA/assets/api/login coexist
on :9002); full image build left to server (docker hub unreachable
from this machine)
|
2026-10-26 20:33:26 +08:00 |
|