feat: 三种部署方式全部验证通过
方案1: docker-compose 双容器(原有,不变) 方案2: 二进制部署(go:embed 前端嵌入) - 修复 SPA fallback(c.FileFromFS 301 → c.Data 直接返回) - 二进制 22MB,内存 21.5MB - 支持全部 CLI 参数(--db-host --redis-host --port 等) 方案3: K8s 部署(hostNetwork + 外部 MySQL/Redis) - devops 声明空间 - embed 单容器 Deployment + NodePort Service - 健康检查改为 /version(/health 尚未实现) - hostNetwork 解决 K8s pod 网络到外部 MySQL 的连通性 新增: Dockerfile.embed, docker-compose.embed.yml, deploy/binary/
This commit is contained in:
1 parent
4631b02f13
commit
2a0521340f
15 files changed
+734
-488
No files matched your search
@@ -1,78 +1,32 @@
|
||||
# configmap.yaml — 后端配置 (ConfigMap) + 敏感信息 (Secret)
|
||||
# ----------------------------------------------------------------------------
|
||||
# ConfigMap aiops-config:
|
||||
# - 内含 config.yaml,DB/Redis 连接信息以环境变量占位(${VAR})。
|
||||
# - 后端 Deployment 将其挂载到 /app/configs/config.yaml(viper 搜索路径 ./configs)。
|
||||
#
|
||||
# Secret aiops-secret:
|
||||
# - 存放 MySQL 密码与 JWT 密钥(明文敏感信息不放 ConfigMap)。
|
||||
# - 由 backend Deployment / mysql StatefulSet 以环境变量注入。
|
||||
#
|
||||
# 部署: kubectl apply -f configmap.yaml
|
||||
# ----------------------------------------------------------------------------
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: aiops-config
|
||||
namespace: devops
|
||||
labels:
|
||||
app.kubernetes.io/name: aiops
|
||||
app.kubernetes.io/component: backend
|
||||
data:
|
||||
config.yaml: |
|
||||
# AIOps 后端配置
|
||||
# DB/Redis 连接通过环境变量注入(见 backend Deployment 的 env 段)。
|
||||
# 敏感字段 (password / jwt) 由 Secret aiops-secret 提供。
|
||||
# 注意: viper.AutomaticEnv 默认不替换嵌套键中的点(.),如需 DATABASE_HOST ->
|
||||
# database.host 生效,请在 backend 启动时设置:
|
||||
# viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||
mode: release
|
||||
port: "8080"
|
||||
log_level: info
|
||||
|
||||
# ---- 数据库 (MySQL) ----
|
||||
database:
|
||||
driver: mysql
|
||||
host: "${DB_HOST}" # -> mysql (k8s Service)
|
||||
host: mysql
|
||||
port: 3306
|
||||
user: "${DB_USER}" # -> aiops
|
||||
password: "${DB_PASSWORD}" # <- Secret aiops-secret (database-password)
|
||||
dbname: "${DB_NAME}" # -> aiops
|
||||
user: aiops
|
||||
password: aiops_pass_2026
|
||||
dbname: aiops
|
||||
charset: utf8mb4
|
||||
max_conn: 100
|
||||
max_idle: 10
|
||||
|
||||
# ---- Redis ----
|
||||
redis:
|
||||
driver: redis # redka(内嵌) / redis(外部)
|
||||
host: "${REDIS_HOST}" # -> redis (k8s Service)
|
||||
driver: redis
|
||||
host: redis
|
||||
port: 6379
|
||||
password: "${REDIS_PASSWORD}" # 本环境 Redis 无密码,留空
|
||||
password: ""
|
||||
db: 0
|
||||
|
||||
# ---- JWT ----
|
||||
jwt:
|
||||
secret: "${JWT_SECRET}" # <- Secret aiops-secret (jwt-secret)
|
||||
secret: "aiops-jwt-secret-key-2026"
|
||||
expire_hour: 24
|
||||
|
||||
# ---- WebSocket ----
|
||||
websocket:
|
||||
read_buffer_size: 1024
|
||||
write_buffer_size: 1024
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: aiops-secret
|
||||
namespace: devops
|
||||
labels:
|
||||
app.kubernetes.io/name: aiops
|
||||
type: Opaque
|
||||
stringData:
|
||||
# MySQL 业务账号密码
|
||||
database-password: "aiops_pass_2026"
|
||||
# MySQL root 密码(StatefulSet 初始化用)
|
||||
mysql-root-password: "aiops_root_2026"
|
||||
# JWT 签名密钥(生产请替换为强随机值)
|
||||
jwt-secret: "aiops-jwt-secret-change-in-production-2026"
|
||||
Reference in new issue
Block a user