仪表盘
Nantian Gateway 仪表盘是一个随控制面一起部署的 Next.js 管理界面。它提供了用于查看网关状态、路由配置和监控数据面连接的 Web 界面,无需直接使用 kubectl 或 Admin API。
仪表盘连接到控制面的 Admin API 并从中读取配置。它不写入任何内容:它是一个仅供运维人员使用的只读可观测性工具。
Helm Chart 中仪表盘默认启用。以下配置项控制其部署:
dashboard: enabled: true replicas: 1 authSecret: "" authExistingSecret: "" serviceAccount: name: "" annotations: {} image: repository: nantian/dashboard tag: "" pullPolicy: IfNotPresent resources: {} nodeSelector: {} tolerations: [] affinity: {} podAnnotations: {} networkPolicy: enabled: false ingress: enabled: false className: "" hosts: [] tls: []| 配置项 | 默认值 | 说明 |
|---|---|---|
dashboard.enabled | true | 开关仪表盘的 Deployment 和 Service。 |
dashboard.replicas | 1 | 仪表盘 Pod 副本数。由于仪表盘是无状态的,且它查询的 Admin API 运行在控制面上,多副本通常没什么用。 |
dashboard.serviceAccount.name | "" | 自定义 ServiceAccount 名称。为空时,Chart 根据 release 名称自动生成。 |
部署后,仪表盘 Service 在 release 命名空间中监听端口 3000,Service 名称为 nantian-gw-dashboard。
通过端口转发本地访问:
kubectl port-forward -n nantian-gw svc/nantian-gw-dashboard 3000:3000然后在浏览器中打开 http://localhost:3000。
通过 Ingress 集群内访问:
要通过 Ingress 暴露仪表盘,设置 dashboard.ingress.enabled: true 并配置 hosts 和 tls:
dashboard: ingress: enabled: true className: nginx hosts: - dashboard.nantian.example.com tls: - hosts: - dashboard.nantian.example.com secretName: dashboard-tls仪表盘自身不提供 HTTPS:在 Ingress 层终止 TLS。
仪表盘登录页面接受一个 bearer token。该 token 的来源取决于控制面的认证模式。
静态 token 模式(默认)
Section titled “静态 token 模式(默认)”当 controlplane.config.adminAuth.authMode 为 "static"(默认)时,控制面接受单个预配置的 bearer token。通过控制面配置中的 adminAuth.bearerToken 设置。仪表盘将此 token 传递给控制面的 Admin API。
Kubernetes token 模式(生产环境推荐)
Section titled “Kubernetes token 模式(生产环境推荐)”当 controlplane.config.adminAuth.authMode 为 "kubernetes" 时,控制面通过 Kubernetes TokenReview API 验证 token。运维人员可以使用 Kubernetes ServiceAccount token 进行认证。
创建一个 ServiceAccount 并将其绑定到控制面的 ClusterRole:
kubectl create sa dashboard-operator -n nantian-gwkubectl create clusterrolebinding dashboard-operator \ --clusterrole=nantian-gw-controlplane \ --serviceaccount=nantian-gw:dashboard-operator生成 token 并在登录页面输入:
kubectl create token dashboard-operator -n nantian-gw该 token 由控制面通过 Kubernetes TokenReview API 进行验证。控制面 ServiceAccount 需要创建 tokenreviews 的权限(Helm Chart 自动授予)。
Token 具有有限的生命周期(kubectl create token 默认 1 小时)。旧 token 过期后创建新 token 即可。
获取自动生成的 token(未配置 token 时)
Section titled “获取自动生成的 token(未配置 token 时)”如果未设置 authSecret、authExistingSecret 或静态 bearerToken,且 authMode 为 "static" 且未配置 token,仪表盘以只读模式运行,无需认证。这适用于本地开发和防火墙后的端口转发访问。
如果在仪表盘 Helm 配置中设置了 authSecret 或 authExistingSecret,仪表盘将其用于会话认证。Helm Chart 也会自动生成一个名为 <release>-dashboard-auth 的随机 Secret:
kubectl get secret -n nantian-gw nantian-gw-dashboard-auth \ -o jsonpath='{.data.auth-secret}' | base64 -decho仪表盘登录时使用你提供的 bearer token 对控制面 Admin API 进行认证。而数据面 Admin API 使用的是另一个独立的 bearer token(见 数据面配置 → adminAuth)。
由于仪表盘的服务端代理(BFF)会代替你调用数据面 Admin——用于 /v1/summary 和诊断——它需要数据面的 token。如果缺失,数据面诊断将受限,仪表盘会提示:
Traffic and dataplane diagnostics are limited because the current dashboard session cannot access dataplane /v1/summary.
当 Chart 管理数据面 admin token 时,Helm 会自动处理:仪表盘 Deployment 会收到一个 DATAPLANE_BEARER_TOKEN 环境变量,取值自数据面 admin 认证 Secret(<release>-dataplane-admin-auth,key 为 token)。这种情况下无需额外配置。
当数据面 admin 使用内联 token(dataplane.config.adminAuth.bearerToken)而非 Chart 管理的 Secret 时,需要显式设置 DATAPLANE_BEARER_TOKEN——可以通过挂载到仪表盘的自定义 Secret,或让数据面 admin 认证指向一个仪表盘也能引用的 Secret。
| 环境变量 | 来源 | 用途 |
|---|---|---|
DATAPLANE_BEARER_TOKEN | 数据面 admin 认证 Secret | 仪表盘 BFF 代理向数据面 Admin API 认证。 |
CONTROLPLANE_ADMIN_URL | Chart 计算的集群内 URL | 控制面 Admin API 基础 URL。 |
DATAPLANE_ADMIN_URL | Chart 计算的集群内 URL | 数据面 Admin API 基础 URL。 |
仪表盘依赖控制面的 Admin API 可达。Admin API 由控制面的 Deployment 在端口 18081 上提供服务(Service:nantian-gw-controlplane-admin)。如果控制面 Pod 未运行或 Admin API 不健康,仪表盘会显示连接错误。
仪表盘查询的端点见 Admin API 参考。
NetworkPolicy
Section titled “NetworkPolicy”当 dashboard.networkPolicy.enabled 为 true 时,Chart 会创建一个 Kubernetes NetworkPolicy,允许仪表盘 Pod 访问控制面的 Admin API。如果你的集群有额外的网络限制,可以在此基础上自定义。
登录后,仪表盘左侧导航栏按三个插件组组织页面。显示的页面取决于控制面暴露的能力(参见实验性功能)。
默认首页展示网关集群的高层摘要:
- KPI 卡片:网关总数、HTTP/gRPC/Stream 路由数、已连接数据面节点数、请求速率
- 监听器健康环图:所有网关中健康、降级、不健康监听器的分布
- 节点状态环图:已连接与断开的数据面节点
- 流量卡片:来自数据面的当前请求量
- 快照信息:当前快照版本、代际和年龄
网关页面列出所有托管的 Gateway API Gateway 资源。
- 列表视图:KPI 卡片(总数、已接受、未接受)、搜索栏、批量选择/删除
- 创建:表单式网关创建(名称、命名空间、监听器配置)
- 详情视图:监听器、路由、后端策略和状态条件标签页
- 编辑:修改现有网关配置
路由页面提供所有路由类型的统一视图:
- 可筛选列表:按类型(HTTPRoute、GRPCRoute、TCPRoute、TLSRoute、UDPRoute)、命名空间和状态筛选
- 搜索:跨路由名称的全文搜索
- 创建:每种路由类型有专用表单,支持 YAML 编辑
- 详情视图:路由规格、规则、后端引用和状态条件
节点页面显示所有已连接的数据面实例:
- 连接状态:已连接、断开或排空中
- 就绪状态:就绪或未就绪
- ACK 状态:每个节点最后确认的快照版本
- 偏移检测:快照版本与控制面当前快照不一致的节点
将控制面、基础设施层和数据面的警告和错误聚合到单一视图。 用于排查配置问题、缺失 CRD 或连接问题。
基于 Prometheus 的指标仪表盘,包含时间序列图表:
- P95/P99 延迟:请求延迟直方图
- RPS:每秒请求数随时间变化
- 成功率:成功(非 5xx)响应的百分比
- 时间范围选择器:5 分钟到 7 天预设
需要在 Settings 中配置 Prometheus 实例。
显示具有活跃熔断器状态的后端,并结合 Prometheus 指标展示:
- 处理中请求数
- 拒绝请求数
- 健康状态
后端 TLS 策略
Section titled “后端 TLS 策略”管理 BackendTLSPolicy 资源:
- 列表:所有 BackendTLSPolicy 及其目标后端引用
- 创建:表单式或 YAML 式创建
- 详情:CA 证书、SAN 验证和状态条件
后端负载均衡策略
Section titled “后端负载均衡策略”管理 BackendLBPolicy 资源,配置会话保持和负载均衡:
- 列表:所有 BackendLBPolicy 资源
- 创建:配置会话保持模式、TTL 和负载均衡算法
- 详情:策略规格和状态
管理跨命名空间 ReferenceGrant 资源:
- 列表:所有 ReferenceGrant
- 创建:指定来源/目标命名空间和资源类型
- 详情:授权规格和状态
AI 网关功能
Section titled “AI 网关功能”启用 AI 网关后,侧边栏会显示 AI 功能区:
- AI 概览:服务总数、Token 消耗、请求数、延迟和活跃模型分布
- AI 服务:管理 AI 服务配置(模型、供应商、速率限制)
- AI Token 策略:AI Token 的速率限制策略
- AI 成本:按模型、时间范围和趋势视图的成本追踪
- AI 追踪:请求追踪,包含模型、耗时、Token 数和状态
- AI 用量:Token 用量图表和趋势
Wasm 插件
Section titled “Wasm 插件”管理部署到数据面的 Wasm 插件:
- 列表:所有已注册的 Wasm 插件
- 创建:上传或配置 Wasm 插件(名称、文件、配置)
- 详情:插件规格、执行指标和状态
配置仪表盘集成:
- Prometheus:设置可观测性图表的 Prometheus URL
- LLM:为 AI 聊天机器人功能配置 LLM 端点
- 导出/导入:以 YAML 格式下载或上传完整网关配置
- 告警:配置告警规则和通知渠道
AI 聊天机器人
Section titled “AI 聊天机器人”流式聊天界面,可使用自然语言查询网关状态和诊断问题。 聊天机器人查询控制面的 RAG(检索增强生成)系统,该系统索引了网关资源、节点状态和快照数据。
启用 AI 功能后,可从侧边栏访问聊天机器人。
侧边栏顶部的搜索栏可跨资源进行搜索:
- 网关(按名称、命名空间)
- 路由(按名称、类型、主机名)
- ReferenceGrant、BackendTLSPolicy、BackendLBPolicy
- 数据面节点(按 ID、地址)
- 诊断条目
结果按相关性评分并按资源类型分组。
| 操作 | 步骤 |
|---|---|
| 查看网关的所有路由 | 进入网关详情页,打开路由标签页 |
| 检查节点偏移 | 进入节点页面,查看版本不一致 |
| 创建 HTTPRoute | 进入路由 → 创建 → HTTPRoute |
| 批量删除网关 | 在网关页面使用批量选择复选框 |
| 导出配置 | 进入设置 → 导出 |
| 监控 AI 成本 | 进入AI → 成本 |
| 排查数据面连接问题 | 查看诊断和节点页面 |
| 变量 | 必填 | 默认值 | 描述 |
|---|---|---|---|
AUTH_SECRET | 是 | — | NextAuth 加密密钥。使用 openssl rand -base64 32 生成。 |
CONTROLPLANE_ADMIN_URL | 否 | http://localhost:18081 | 控制面 Admin API 基础 URL。 |
DATAPLANE_ADMIN_URL | 否 | http://localhost:19080 | 数据面 Admin API 基础 URL。 |
DATAPLANE_BEARER_TOKEN | 否 | — | 数据面 Admin API 的 Bearer Token。 |
DASHBOARD_ENABLE_HSTS | 否 | false | 启用 HSTS 响应头。 |
AUTH_TRUST_HOST | 否 | — | 在反向代理后运行时需要设置。 |