Files
aiops/deploy/k8s/configmap.yaml
T
Logan 4631b02f13 feat: 三种部署方式 — embed单容器 + 二进制部署 + K8s
新增三种部署方式(原有 docker-compose 不受影响):

1. Docker embed 单容器 (docker-compose.embed.yml):
   - go:embed 前端嵌入后端二进制
   - 不需要 nginx 容器,3容器→2容器
   - 镜像仅 54.8MB (vs 原来 1.16GB)
   - 用法: make docker-embed

2. 二进制部署 (deploy/binary/):
   - make build-binary 生成单二进制
   - install.sh 自动创建 systemd 服务
   - 适合无 Docker 环境
   - 用法: scp aiops + install.sh, bash install.sh install

3. Kubernetes 部署 (deploy/k8s/):
   - devops 命名空间全套 yaml
   - MySQL StatefulSet + Redis StatefulSet + Backend Deployment
   - ConfigMap + Secret + Ingress
   - 用法: kubectl apply -f deploy/k8s/

核心改动:
- backend/cmd/embed.go: go:embed 前端 + SPA fallback 路由
- backend/Dockerfile.embed: 四阶段构建 (前端→后端embed→agent→runtime)
- Makefile: build-binary + docker-embed 目标
- deploy/README.md: 四种部署方式对比文档
2026-06-21 14:20:29 +08:00

79 lines
2.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
port: 3306
user: "${DB_USER}" # -> aiops
password: "${DB_PASSWORD}" # <- Secret aiops-secret (database-password)
dbname: "${DB_NAME}" # -> aiops
charset: utf8mb4
max_conn: 100
max_idle: 10
# ---- Redis ----
redis:
driver: redis # redka(内嵌) / redis(外部)
host: "${REDIS_HOST}" # -> redis (k8s Service)
port: 6379
password: "${REDIS_PASSWORD}" # 本环境 Redis 无密码,留空
db: 0
# ---- JWT ----
jwt:
secret: "${JWT_SECRET}" # <- Secret aiops-secret (jwt-secret)
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"