HAMi AI Platform Chart 0.21.0
Release date: 2026-09-30 (UTC)
This release upgrades the backend to v0.15.0 and the UI to v0.12.1, adds resource-pool management, a native workload API, and HCU monitoring, and changes metering configuration and operations for existing workloads. The default backend still has a workload gateway-routing issue. It is fixed in Chart 0.21.2; the recommended upgrade target is the confirmed generally available Chart 0.21.3.
| Component | Comparison baseline | This release |
|---|---|---|
| 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 |
| Database migration component (when SQLite auth storage is enabled) | v0.14.2 | v0.15.0 |
| UI | v0.11.1 | v0.12.1 |
The comparison baseline is the latest generally available Chart before this release, 0.20.6. The software changes below are based on the actual default images at both versions.
HAMi Enterprise compatibility
The table distinguishes minimum companion versions by the interfaces used by the platform. Resource pools, vendor plugins, and monitoring components are installed separately; a threshold for one metric or optional feature is not a uniform minimum for the entire platform.
| Feature or scenario | Minimum HAMi Enterprise version | Companion requirements and scope |
|---|---|---|
| NVIDIA HAMi-core device allocation, scheduling capacity, allocated resources, and workload usage monitoring for a single regular container (excluding init containers) | v2.9.0-rc0 | Use the Enterprise scheduler, NVIDIA device plugin, and vGPU Monitor; scrape the scheduler and device-plugin monitoring endpoints. |
| Historical trend for NVIDIA GPU memory oversell factor | v2.10.0-r0 | The scheduler exposes hami_gpu_memory_oversell_factor. This is the minimum for the factor metric, not the first version with GPU memory oversell runtime support. |
| Container-core percentage for an allocated AMD workload | v2.10.0-r0 | For registered AMD devices allocated by HAMi, the scheduler converts physical CU count into the hami_vgpu_core_allocated_ratio percentage. Physical-device utilization still depends on the vendor monitoring component. |
| Resource pools for regular NVIDIA/Ascend workloads: device ownership, namespace binding, CPU/memory and device quotas, explicit or binpack/spread pool selection | v2.9.0-rc0 | CRD Chart 0.4.2, Resource Pool Manager (RPM) application v0.0.1; use RPM Chart 0.0.5 by default. Requires extender mode, Kubernetes >=1.30.0-0, and registered devices. The minimum combination is confirmed for amd64 artifacts. |
| GPU mutex/NUMA or comma-combination strategies within an NVIDIA pool | v2.10.0-r0 | Use the CRD and RPM components above. These are within-pool GPU strategies, distinct from RPM binpack/spread pool selection. |
| Ascend soft-vNPU Turbo and task priority | v2.9.0-rc0 | Ascend plugin and libvnpu v1.4.2 (default plugin Chart 0.2.2); enable devices.ascend.hamiVnpuCore=true or the corresponding node configuration. Turbo is limited to trusted, exclusive-compute workloads, requests one vNPU and 100% of its cores per allocation, and retains the memory limit. Recreate Pods to switch. |
| Runtime automatic memory expansion for Ascend soft vNPU | v2.10.0-r2 | Plugin/libvnpu v1.4.2, default plugin Chart 0.2.2, Kubernetes >=1.30, scheduler.admissionWebhook.enabled=true, DRA disabled, HAMi-core enabled, and one vNPU per workload container. Expansion does not shrink and the Pod declaration stays unchanged; admission rejection or timeout may lead to OOM. |
| Pairing complete even-chip modules for Ascend910C allocation | v2.10.0-r0 | Dynamia Ascend device plugin v1.3.0 or later, with matching model configuration and driver. This is the minimum for module-paired allocation; advanced soft-partitioning capabilities have separate requirements above. |
| Resource allocation and workload usage for a single regular container using a single Iluvatar vGPU | v2.9.0-rc0 | Vendor GPU Manager Chart 3.0.7 or later, default image v3.0.7-vcuda-v4.4.0-3, and matching CoreX/vCUDA. Memory units are 256 MiB. Pre-start platform processing requires an explicit Command, writable CoreX directory, and vendor-injected library. This does not cover multi-card partitioning or mixed multi-container scenarios. |
| Full physical-device metrics for Iluvatar | Not applicable (independent exporter telemetry) | Default metrics and label protocol require ix-exporter 4.3.0 or later, including node labels and error metrics. A unified HAMi device inventory and allocation data still depend on the corresponding scheduler integration. |
| HCU registration, allocation, and resource pools | v2.10.0-r3 | HCU device plugin v3.0.0, with RESOURCE_REGISTER_STRATEGY=hami. Resource pools also require CRD Chart 0.4.2, RPM application v0.0.2 (default RPM Chart 0.0.6), extender mode, and Kubernetes >=1.30.0-0. The minimum combination is confirmed for amd64 artifacts. |
| HCU physical-device and Deployment workload-usage monitoring | Not applicable (independent exporter telemetry) | HCU exporter v3.0.0 or later with HCU DCGM 3.0.0; amd64 artifacts are confirmed. Workload curves are limited to Deployments (including Flow-generated Deployments) and require CONNECT_K8S=true, kubelet-directory mounts, Pod ownership labels, and the Deployment → ReplicaSet → Pod metrics chain. Enable this release's HCU collection rules and retain metric names and labels. HAMi registration/allocation requirements are listed in the preceding row. |
The rc suffix in HAMi Enterprise versions does not indicate a test or prerelease build. The old v2.9.0-rc0 image is currently unavailable. For a new deployment, choose an available version that satisfies the interface requirements; image availability does not change the confirmed minimum interface version.
Ascend plugin/libvnpu v1.4.2 was released on 2026-10-09, after this Chart. This table includes companion versions delivered after the Chart release to specify the minimum combination for those capabilities. It does not mean every companion was available on the release date or is installed automatically by the platform.
Software changes
Resource pools and resource views
- Adds resource-pool pages and management APIs to inspect devices in a pool, bind namespaces, set CPU/memory and device quotas, and select or view a workload's pool. Selection supports explicit choice and binpack/spread; actual admission and allocation require the RPM and Enterprise components listed above.
- Separates physical device capacity from scheduling capacity and adds allocated, used, and remaining resources and ratios. Node oversubscription and trend displays are updated. NVIDIA oversell trends and AMD core percentages require the corresponding metrics versions.
- License statistics now include registered devices without a license and distinguish active from inactive status. Adds Pending-reason diagnostics for NVIDIA, Ascend, and HCU workloads to help distinguish insufficient resources from missing companion prerequisites.
Native Workloads API and existing Flow management
- Adds a native Workloads API to validate, create, query, and delete Deployments, StatefulSets, Jobs, and LeaderWorkerSets. YAML submissions may include same-namespace Services, PVCs, ConfigMaps, and Secrets. LeaderWorkerSet still requires its CRD and controller in the cluster. The platform manages resources carrying
kantaloupe.dynamia.io/observed: "true"; Kubernetes or the relevant controller owns their lifecycle. - Native create requests first run a server-side dry-run. Batch creation is not transactional across resources; successfully created objects remain if another object fails. The default UI
v0.12.1still uses KantaloupeFlow forms; native YAML operations are available through the API. - Form-created Flows record
kantaloupe.dynamia.io/creation-source: form-v1. The platform rejects editing, pausing/resuming, restarting, and memory adjustment for existing Flows without this marker. Review their origin and add the marker as described in Upgrade guidance. - Flow updates must include the read object's
metadata.uidandmetadata.resourceVersion; after a conflict, refresh the object and retry. The controller strictly validates child-resource controller ownerReferences to avoid adopting same-named resources that do not belong to the Flow. - Stops automatically converting native Deployments into new Flows. HPA write-back for an existing Flow requires the Flow to be active and its Deployment to reflect the current Flow version. Use the new Workloads API to manage native resources rather than relying on automatic Flow creation.
Metering and value reports
- Metering settings use versioned storage with revision-conflict checks on writes. Prices retain their original currency and effective-time information and are displayed in the selected currency, with improved conversion precision and concurrent-update handling. Existing settings are not migrated automatically; back them up and configure them again after upgrading.
- Investment amounts distinguish “not provided” from an explicit zero: an omitted amount preserves the existing value; explicitly setting
0clears it. Value reports add the equivalent number of servers saved, calculated at eight GPUs per server. - Cluster energy reports can read NVIDIA DCGM exporter's
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION. The UI shows GPU-board energy and the API also returns thegpuEnergyCoverageRatiosampling coverage. The metric must be collected. It is not whole-server or data-center energy use and does not imply equivalent energy data for other vendors.
Vendor integrations and daily operations
- Adds Iluvatar vGPU workload-resource processing and pre-start checks, including model-specific resource keys and memory units. See the compatibility table for prerequisites.
- Adds Ascend form inputs for Turbo, runtime memory expansion, and task priority, with corresponding backend parameters. Each requires its own plugin and Enterprise companion versions; upgrading only the platform is insufficient. Soft partitioning and static core-share settings already existed in the comparison baseline.
- Adds HCU resource and monitoring integration for physical devices and workload usage. Workload curves depend on exporter Pod association and the Deployment → ReplicaSet → Pod ownership chain; they cover Deployments and Flow-generated Deployments, not Jobs, StatefulSets, or LeaderWorkerSets. Whole-card usage is not a substitute for workload usage.
- A member cluster without Gateway API can now be connected and used for workloads that do not require gateway networking. SSH still requires Gateway/TCPRoute; Jupyter and VS Code still require Gateway/HTTPRoute. Control-plane Gateway requirements are unchanged.
- Adds a timeout budget to live monitoring in the cluster list so basic cluster information can still be returned when monitoring is slow. The vLLM demo preserves user-edited workload fields and improves progress and result displays; the default UI remains limited to NVIDIA clusters.
Chart changes
- Updates the default API Server, Controller Manager, and auth database migration images from
v0.14.2tov0.15.0, and the UI fromv0.11.1tov0.12.1. - Adds
monitoring.vendorServiceMonitor.enableHygonServicemonitor, defaultfalse. When enabled, it collects the HCU exporter and converts physical temperature, power, memory, core usage, and vHCU workload metrics into platform monitoring metrics. - Expands discovery for multiple vendor ServiceMonitors to include
hami-system; the HCU ServiceMonitor selects Services inmonitoringorhami-system. The PPU scrape port name changes frommonitorporttometrics; existing Services must match. - Adds the HCU exporter to Prometheus federation and, when HCU is enabled, Pod/ReplicaSet ownership metrics for workload association. Ascend monitoring rules map exporter model
Ascend910-Ascend-V1to platform modelAscend910C. - The Chart package diff adds no CRDs, RBAC, or SQLite migration scripts. The resource-pool and native-workload software changes come from the backend image upgrade; check that external CRDs and companion services are available before enabling those features.
Known issue
| Issue | Impact | Workaround | Fixed in |
|---|---|---|---|
| Workload routes do not correctly inherit the site domain | Flow and CloudShell routes generated by the default backend v0.15.0 lack the site hostname, and the vLLM demo route remains fixed at dashboard.hami.run. With a custom site domain, Jupyter and other workload paths may match the platform page and return 403; the demo may also be inaccessible at the current domain. | Use a fixed default backend. Prefer the confirmed generally available Chart 0.21.3; 0.21.1 did not update the backend, and 0.21.2 fixes the gateway issue but has a separate UI GPU-form issue. | Chart 0.21.2, default backend v0.15.1 |
The gateway issue was confirmed from source corresponding to the published default image and the subsequent fix. Whether it occurs also depends on the domain, Gateway, and route configuration. Source confirmation is not equivalent to full cluster acceptance testing. The UI GPU resource-format issue in Chart 0.21.2 does not apply to this release's default UI v0.12.1 and backend v0.15.0 combination.
Upgrade guidance
Check components and prerequisites before upgrading
- Check
apiserver.image.tag,controllerManager.image.tag,auth.image.tag, andui.image.tagso old values do not continue pinning the comparison-baseline images. For a private registry,global.imageRegistryoverrides componentimage.registry; use all component images for the selected release. For a direct upgrade to0.21.3, use the component combination listed on that release page. - Before enabling resource pools, install the required CRDs, prepare the Enterprise scheduler and device plugins, and then install RPM. RPM's
hami.existingConfigMapmust point to the ConfigMap actually used by the scheduler and containingdevice-config.yaml; runtime pool-selection configuration must be readable and writable. Update RPM after device configuration changes. - For the earliest NVIDIA/Ascend pool combination, prefer RPM Chart
0.0.5. With0.0.4, setimage.repository=ghcr.io/dynamia-ai/resource-pool-managerandimage.tag=v0.0.1. Ascend in RPM Chart0.0.5useshami.ascendEnabled=true; from0.0.6, usedevices.ascend.enabled=true. HCU in0.0.6usesdevices.hygon.enabled=true; set the plugin'sRESOURCE_REGISTER_STRATEGY=hami. These minimum combinations do not apply to DRA mode. - HCU monitoring requires platform monitoring, the vendor ServiceMonitor, and the HCU switch. The official HCU exporter manifest uses
kube-system, which is outside this release's default discovery namespaces; deploy it in or move it tomonitoring/hami-system, preserving the Service labelapp.kubernetes.io/name=hcu-exporterand port namemetrics. Confirm member-cluster federation includes HCU and Pod ownership metrics.
Migrate existing Flows and clients
Before upgrading, export existing Flows by member cluster and check their source and Deployment ownership. Use the matching hack/migrate_kantaloupeflow.py script with its plan, apply, and verify workflow: generate and review the manifest, run the default server-side dry-run, then use --execute to add source markers only after confirmation, and finally verify each object. Requires Python 3.9+, kubectl, and corresponding read/write permissions in target clusters. Obtain the script and instructions matching this release from the delivery team.
- A same-named Deployment created before the Flow and with a controller ownerReference exactly pointing to that Flow is treated as a historical automatically converted object and is not marked as form-created. Other unmarked objects are listed as legacy form candidates for review. Kubernetes metadata alone cannot fully reconstruct historical origin; do not mark all Flows in bulk.
- The migration script adds only the top-level source annotation; it does not modify specs or child-resource ownership. Retain each object's UID, cluster identity, and execution result. Partial failures do not roll back successful items; review and retry only unfinished items.
- Custom Flow clients must preserve UID and resourceVersion during updates and keep the namespace consistent. On
Aborted, read the object again before editing; do not bypass concurrency checks. - Check ownerReferences on historical Deployments, Services, Routes, and ConfigMaps. Missing or incorrect ownership can block reconciliation; source migration does not adopt these resources automatically. Manage native workloads through the Workloads API rather than relying on automatic Flow generation.
Migrate metering settings and retain rollback data
This release switches the metering ConfigMap from kantaloupe-metering to kantaloupe-metering-v2. The new store uses schemaVersion 2 and does not automatically read or migrate old settings and prices. Back up the old ConfigMap, currency, investment amount, unit prices, and effective times before upgrading. After upgrading, restore global metering settings and per-model prices separately, and verify currency, exchange rates, and investment amounts. Custom clients that call the settings API must first read the revision and submit expected_revision, handling concurrent-update conflicts.
When saved from the price page, a price uses the current time as its effective time; re-entering the current unit price does not restore its historical effective time. Billing windows before the first price in the new store may not be priced. To preserve historical billing continuity, use the price-update API to pass each original effective_at from the backup, rebuild each model's price revisions, and verify currency, exchange rates, amounts, and historical bills. The API accepts original effective times, but this release provides no automatic migration. Do not treat re-entering prices in the UI as completing historical price migration; finish backfill and verification first.
Keep the old ConfigMap, Helm values, and Flow migration manifest for rollback. Helm rollback does not convert new metering configuration back to the old format or automatically remove Flow source markers. Although the auth database migration image is upgraded with the application, no SQLite migration script was added between these two backend versions. Metering migration and auth-database migration are separate concerns.
See the Chart and appVersion mapping or the software center.
Values reference
The following parameter descriptions are taken from the README bundled with the Chart 0.21.0 release package and are preserved as published. Use this version's values.yaml as the source of default configuration.
Expand values table
| 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 |