HAMi AI Platform Chart 0.21.0
发布时间:2026-09-30(UTC)
本版将后端升级至 v0.15.0、UI 升级至 v0.12.1,增加资源池管理、原生工作负载 API 和 HCU 监控,并调整计量配置与存量工作负载的操作规则。默认后端仍有工作负载网关路由问题;该问题在 Chart 0.21.2 修复,升级目标建议采用已确认正式可用的 Chart 0.21.3。
| 版本 | 比较基线 | 本版 |
|---|---|---|
| Chart | 0.20.6 | 0.21.0 |
| appVersion | 0.14.2 | 0.15.0 |
| API Server | v0.14.2 | v0.15.0 |
| Controller Manager | v0.14.2 | v0.15.0 |
| 数据库迁移组件(启用 SQLite 认证存储时) | v0.14.2 | v0.15.0 |
| UI | v0.11.1 | v0.12.1 |
比较基线为本版之前最近的正式 Chart 0.20.6。下述软件变化以两端实际默认镜像为准。
HAMi Enterprise 兼容性
下表按平台实际使用的接口区分最低配套版本。资源池、厂商插件、监控组件分别安装;单项指标或可选功能的门槛不构成整个平台的统一最低版本。
| 功能或使用场景 | 最低可用 HAMi Enterprise 版本 | 配套要求与适用范围 |
|---|---|---|
| NVIDIA HAMi-core 单个常规容器的设备分配、调度容量、已分配资源与工作负载使用量监控(不含 init container) | v2.9.0-rc0 | 配套 Enterprise 调度器、NVIDIA 设备插件与 vGPU Monitor,并采集调度器和设备插件监控端点。 |
| NVIDIA 显存超卖倍数历史趋势 | v2.10.0-r0 | 调度器提供 hami_gpu_memory_oversell_factor。这里是倍数指标的最低版本,不是显存超卖运行能力的首次版本。 |
| AMD 已分配工作负载的容器核心百分比 | v2.10.0-r0 | 已注册并由 HAMi 分配的 AMD 设备,调度器将物理 CU 数转换成 hami_vgpu_core_allocated_ratio 百分比;物理设备使用量仍依赖厂商监控组件。 |
| NVIDIA/Ascend 常规业务容器资源池:设备归属、命名空间绑定、CPU/内存与设备配额、显式或 binpack/spread 选池 | v2.9.0-rc0 | CRD Chart 0.4.2、Resource Pool Manager 应用 v0.0.1;默认安装使用 RPM Chart 0.0.5。extender 模式、Kubernetes >=1.30.0-0,设备已注册;最低组合对应 amd64 制品。 |
| NVIDIA 池内 GPU mutex/numa 或逗号组合策略 | v2.10.0-r0 | 使用上述 CRD 与 RPM 配套;区别于 RPM 的 binpack/spread 选池策略。 |
| Ascend soft vNPU Turbo 与任务优先级 | v2.9.0-rc0 | Ascend 插件与 libvnpu 均为 v1.4.2(默认插件 Chart 0.2.2),启用 devices.ascend.hamiVnpuCore=true 或对应节点配置。Turbo 限可信、独占算力任务,每次申请一张 vNPU 和 100% 核心,保留显存限制;切换需重建 Pod。 |
| Ascend soft vNPU 运行时显存自动扩容 | v2.10.0-r2 | 插件/libvnpu v1.4.2、默认插件 Chart 0.2.2,Kubernetes >=1.30、scheduler.admissionWebhook.enabled=true、关闭 DRA、使用 hami-core,每业务容器一张 vNPU。只扩不缩,Pod 声明不变;审批拒绝或超时可能导致 OOM。 |
| Ascend910C 完整偶数芯片模块对分配 | v2.10.0-r0 | Dynamia Ascend 设备插件最低 v1.3.0,匹配机型配置与驱动。此处是模块配对分配下限;软切分高级能力另按上述条件选择配套。 |
| 天数智芯单个常规容器、单卡 vGPU 的资源分配与工作负载使用量 | v2.9.0-rc0 | 厂商 GPU Manager Chart 最低 3.0.7,默认镜像 v3.0.7-vcuda-v4.4.0-3,匹配 CoreX/vCUDA。显存资源单位为 256 MiB;平台启动前处理要求显式 Command、可写 CoreX 目录及厂商注入库。此下限不覆盖多卡切分或混合多容器场景。 |
| 天数智芯物理设备完整监控指标 | 不适用(独立 exporter 遥测) | 默认指标与标签协议需要 ix-exporter 最低 4.3.0,包含节点标签与错误指标;统一的 HAMi 设备清单和分配信息仍依赖对应调度配套。 |
| HCU 注册、分配及资源池 | v2.10.0-r3 | HCU 设备插件 v3.0.0,设置 RESOURCE_REGISTER_STRATEGY=hami;资源池另需 CRD Chart 0.4.2、RPM 应用 v0.0.2(默认 RPM Chart 0.0.6)、extender 模式及 Kubernetes >=1.30.0-0。最低组合对应 amd64 制品。 |
| HCU 物理设备与 Deployment 工作负载使用量监控 | 不适用(独立 exporter 遥测) | HCU exporter 最低 v3.0.0,配套 HCU DCGM 3.0.0,已确认 amd64 制品。工作负载曲线限 Deployment(含 Flow 生成的 Deployment),要求 CONNECT_K8S=true、kubelet 目录挂载、Pod 归属标签及 Deployment → ReplicaSet → Pod 指标链;启用本版 HCU 采集规则,保留指标名与标签;通过 HAMi 注册、分配 HCU 的条件另见上一行。 |
HAMi Enterprise 的 rc 后缀不代表测试版或预发布版。v2.9.0-rc0 的旧镜像当前不可取得,新部署需选择满足接口条件且制品可取得的版本;镜像可获取性不改变已确认的最低接口版本。
Ascend 插件/libvnpu v1.4.2 于 2026-10-09 正式发布,晚于本版 Chart。本表包含这类发布后才交付的配套版本,它们说明使用相应能力所需的最低组合,不表示 Chart 0.21.0 发布当天已具备全部配套,也不代表平台会自动安装这些组件。
软件变更
资源池与资源视图
- 增加资源池页面和管理接口,可查看池内设备、绑定命名空间、设置 CPU/内存与设备配额,并在工作负载中选择和查看所属资源池。选池支持显式指定及 binpack/spread;实际准入和资源分配依赖上表中的 RPM 与 Enterprise 配套。
- 区分设备物理容量与调度容量,补充已分配、已使用、剩余资源及比例,调整节点超卖和趋势图的显示。NVIDIA 超卖倍数趋势、AMD 核心百分比分别受对应指标版本约束。
- 设备许可统计纳入已注册但未获许可的设备,页面区分激活与未激活状态。补充 NVIDIA、Ascend、HCU 工作负载 Pending 原因诊断,帮助区分资源不足与配套条件问题。
原生工作负载 API 与存量 Flow 管理
- 增加原生 Workloads API,可校验、创建、查询和删除 Deployment、StatefulSet、Job、LeaderWorkerSet,并随 YAML 提交同命名空间的 Service、PVC、ConfigMap、Secret。LeaderWorkerSet 仍需集群安装对应 CRD 和控制器。平台通过
kantaloupe.dynamia.io/observed: "true"标签纳管,资源生命周期由 Kubernetes 或对应控制器负责。 - 原生创建接口先执行服务端 dry-run;批量创建不提供跨资源事务,部分成功时保留已创建对象。默认 UI
v0.12.1仍使用 KantaloupeFlow 表单,本版原生 YAML 能力通过 API 提供。 - 新建表单 Flow 自动记录
kantaloupe.dynamia.io/creation-source: form-v1。存量 Flow 缺少该标记时,平台拒绝编辑、暂停/恢复、重启和显存调整,需要按升级说明核对来源后补录。 - 更新 Flow 必须携带读取到的
metadata.uid和metadata.resourceVersion,冲突后需刷新对象重试。控制器严格校验子资源的 controller ownerReference,避免接管同名但不属于该 Flow 的资源。 - 停止将原生 Deployment 自动转换成新 Flow。已有 Flow 的 HPA 回写要求 Flow 未暂停,且 Deployment 已同步当前 Flow 版本;原生资源通过新的 Workloads API 接入。
计量与价值报告
- 计量设置使用新的版本化存储,写入时增加修订号冲突检查。价格保留原始币种和生效信息,按目标币种展示,改进换算精度和并发更新处理。旧设置不会自动迁移,升级前需备份并重新配置。
- 投资金额支持区分“未提供”与“显式清零”:未提供时保留已有金额,显式设置为
0时清除。价值报告增加按每台服务器 8 张 GPU 口径计算的等效节省服务器数量。 - 集群级能耗报告可读取 NVIDIA DCGM exporter 的
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION,页面展示 GPU 板卡能耗,API 另返回gpuEnergyCoverageRatio采样覆盖比例。需要采集对应指标;这不是整机或机房用电量,也不代表其他厂商已提供相同能耗数据。
厂商接入与日常操作
- 增加天数智芯 vGPU 的工作负载资源处理与启动前检查,支持其型号化资源键和显存单位;配套版本见兼容矩阵。
- Ascend 表单增加 Turbo、显存自动扩容和任务优先级等配置入口,后端传递对应参数;这些入口需满足各自插件与 Enterprise 配套条件,不能只升级平台后直接启用。软切分与静态算力份额配置在比较基线中已存在。
- 增加 HCU 资源与监控接入,将物理设备及工作负载使用量纳入平台展示。工作负载曲线依赖 exporter 的 Pod 关联信息及 Deployment → ReplicaSet → Pod 归属链,覆盖 Deployment 和 Flow 生成的 Deployment;本版这组曲线不关联 Job、StatefulSet 或 LeaderWorkerSet,也不能用整卡使用量代替。
- 成员集群未安装 Gateway API 时,可接入并管理不要求网关网络的工作负载。SSH 仍需 Gateway/TCPRoute,Jupyter、VSCode 仍需 Gateway/HTTPRoute;控制面集群的 Gateway 要求不变。
- 集群列表的实时监控补充设置超时预算,监控响应较慢时仍返回集群基本信息。vLLM 演示保留用户编辑的工作负载字段,并改进执行进度和结果展示;默认界面仍限定 NVIDIA 集群。
Chart 变更
- 默认 API Server、Controller Manager、认证数据库迁移镜像由
v0.14.2更新为v0.15.0,UI 由v0.11.1更新为v0.12.1。 - 增加
monitoring.vendorServiceMonitor.enableHygonServicemonitor,默认false。启用后采集 HCU exporter,并将物理温度、功耗、显存、核心使用量与 vHCU 工作负载指标转换为平台监控指标。 - 多个厂商 ServiceMonitor 的发现范围增加
hami-system;HCU ServiceMonitor 选择monitoring或hami-system中的 Service。PPU 采集端口名由monitorport调整为metrics,现有 Service 需匹配。 - Prometheus 联邦采集加入 HCU exporter,并在启用 HCU 时加入 Pod/ReplicaSet 归属指标,以关联工作负载。Ascend 监控规则将 exporter 的
Ascend910-Ascend-V1型号映射为平台的Ascend910C。 - 本次 Chart 包差异未新增 CRD、RBAC 或 SQLite 数据库迁移脚本。上述资源池和原生工作负载的软件变化来自实际后端镜像升级;启用相关功能时仍需检查外部 CRD 与配套服务是否齐备。
已知问题
| 问题 | 影响范围 | 规避方法 | 修复版本 |
|---|---|---|---|
| 工作负载路由未正确继承站点域名 | 默认后端 v0.15.0 生成的 Flow 和 CloudShell 路由缺少站点主机名,vLLM 演示路由仍固定为 dashboard.hami.run。使用自定义站点域名时,访问 Jupyter 等工作负载路径可能落到平台页面并显示 403,演示路由也可能无法按当前域名访问。 | 采用修复后的默认后端。建议直接评估已确认正式可用的 Chart 0.21.3;0.21.1 未更新后端,0.21.2 虽修复网关但另有 UI GPU 表单问题。 | Chart 0.21.2,默认后端 v0.15.1 |
上述网关问题根据已发布默认镜像对应源码和后续修复确认,具体是否触发还取决于域名、Gateway 与路由配置。此处未将源码确认等同于本版完整集群验收。Chart 0.21.2 的 UI GPU 资源格式问题不适用于本版默认的 v0.12.1 UI 与 v0.15.0 后端组合。
升级说明
升级前核对组件与配套
- 核对
apiserver.image.tag、controllerManager.image.tag、auth.image.tag、ui.image.tag,避免旧 values 继续固定比较基线镜像。使用私有仓库时,global.imageRegistry覆盖组件的image.registry,应同步选定版本的所有组件镜像。若直接升级到0.21.3,应采用该版本页列出的组件组合。 - 启用资源池前,先安装对应 CRD,准备 Enterprise 调度器和设备插件,再安装 RPM。RPM 的
hami.existingConfigMap必须指向调度器实际使用且包含device-config.yaml的 ConfigMap,运行时选池配置须可读写;设备配置变化后更新 RPM。 - 最早 NVIDIA/Ascend 资源池组合优先使用 RPM Chart
0.0.5。若使用0.0.4,需将image.repository改为ghcr.io/dynamia-ai/resource-pool-manager、image.tag改为v0.0.1。Ascend 在 RPM Chart0.0.5使用hami.ascendEnabled=true,在0.0.6使用devices.ascend.enabled=true。HCU 在0.0.6使用devices.hygon.enabled=true,并配置插件的RESOURCE_REGISTER_STRATEGY=hami。这些最低组合不适用于 DRA 模式。 - HCU 监控需同时启用平台监控、厂商 ServiceMonitor 及 HCU 开关。HCU exporter 官方部署清单使用
kube-system,本版默认发现范围不包含该命名空间;需部署或调整至monitoring/hami-system,保留 Service 的app.kubernetes.io/name=hcu-exporter标签和metrics端口名。确认成员集群的联邦采集包含 HCU 与 Pod 归属指标。
迁移存量 Flow 与客户端
升级前按成员集群导出存量 Flow,检查来源及其 Deployment 归属。使用本版配套迁移脚本 hack/migrate_kantaloupeflow.py 的 plan、apply、verify 流程:先生成并审核清单,执行默认的服务端 dry-run,确认后才以 --execute 补录来源标记,最后逐对象验证。需要 Python 3.9+、kubectl 和目标集群相应读写权限;从交付方取得与本版匹配的脚本及使用说明。
- 同名 Deployment 创建早于 Flow,且 controller ownerReference 精确指向该 Flow 的对象按历史自动转换对象处理,不补录为表单来源;其他无标记对象按迁移规则列为旧表单候选,仍需审核清单。仅凭 Kubernetes 元数据无法完整还原历史来源,不要给所有 Flow 批量添加标记。
- 迁移脚本只补录顶层来源 annotation,不修改 spec 或子资源归属。保留每个对象的 UID、集群身份和执行结果;部分失败时已成功项不会自动回滚,核对后重试未完成项。
- 自定义 Flow 客户端需在更新时保留 UID、resourceVersion,并保证 namespace 一致。遇到
Aborted应重新读取后再编辑,不要绕过并发检查。 - 检查历史 Deployment、Service、Route、ConfigMap 的 ownerReference;缺少或错误的归属可能阻断同步,来源迁移不会自动接管它们。原生工作负载应改用 Workloads API,不依赖自动生成 Flow。
迁移计量设置与保留回退资料
本版将计量 ConfigMap 从 kantaloupe-metering 切换为 kantaloupe-metering-v2,新存储使用 schemaVersion 2,不会自动读取或迁移旧设置和价格。升级前备份旧 ConfigMap 及币种、投资金额、单价和生效时间;升级后分别恢复全局计量设置和各型号价格,核对币种、汇率及投资金额。调用设置 API 的自定义客户端需先读取修订号,再提交 expected_revision,处理并发冲突。
价格页面保存时使用当前时间作为生效时间,因此在页面重填当前单价不会恢复历史价格;早于新存储首条价格的计费窗口可能无法定价。需要保留历史计费连续性时,通过价格更新 API 按备份逐条传入原 effective_at,重建各型号的价格修订,并核对币种、汇率、金额和历史账单。该 API 接受原生效时间,但本版未提供自动迁移流程;完成回填和核验前,不应将页面重填视为历史价格迁移完成。
保留旧 ConfigMap、原 Helm values 和来源迁移清单,以便回退时核对。Helm 回退不会把新版计量配置转换回旧版,也不会自动撤销已补录的 Flow 来源标记。认证数据库迁移镜像虽随应用升级,本次两个后端版本之间未增加 SQLite 迁移脚本;计量配置迁移与认证数据库迁移是不同事项。
查看Chart 与 appVersion 对应关系或软件中心。
Values 说明
以下参数说明取自 Chart 0.21.0 发布包随附的 README,保留原文。默认配置以该版本的 values.yaml 为准。
展开参数表
| Key | Type | Default | Description |
|---|---|---|---|
| apiserver.affinity | object | {} | apiserver affinity settings |
| apiserver.clusterAPIBurst | int | 100 | Burst to use while talking with cluster kube-apiserver |
| apiserver.clusterAPIQPS | int | 50 | QPS to use while talking with cluster kube-apiserver |
| apiserver.image.pullPolicy | string | "IfNotPresent" | kantaloupe image pull policy |
| apiserver.image.pullSecrets | list | [] | Specify docker-registry secret names as an array |
| apiserver.image.registry | string | "ghcr.io" | kantaloupe image registry |
| apiserver.image.repository | string | "dynamia-ai/kantaloupe-apiserver" | kantaloupe image repository |
| apiserver.image.tag | string | "v0.15.0" | kantaloupe image tag (immutable tags are recommended) |
| apiserver.labels | object | {} | apiserver labels |
| apiserver.leaderElection.enabled | bool | true | Enable apiserver leader election for auth singleton bootstrap when auth.storeBackend=crd |
| apiserver.leaderElection.leaseDuration | string | "15s" | Lease duration for apiserver leader election |
| apiserver.leaderElection.renewDeadline | string | "10s" | Renew deadline for apiserver leader election |
| apiserver.leaderElection.resourceNamespace | string | "" | Namespace of the Lease object; empty means use the release namespace |
| apiserver.leaderElection.retryPeriod | string | "2s" | Retry period for apiserver leader election |
| apiserver.livenessProbe.enabled | bool | false | Enable livenessProbe on apiserver containers |
| apiserver.logLevel | int | 4 | apiserver glog verbosity level (0=minimal, 4=info, 5=debug) |
| apiserver.meteringGRPCAddress | string | "" | Optional upstream metering gRPC service address. Leave empty to disable metering APIs |
| apiserver.nodeSelector | object | {} | apiserver node labels for pod assignment |
| apiserver.podAnnotations | object | {} | apiserver pod annotations |
| apiserver.podLabels | object | {} | apiserver pod labels |
| apiserver.prometheusAddr | string | "" | Prometheus server address for apiserver metrics querying |
| apiserver.readinessProbe.enabled | bool | false | Enable readinessProbe on ui containers |
| apiserver.replicaCount | int | 1 | apiserver target replica count |
| apiserver.resources | object | {} | apiserver resource requests and limits |
| apiserver.service.nodePort | int | 31800 | |
| apiserver.service.port | int | 8000 | |
| apiserver.service.type | string | "ClusterIP" | |
| apiserver.tolerations | object | {} | apiserver tolerations for pod assignment |
| auth.apiserverServiceAccountName | string | "" | ServiceAccount name of the kantaloupe-apiserver, used by the auth assignment admission webhook to validate the requester identity. Defaults to the release fullname. |
| auth.bootstrapAdminEmail | string | "[email protected]" | Bootstrap PlatformAdmin email address |
| auth.bootstrapAdminFullName | string | "Platform Administrator" | Bootstrap PlatformAdmin full name (display name) |
| auth.bootstrapAdminPassword | string | "admin12345" | Bootstrap admin password (plain text, dev only) |
| auth.bootstrapAdminUsername | string | "bootstrap-platform-admin" | Bootstrap PlatformAdmin username |
| auth.crdAuditWindowSize | int | 1000 | Max number of audit CRDs retained by the apiserver write path |
| auth.dbPath | string | "/data/kantaloupe/auth.db" | SQLite database path for auth data when auth.storeBackend=sqlite |
| auth.dryRun | bool | false | Allow requests without enforcing auth; inject bootstrap admin when no valid token is provided |
| auth.enabled | bool | true | Enable kantaloupe auth (JWT login, RBAC, audit) |
| auth.existingAuthSecret | string | "" | Name of an existing K8s Secret with keys "jwt-secret" and "bootstrap-admin-password" (use instead of plain-text values for production) |
| auth.image.pullPolicy | string | "IfNotPresent" | db-migrate image pull policy for sqlite backend |
| auth.image.registry | string | "ghcr.io" | db-migrate image registry for sqlite backend |
| auth.image.repository | string | "dynamia-ai/kantaloupe-db-migrate" | db-migrate image repository for sqlite backend |
| auth.image.tag | string | "v0.15.0" | db-migrate image tag for sqlite backend |
| auth.jwtSecret | string | "your-own-jwt-secret" | JWT signing secret (plain text, dev only) |
| auth.persistence.enabled | bool | false | Enable persistence using PVC for sqlite backend (PV is dynamically provisioned via cluster default StorageClass) |
| auth.persistence.existingClaim | string | "" | Name of an existing PVC to use for sqlite backend (if set, a new PVC will not be created) |
| auth.persistence.size | string | "1Gi" | PVC storage size for sqlite backend |
| auth.persistence.storageClass | string | "" | PVC storage class for sqlite backend (empty = use cluster default StorageClass for dynamic PV provisioning) |
| auth.storeBackend | string | "crd" | Auth store backend. Supported values: crd, sqlite |
| cloudtty.enabled | bool | true | |
| controlPlaneName | string | "control-plane" | |
| controllerManager.affinity | object | {} | controllerManager affinity settings |
| controllerManager.enablePromoteKantaloupeflowController | bool | false | Automatically create KantaloupeFlow CRs for existing GPU deployments in member clusters. |
| controllerManager.image.pullPolicy | string | "IfNotPresent" | kantaloupe image pull policy |
| controllerManager.image.pullSecrets | list | [] | Specify docker-registry secret names as an array |
| controllerManager.image.registry | string | "ghcr.io" | kantaloupe image registry |
| controllerManager.image.repository | string | "dynamia-ai/kantaloupe-controller-manager" | kantaloupe image repository |
| controllerManager.image.tag | string | "v0.15.0" | kantaloupe image tag (immutable tags are recommended) |
| controllerManager.labels | object | {} | controllerManager labels |
| controllerManager.livenessProbe.enabled | bool | false | Enable livenessProbe on controllerManager containers |
| controllerManager.metricsPort | int | 31001 | |
| controllerManager.nodeSelector | object | {} | controllerManager node labels for pod assignment |
| controllerManager.podAnnotations | object | {} | controllerManager pod annotations |
| controllerManager.podLabels | object | {} | controllerManager pod labels |
| controllerManager.prometheusAddr | string | "" | The Prometheus-compatible query endpoint for controller-manager. If empty, uses the default value from Go code. |
| controllerManager.readinessProbe.enabled | bool | false | Enable readinessProbe on controllerManager containers |
| controllerManager.replicaCount | int | 1 | controllerManager target replica count |
| controllerManager.resources | object | {} | controllerManager resource requests and limits |
| controllerManager.tolerations | object | {} | controllerManager tolerations for pod assignment |
| controllerManager.webhook.certDir | string | "/var/run/kantaloupe/webhook-certs" | |
| controllerManager.webhook.certName | string | "tls.crt" | |
| controllerManager.webhook.enabled | bool | true | |
| controllerManager.webhook.keyName | string | "tls.key" | |
| controllerManager.webhook.port | int | 9443 | |
| controllerManager.webhook.servicePort | int | 443 | |
| fullnameOverride | string | "kantaloupe" | String to fully override the fullname template |
| gateway.apiserverCors | object | {"allowCredentials":false,"allowHeaders":["authorization","content-type","accept","origin"],"allowMethods":["GET","POST","PUT","PATCH","DELETE","OPTIONS"],"allowOrigins":[],"enabled":false,"exposeHeaders":[],"maxAge":null} | Optional CORS policy attached only to the apiserver HTTPRoute (/apis) |
| gateway.apiserverCors.allowCredentials | bool | false | Whether credentialed cross-origin requests are allowed |
| gateway.apiserverCors.allowHeaders | list | ["authorization","content-type","accept","origin"] | Allowed request headers returned on CORS preflight responses |
| gateway.apiserverCors.allowMethods | list | ["GET","POST","PUT","PATCH","DELETE","OPTIONS"] | Allowed methods returned on CORS preflight responses |
| gateway.apiserverCors.allowOrigins | list | [] | Allowed browser origins for apiserver CORS; required when enabled |
| gateway.apiserverCors.enabled | bool | false | Enable Envoy Gateway SecurityPolicy-based CORS on the apiserver route |
| gateway.apiserverCors.exposeHeaders | list | [] | Response headers exposed to browser JavaScript |
| gateway.apiserverCors.maxAge | string | nil | Optional browser preflight cache max age in seconds |
| gateway.apiserverHostnames | list | [] | Dedicated external hostnames for direct apiserver access, separate from gateway.hostnames (the UI/site domain). When non-empty, a dedicated HTTPRoute routes these hosts to the apiserver; they must be covered by the HTTPS listener's TLS certificate. |
| gateway.className | string | "kantaloupe" | GatewayClass name |
| gateway.enabled | bool | true | Enable Gateway API resources |
| gateway.envoy | object | {"proxy":{"image":{"pullSecrets":[],"registry":"","repository":"","tag":""}},"service":{"ports":{"http":{"nodePort":30080},"https":{"nodePort":30443}},"type":"NodePort"}} | Envoy Gateway implementation details |
| gateway.envoy.proxy.image.pullSecrets | list | [] | Image pull secrets for Envoy proxy pods |
| gateway.envoy.proxy.image.registry | string | "" | Envoy proxy image registry |
| gateway.envoy.proxy.image.repository | string | "" | Envoy proxy image repository. When set without a tag, renders the EnvoyProxy imageRepository field. |
| gateway.envoy.proxy.image.tag | string | "" | Envoy proxy image tag. When set, renders a complete EnvoyProxy image reference. |
| gateway.envoy.service | object | {"ports":{"http":{"nodePort":30080},"https":{"nodePort":30443}},"type":"NodePort"} | Envoy service configuration |
| gateway.envoy.service.ports.http | object | {"nodePort":30080} | HTTP port configuration |
| gateway.envoy.service.ports.http.nodePort | int | 30080 | HTTP NodePort |
| gateway.envoy.service.ports.https | object | {"nodePort":30443} | HTTPS port configuration |
| gateway.envoy.service.ports.https.nodePort | int | 30443 | HTTPS NodePort |
| gateway.envoy.service.type | string | "NodePort" | Envoy service type (LoadBalancer or NodePort) |
| gateway.hostnames | list | [] | External hostnames for the Gateway |
| gateway.ipAddress | string | "" | Gateway IP address |
| gateway.listeners | list | [{"name":"http","port":80,"protocol":"HTTP"}] | Gateway listeners configuration |
| global.imagePullSecrets | list | [] | Global Docker image pull secrets |
| global.imageRegistry | string | "" | Global Docker image registry |
| hamiNamespace | string | "hami-system" | |
| hook.image.pullPolicy | string | "IfNotPresent" | CRD hook image pull policy |
| hook.image.pullSecrets | list | [] | Specify docker-registry secret names as an array |
| hook.image.registry | string | "ghcr.io" | CRD hook image registry |
| hook.image.repository | string | "cloudtty/cloudshell" | CRD hook image repository |
| hook.image.tag | string | "v0.8.9" | CRD hook image tag (immutable tags are recommended) |
| installCRDs | bool | true | define flag whether to install CRD resources |
| monitoring.enabled | bool | true | |
| monitoring.hamiServiceMonitor.enabled | bool | true | |
| monitoring.serviceMonitorLabels | object | {} | Labels added to ServiceMonitor and PrometheusRule resources for discovery by Prometheus-compatible operators. When empty, defaults to release: prometheus; providing any labels replaces that fallback. The built-in app, role, and control-plane labels cannot be overridden. |
| monitoring.vendorServiceMonitor.enableAMDServiceMonitor | bool | false | Enable AMD GPU Operator exporter discovery and AMD recording rules in the control plane. Required for monitoring AMD devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enableAlibabaPPUServicemonitor | bool | false | Enable Alibaba PPU exporter discovery and Alibaba PPU recording rules in the control plane. Required for monitoring Alibaba PPU devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enableAscendServicemonitor | bool | false | Enable Ascend exporter discovery and Ascend recording rules in the control plane. Required for monitoring Ascend devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enableEnflameServicemonitor | bool | false | Enable Enflame GCU exporter discovery and Enflame recording rules in the control plane. Required for monitoring Enflame devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enableHygonServicemonitor | bool | false | Enable HCU exporter discovery and Hygon device recording rules in the control plane. Required for monitoring Hygon devices in local or member clusters. Discovers hcu-exporter in the monitoring namespace. |
| monitoring.vendorServiceMonitor.enableIluvatarServicemonitor | bool | false | Enable Iluvatar ix-exporter and vgpu-manager discovery and Iluvatar recording rules in the control plane. Required for monitoring Iluvatar devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enableMetaxServicemonitor | bool | false | Enable MetaX exporter discovery and MetaX recording rules in the control plane. Required for monitoring MetaX devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enableNvidiaServicemonitor | bool | true | Enable NVIDIA exporter discovery and NVIDIA recording rules in the control plane. Required for monitoring NVIDIA devices in local or member clusters. |
| monitoring.vendorServiceMonitor.enabled | bool | true | Create vendor ServiceMonitor templates and recording rules for enabled vendors. |
| mpu.enabled | bool | false | |
| mpu.image.pullPolicy | string | "IfNotPresent" | MPU image pull policy |
| mpu.image.pullSecrets | list | [] | |
| mpu.image.registry | string | "ghcr.io" | |
| mpu.image.repository | string | "dynamia-ai/mpu" | |
| mpu.image.tag | string | "dev-ubuntu24.04" | |
| nameOverride | string | "" | String to partially override the fullname template (will maintain the release name) |
| ui.affinity | object | {} | ui affinity settings |
| ui.apiBackendURL | string | "" | Optional backend address for UI API requests. Leave empty to use same-origin requests |
| ui.forceChinese | bool | false | Force UI to display Chinese language |
| ui.image.pullPolicy | string | "IfNotPresent" | kantaloupe image pull policy |
| ui.image.pullSecrets | list | [] | Specify docker-registry secret names as an array |
| ui.image.registry | string | "ghcr.io" | kantaloupe image registry |
| ui.image.repository | string | "dynamia-ai/kantaloupe-ui" | kantaloupe image repository |
| ui.image.tag | string | "v0.12.1" | kantaloupe image tag (immutable tags are recommended) |
| ui.labels | object | {} | ui labels |
| ui.livenessProbe.enabled | bool | false | Enable livenessProbe on ui containers |
| ui.nodeSelector | object | {} | ui node labels for pod assignment |
| ui.podAnnotations | object | {} | ui pod annotations |
| ui.podLabels | object | {} | ui pod labels |
| ui.readinessProbe.enabled | bool | false | Enable readinessProbe on ui containers |
| ui.replicaCount | int | 1 | ui target replica count |
| ui.resources | object | {} | ui resource requests and limits |
| ui.service.nodePort | int | 31300 | |
| ui.service.port | int | 80 | |
| ui.service.type | string | "ClusterIP" | |
| ui.tolerations | object | {} | ui tolerations for pod assignment |