Files
orbstack-k8s-infra/monitoring-ingress.yaml
brunoandClaude 1bccca8670 feat: 配置监控服务统一域名基于路径的路由
为 monitor.omniverseai.net 配置了基于路径的路由,实现单一域名访问所有监控服务。

## 主要变更

### 新增 Ingress 配置
- monitoring-ingress-final.yaml: Grafana、Prometheus、Alertmanager 路径重写配置
- monitoring-ingress-root.yaml: 根路径重定向到 Grafana
- monitoring-ingress-catchall.yaml: catch-all 规则处理其他路径

### 路由配置
- / → 自动重定向到 /grafana
- /grafana → Grafana 监控仪表板
- /prometheus → Prometheus 查询界面
- /alertmanager → Alertmanager 告警管理
- /login, /api/* 等 → 通过 catch-all 路由到 Grafana

### Helm 配置更新
- 更新 kube-prometheus-stack-values-optimized.yaml
- 配置 Grafana 子路径支持 (serve_from_sub_path)
- 配置 Prometheus 和 Alertmanager 的 externalUrl

### 测试和文档
- 新增测试脚本: scripts/test-monitoring-routes.sh
- 新增详细文档: docs/monitoring-ingress-setup.md
- 更新 README.md 添加统一访问入口说明

## 技术实现

- 使用 nginx-ingress rewrite-target 实现路径重写
- 配置 Grafana grafana.ini 支持子路径访问
- 使用多个 Ingress 资源处理不同路径优先级
- SSL 证书通过 cert-manager 自动管理

## 测试验证

所有路径均已测试通过:
✅ 根路径重定向
✅ Grafana 完整功能(包括 /login)
✅ Prometheus 查询界面
✅ Alertmanager 告警管理

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
2025-11-24 21:49:06 +08:00

65 lines
1.7 KiB
YAML
Raw Permalink 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.
---
# 统一的监控服务 Ingress 配置
# 支持基于路径的路由到不同的监控服务
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: monitoring-unified
namespace: observability
annotations:
# SSL 配置
cert-manager.io/cluster-issuer: "letsencrypt-prod"
# SSL 重定向
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# 超时设置(监控查询可能需要较长时间)
nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
# 最大请求体大小
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
# 使用 app-root 重定向根路径到 Grafana
nginx.ingress.kubernetes.io/app-root: /grafana
spec:
ingressClassName: nginx
tls:
- hosts:
- monitor.omniverseai.net
secretName: monitor-tls
rules:
- host: monitor.omniverseai.net
http:
paths:
# Grafana 服务(不重写路径,因为配置了 serve_from_sub_path)
- path: /grafana
pathType: Prefix
backend:
service:
name: monitoring-grafana
port:
number: 80
# Prometheus 服务(不重写路径,externalUrl 已配置)
- path: /prometheus
pathType: Prefix
backend:
service:
name: monitoring-kube-prometheus-prometheus
port:
number: 9090
# Alertmanager 服务(不重写路径,externalUrl 已配置)
- path: /alertmanager
pathType: Prefix
backend:
service:
name: monitoring-kube-prometheus-alertmanager
port:
number: 9093