只改镜像引用(8 处),K8s 资源名一律不动 —— 改了会丢数据/断服务:
改:
kubernetes/deployment.yaml image
docker-compose.yml image
docker-compose.prod.yml image ×2
kubernetes/README.md 文档 ×2
docs/deployment/kubernetes.md 文档 ×2
不改(重要):
opsxloki-secrets K8s Secret —— 改名会导致 JWT_SECRET/ENCRYPTION_KEY 重置,
历史加密的实例密码无法解密
opsxloki-data PVC —— 改名 = 新建空卷,数据全丢
container_name docker 容器名 —— 改名会让 docker exec/logs 命令失效
app: opsx-loki Pod label —— 改名要同步改 Service selector
deployment 名称 opsx-loki —— 改名要重建 Deployment
⚠️ 部署顺序(本提交只改代码,尚未 apply 到 K8s):
1) 推镜像 lghost/lokistack:latest 到 Docker Hub
2) kubectl apply -f kubernetes/deployment.yaml
3) 等 Pod 1/1 就绪
4) 才能删除 lghost/opsxloki
顺序颠倒会因 imagePullPolicy: Always 拉到不存在的镜像导致服务中断
部署说明
本文档描述 opsx-loki 的两种部署方式,域名与 IP 均为脱敏示例:
opsx-loki.xxx.io—— 平台 UI 域名log.xxx.io—— Loki 查询域名(Ingress)192.168.x.x—— 内网地址占位
架构
浏览器
│ HTTPS(WAF / SLB 终止)
▼
边缘 WAF ──► 主机 nginx(192.168.x.x)
│
├─ 主机部署:proxy_pass http://127.0.0.1:8081
└─ K8s 部署:proxy_pass http://<NodeIP>:30080
│
▼
Service opsx-loki:8080
│
▼
Deployment opsx-loki(1 副本)
│
┌────────────────┴────────────────┐
▼ ▼
PVC /app/data Loki Service log/loki:3100
(JSON DB、kubeconfig 加密) (日志存储:S3/OSS/COS/OBS)
两种方式的取舍
| 主机 Docker | Kubernetes | |
|---|---|---|
| 适用 | 单机、快速验证 | 多环境、统一调度 |
| 数据 | 本地卷 /app/data |
PVC(默认 StorageClass) |
| 域名 | 主机 nginx 反代 127.0.0.1:8081 |
NodePort + nginx,或 ALB Ingress |
| 约束 | 单实例 | 1 副本 + Recreate(JSON DB 单写者) |
文档索引
| 文档 | 内容 |
|---|---|
| host-nginx.md | 主机部署的 nginx 反代配置(含 WAF 真实 IP、白名单) |
| kubernetes.md | K8s 清单、Ingress(ALB)、PVC、Secret、升级 |