安装 HAMi-WebUI

Alauda Build of HAMi-WebUI 是可选的 HAMi 产品线集群插件。当用户除了 ACP 监控外,还需要 HAMi 专用的资源概览时,请安装它。

开始之前

  • 安装 Alauda Build of HAMi
  • 版本和组件 中确认受支持的 HAMi-WebUI 版本。
  • 对于 HAMi v2.9.x,请从 Customer Portal 或 AC CN/IO 获取目标架构对应的 Alauda Build of HAMi-WebUI v1.10.3 集群插件包。
  • 确认目标集群中 ACP 监控可用,并且 HAMi-WebUI 可以访问其 Prometheus 查询地址。
  • 获取集群管理员权限。生成的 Prometheus 认证值是凭证,必须作为机密信息处理。

准备 Prometheus 设置

插件表单需要一个 Prometheus 地址,并接受 HTTP Authorization 标头的完整值。对于 Basic 认证,该值必须包含 scheme 前缀:

Basic <base64(username:password)>

使用以下脚本读取监控 Feature,并生成这两个表单值。它不会单独输出用户名或密码。

prometheus_address=$(kubectl get feature monitoring \
  -o jsonpath='{.spec.accessInfo.database.service}')
if [ -z "$prometheus_address" ]; then
  prometheus_address=$(kubectl get feature monitoring \
    -o jsonpath='{.spec.accessInfo.database.address}')
fi

prometheus_secret=$(kubectl get feature monitoring \
  -o jsonpath='{.spec.accessInfo.database.basicAuth.secretName}')
prometheus_namespace=cpaas-system

prometheus_username=$(kubectl get secret "$prometheus_secret" \
  -n "$prometheus_namespace" -o jsonpath='{.data.username}' | base64 -d)
prometheus_password=$(kubectl get secret "$prometheus_secret" \
  -n "$prometheus_namespace" -o jsonpath='{.data.password}' | base64 -d)

prometheus_auth="Basic $(printf '%s:%s' \
  "$prometheus_username" "$prometheus_password" | base64 | tr -d '\n')"

printf 'Prometheus Address: %s\n' "$prometheus_address"
printf 'Prometheus Auth: %s\n' "$prometheus_auth"
WARNING

不要省略 Basic 前缀。HAMi-WebUI 会将配置的认证字符串原样作为 Prometheus Authorization 标头发送。不带 scheme 前缀的 base64 值可能会被重定向到授权页面,而不是返回 Prometheus JSON。

在能够访问返回地址的网络位置上,在安装插件之前先验证凭证:

curl --insecure --silent --show-error --fail \
  -H "Authorization: $prometheus_auth" \
  --get --data-urlencode 'query=up' \
  "${prometheus_address%/}/api/v1/query"

成功的响应会包含 "status":"success" 和一个 Prometheus JSON data 对象。HTML 页面、登录页面或授权重定向都不是有效响应。

安装集群插件

  1. 从 Customer Portal 获取 Alauda Build of HAMi-WebUI,并将集群插件上传到 ACP。

  2. 在 ACP 中,依次转到 Administrator -> Marketplace -> Cluster Plugins,切换到目标集群,并部署 Alauda Build of HAMi-WebUI

  3. 填写插件表单:

    字段
    Prometheus Address监控 Feature 返回的地址。
    Prometheus Auth完整的 Basic <base64(username:password)> Authorization 值。
    NodePort Enabled可选。在环境需要且网络策略允许时,启用直接节点访问。
    Port Number30000 到 32767 范围内的空闲 NodePort;表单通常默认使用 30300
  4. 等待 WebUI pod 变为 Ready:

    kubectl get pods -n cpaas-system | grep hami-webui

访问 HAMi-WebUI

当平台访问可用时,请使用 ACP 路由:

{platform-url}/clusters/{cluster-name}/hami-webui

启用 NodePort 后,查找服务端口和可访问的节点地址:

kubectl get svc -n cpaas-system | grep hami-webui
kubectl get nodes -o wide

使用选定的主机端口打开直接任务页面:

http://<node-ip>:<node-port>/admin/vgpu/task/admin

验证 Prometheus 查询路径

对于 NodePort 部署,查询页面所使用的相同 WebUI 后端端点:

hami_webui_url=http://<node-ip>:<node-port>

curl --silent --show-error --fail \
  -H 'Content-Type: application/json' \
  --data '{"query":"up"}' \
  "${hami_webui_url}/api/vgpu/v1/monitor/query/instant-vector"

预期响应是一个带有 data 数组的 JSON 对象,例如 {"data":[...]}。HTTP 523、VGPU_DOMAIN_ERROR,或包含 HTML 文档的错误都表示 WebUI 后端没有收到有效的 Prometheus API 响应。请参阅 故障排除

后续步骤