跳转到内容

仪表盘

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.enabledtrue开关仪表盘的 Deployment 和 Service。
dashboard.replicas1仪表盘 Pod 副本数。由于仪表盘是无状态的,且它查询的 Admin API 运行在控制面上,多副本通常没什么用。
dashboard.serviceAccount.name""自定义 ServiceAccount 名称。为空时,Chart 根据 release 名称自动生成。

部署后,仪表盘 Service 在 release 命名空间中监听端口 3000,Service 名称为 nantian-gw-dashboard。

通过端口转发本地访问:

Terminal window
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 的来源取决于控制面的认证模式。

当 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:

Terminal window
kubectl create sa dashboard-operator -n nantian-gw
kubectl create clusterrolebinding dashboard-operator \
--clusterrole=nantian-gw-controlplane \
--serviceaccount=nantian-gw:dashboard-operator

生成 token 并在登录页面输入:

Terminal window
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:

Terminal window
kubectl get secret -n nantian-gw nantian-gw-dashboard-auth \
-o jsonpath='{.data.auth-secret}' | base64 -d
echo

仪表盘登录时使用你提供的 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_URLChart 计算的集群内 URL控制面 Admin API 基础 URL。
DATAPLANE_ADMIN_URLChart 计算的集群内 URL数据面 Admin API 基础 URL。

仪表盘依赖控制面的 Admin API 可达。Admin API 由控制面的 Deployment 在端口 18081 上提供服务(Service:nantian-gw-controlplane-admin)。如果控制面 Pod 未运行或 Admin API 不健康,仪表盘会显示连接错误。

仪表盘查询的端点见 Admin API 参考。

当 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 指标展示:

  • 处理中请求数
  • 拒绝请求数
  • 健康状态

管理 BackendTLSPolicy 资源:

  • 列表:所有 BackendTLSPolicy 及其目标后端引用
  • 创建:表单式或 YAML 式创建
  • 详情:CA 证书、SAN 验证和状态条件

管理 BackendLBPolicy 资源,配置会话保持和负载均衡:

  • 列表:所有 BackendLBPolicy 资源
  • 创建:配置会话保持模式、TTL 和负载均衡算法
  • 详情:策略规格和状态

管理跨命名空间 ReferenceGrant 资源:

  • 列表:所有 ReferenceGrant
  • 创建:指定来源/目标命名空间和资源类型
  • 详情:授权规格和状态

启用 AI 网关后,侧边栏会显示 AI 功能区:

  • AI 概览:服务总数、Token 消耗、请求数、延迟和活跃模型分布
  • AI 服务:管理 AI 服务配置(模型、供应商、速率限制)
  • AI Token 策略:AI Token 的速率限制策略
  • AI 成本:按模型、时间范围和趋势视图的成本追踪
  • AI 追踪:请求追踪,包含模型、耗时、Token 数和状态
  • AI 用量:Token 用量图表和趋势

管理部署到数据面的 Wasm 插件:

  • 列表:所有已注册的 Wasm 插件
  • 创建:上传或配置 Wasm 插件(名称、文件、配置)
  • 详情:插件规格、执行指标和状态

配置仪表盘集成:

  • Prometheus:设置可观测性图表的 Prometheus URL
  • LLM:为 AI 聊天机器人功能配置 LLM 端点
  • 导出/导入:以 YAML 格式下载或上传完整网关配置
  • 告警:配置告警规则和通知渠道

流式聊天界面,可使用自然语言查询网关状态和诊断问题。 聊天机器人查询控制面的 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否—在反向代理后运行时需要设置。