HAMi AI Platform Chart 0.21.2
发布时间:2026-10-16(UTC)
本版将后端升级至 v0.15.1,使 Chart 0.21.1 的站点域名配置在默认后端镜像中生效。默认 UI v0.12.1 与新版工作负载模板接口存在 GPU 资源格式不匹配,影响页面中的 GPU 工作负载创建、复制和编辑。该问题已在 Chart 0.21.3 的默认 UI v0.13.0 中修复;依赖这些操作的环境应避免本版默认组件组合,并在升级前查阅修复版的适用范围与版本状态。
| 版本 | 比较基线 | 本版 |
|---|---|---|
| Chart | 0.21.1 | 0.21.2 |
| appVersion | 0.15.0 | 0.15.1 |
| API Server | v0.15.0 | v0.15.1 |
| Controller Manager | v0.15.0 | v0.15.1 |
| 数据库迁移镜像 | v0.15.0 | v0.15.1 |
| UI | v0.12.1 | v0.12.1 |
数据库迁移容器仅在启用认证且 auth.storeBackend=sqlite 时运行。
HAMi Enterprise 兼容性
以下为本版相关接口与协议的最低配套版本。资源池为可选功能,其门槛不自动成为平台基础运行门槛;这些结论不替代具体硬件环境验收。
| 功能或使用场景 | 最低可用 HAMi Enterprise 版本 | 本版配套要求与升级结论 |
|---|---|---|
| 读取已分配设备的四字段注解,含多容器空槽;NVIDIA、AMD、Ascend、Iluvatar、AWS Neuron、Enflame vGPU、Alibaba PPU | v2.9.0-rc0 | 仅约束分配记录读取。本版修复平台解析,无需为此升级已有匹配协议的 Enterprise;不代表这些厂商的全部调度、隔离或监控能力均由此版本覆盖。 |
| NVIDIA/Ascend 常规业务容器资源池管理、命名空间授权、配额、显式选池及 binpack/spread 自动选池 | v2.9.0-rc0 | 独立 CRD Chart 最低 0.4.2、RPM 应用最低 v0.0.1;默认组件正确的 RPM Chart 最低 0.0.5。RPM Chart 0.0.4 只有显式改用正确的 RPM 镜像才满足条件。上述 RPM 制品组合按 amd64 确认。 |
| NVIDIA 业务容器前有不申请 GPU 的初始化容器 | v2.9.0-rc1 | 使用 scheduler.useDownward=true。更早版本的容器索引处理不满足此模板;启用资源池时另满足上一行独立组件要求。 |
| NVIDIA 初始化容器申请 GPU,包括仅初始化容器申请 GPU | v2.10.0-r0 | 使用 scheduler.useDownward=true,需要完整的初始化容器注解与插件配套。启用资源池时另满足上述 RPM/CRD 要求。 |
| NVIDIA 资源池内使用 GPU mutex、numa 或组合策略 | v2.10.0-r0 | 配套上述 RPM/CRD。这些是池内 GPU 策略,与 RPM 的池间 binpack/spread 自动选池不同。 |
| HCU 资源池管理与调度接口 | v2.10.0-r3 | CRD Chart 最低 0.4.2、RPM 应用最低 v0.0.2、默认 RPM Chart 最低 0.0.6;HCU device plugin 最低 v3.0.0,启用 RESOURCE_REGISTER_STRATEGY=hami。插件制品按 amd64 确认。旧 DCU 命名协议不能替代 HCU 协议。 |
HAMi Enterprise 的 rc 后缀不代表测试版或预发布版。v2.9.0-rc0 和 v2.9.0-rc1 的旧镜像当前不可拉取,新部署需选择满足上述接口条件且制品可取得的版本。最低版本不构成对所有后续版本无回归的保证。
资源池要求 Kubernetes 1.30 或更高版本及 HAMi extender 模式,不适用于 DRA。表中的 Ascend 资源池用法限定常规业务容器;Ascend 或 NVIDIA 非 Downward 模式的仅初始化容器设备请求不在已确认组合内,当前正式发布中的设备加锁路径仍未覆盖该条件。
软件变更
- 工作负载域名路由修复。 控制平面的 Flow 工作负载路由(包括 Jupyter、VS Code)、vLLM Demo 和 CloudShell 读取
gateway.hostnames,避免工作负载路径落入平台 UI 的域名路由而显示 403 页面。vLLM Demo 不再固定使用dashboard.hami.run。成员集群的工作负载路由不继承控制平面域名。 - 主监听器选择修复。 配置了站点域名的 Flow 和 CloudShell 路由优先绑定 Gateway 的第一个 HTTPS 监听器,没有 HTTPS 时使用第一个 HTTP 监听器,避免更具体的工作负载路径绕过 HTTP 到 HTTPS 的跳转。无法读取 Gateway 或找不到合适监听器时返回错误。
- Flow 模板扩展。 API 的
spec.template改为 Kubernetes 原生 PodTemplateSpec 结构,可保留初始化容器、亲和性、安全上下文等字段。资源请求与限制使用 Kubernetes 原生的资源名到数量映射;旧客户端需要调整请求结构。默认 UI 的相关限制见「已知问题」。 - 工作负载保存前校验。 创建或更新 Deployment 类型的 Flow 时,先向目标集群对最终 Deployment 执行 dry-run 校验,再保存 Flow,提前返回无效模板、资源冲突或准入错误。使用通用临时卷的请求需要
storage.manage权限。启用插件时,首个业务容器不接受自定义readinessProbe、livenessProbe或lifecycle,初始化容器名称init-container保留给平台使用。 - 设备分配信息解析修复。 正确处理 HAMi 多容器设备分配注解中的空容器和空设备槽,避免分隔符混入设备 UUID,影响分配信息读取。
Chart 变更
Chart 的配置项、模板和依赖相对 0.21.1 没有新增变化;本版更新 Chart 元数据及默认后端、迁移镜像版本。UI 镜像保持不变。
已知问题
| 问题 | 影响范围 | 规避方法 | 修复版本 |
|---|---|---|---|
| 默认 UI 提交的 GPU 资源结构与后端模板接口不匹配 | UI v0.12.1 的工作负载表单启用 GPU 后,将加速器资源放在 resources.limits.resources 对象中。API Server v0.15.1 按原生 Kubernetes 资源数量解析,创建、复制或编辑请求会被拒绝。 | 本版 UI 内无已验证的规避方法。升级到 Chart 0.21.3 的默认组件组合,并确认 UI 镜像未被固定为旧版;升级前查阅该版状态与验证范围。 | Chart 0.21.3,默认 UI v0.13.0 |
该问题依据已发布镜像对应源码和本地请求解析复现确认,尚未完成浏览器或集群端到端验证。影响范围限于 GPU 工作负载表单提交,不涉及该资源格式的 CPU-only 请求和已有 Pod 的运行不在此问题范围内。
升级说明
- 按上述场景核对配套版本。只采用本版注解解析修复且配套已满足协议时,无需升级 Enterprise;新采用初始化容器模板或资源池高级策略时,先满足对应主版本条件。
- 启用资源池时,先安装 CRD Chart,再准备表中 Enterprise 和对应设备插件,最后安装 RPM 并更新平台。RPM 的
hami.existingConfigMap指向同命名空间中现有调度器设备配置,需启用 RPM webhook 和控制器;Ascend 在 RPM Chart 0.0.4/0.0.5 设置hami.ascendEnabled=true,0.0.6 改为devices.ascend.enabled=true;HCU 在 0.0.6 设置devices.hygon.enabled=true;全局选池设置还需其运行时 ConfigMap。设备配置变化后同步更新 RPM。保留 RPM Chart 0.0.4 时,显式设置image.repository=ghcr.io/dynamia-ai/resource-pool-manager、image.tag=v0.0.1;直接采用默认组合时从 RPM Chart 0.0.5 起选用,HCU 从 0.0.6 起选用。 - 从 Chart 0.21.1 升级前,先评估上述 UI 问题。自定义 API 客户端需同步更新
spec.template:例如将limits.resources["nvidia.com/gpu"]移到limits["nvidia.com/gpu"];requests同样使用扁平资源映射。直接使用 gRPC 的客户端需按新版 API 定义重新生成客户端并调整模板构造。 - 如覆盖了镜像,核对
apiserver.image.tag、controllerManager.image.tag和auth.image.tag,三者目标值均为v0.15.1。ui.image.tag的默认值仍为v0.12.1;固定旧后端镜像会跳过本次修复。镜像地址由各组件的registry、repository、tag拼接,global.imageRegistry覆盖 registry。 - 使用域名入口时,设置
gateway.hostnames为 DNS 名称列表,不带协议、端口和路径;首项使用具体域名,HTTPS 证书须覆盖配置的域名。默认空列表不限制域名。API Server 与 Controller Manager 更新后读取该配置;Flow 控制器会在协调时更新已有路由。既有 CloudShell 和 vLLM Demo 路由不会因本次升级自动改写,需要重新创建相关会话或 Demo 后生效。 - 直接管理后端进程环境变量的部署,将原有
GATEWAY_ENDPOINT配置迁移为GATEWAY_HOSTNAMES,多个域名用逗号分隔;首项用于控制平面集群访问地址。工作负载路径前缀仍使用GATEWAY_BASE_URL。 - API 创建和更新 Flow 现在依赖目标集群完成 Deployment dry-run;检查目标集群连接、操作权限及准入服务。授权失败、限流或准入超时会阻止保存,不应按无效模板处理。启用通用临时卷或插件的自定义模板需满足前述权限与字段限制。
- 本版没有新增数据库迁移脚本或 CRD schema 变更。SQLite 部署仍在 API Server 启动前执行迁移容器;保持现有数据持久化配置并在升级前备份数据。Helm 回滚不等于数据库数据恢复。
查看Chart 与 appVersion 对应关系或软件中心。
Values 说明
以下参数说明取自 Chart 0.21.2 发布包随附的 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.1" | 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.1" | 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.1" | 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 | [] | List of site hostnames (DNS names or wildcard names such as *.example.com, without scheme, port, or path). Applied to UI/API routes and passed to controller-manager and apiserver as GATEWAY_HOSTNAMES for control-plane workload, vLLM demo, and CloudShell HTTPRoutes. Member-cluster workload routes do not inherit the control-plane site hostnames. An empty list leaves site routes unrestricted by hostname. The first entry also supplies the control-plane cluster gateway address for generated access URLs; use a concrete hostname first. HTTPS certificates must cover these names. |
| 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 |