跳转到内容

仪表盘

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 并配置 hoststls

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 时)”

如果未设置 authSecretauthExistingSecret 或静态 bearerToken,且 authMode"static" 且未配置 token,仪表盘以只读模式运行,无需认证。这适用于本地开发和防火墙后的端口转发访问。

如果在仪表盘 Helm 配置中设置了 authSecretauthExistingSecret,仪表盘将其用于会话认证。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.enabledtrue 时,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_SECRETNextAuth 加密密钥。使用 openssl rand -base64 32 生成。
CONTROLPLANE_ADMIN_URLhttp://localhost:18081控制面 Admin API 基础 URL。
DATAPLANE_ADMIN_URLhttp://localhost:19080数据面 Admin API 基础 URL。
DATAPLANE_BEARER_TOKEN数据面 Admin API 的 Bearer Token。
DASHBOARD_ENABLE_HSTSfalse启用 HSTS 响应头。
AUTH_TRUST_HOST在反向代理后运行时需要设置。