Before you install NVIDIA Minerva on Kubernetes, confirm that your workstation and cluster meet these requirements, check capacity, and decide the values the installation needs.
Workstation
Work from one shell on a workstation that has:
-
kubectlwith cluster-admin rights on the target cluster -
helm3.16 or later, or Helm 4 -
a way to import a docker-save archive into your registry
-
openssl,tar, andsha256sum -
enough disk for the unpacked image set (allow 25 GB)
Cluster Requirements
Every row is a prerequisite that must be true before you start.
|
Requirement |
What's needed |
How to check |
|---|---|---|
|
Kubernetes |
Version 1.30 or later (validated on 1.30 to 1.32). Linux workers of the CPU architecture named in |
|
|
Access |
Permission to create namespaces, CRDs, cluster RBAC, admission webhooks, Secrets, and workloads |
Your role and binding review |
|
cert-manager |
Installed and healthy, version 1.12 or later, with a working issuer. This is a hard requirement: the operator exits without it. Its startup check detects the cert-manager API only, not the version or the issuer's health |
|
|
Issuer scope |
A |
|
|
StorageClass |
Dynamic provisioning, SSD-backed, ReadWriteOnce, and set as the cluster default |
|
|
Load balancing |
A way to expose two Services: the UI (443/TCP) and telemetry (4317, 4318, 9091, and 4319/TCP plus 514/UDP, in one Service with mixed protocols). The operator installs no load balancer. The telemetry endpoint needs raw layer-4 reachability and can't go behind an HTTP ingress |
Your load-balancing solution is healthy and has free addresses |
|
Ingress |
Optional. An IngressClass and a healthy ingress controller, only if you publish the UI through your own gateway (see Prepare the External Addresses) |
|
|
DNS |
A DNS record for your UI hostname |
|
|
Registry |
Reachable from every node, over TLS that the node container runtime trusts. A CA Secret inside the cluster doesn't configure runtime trust |
Pull any image from it on a node |
|
Node settings |
|
|
|
Admission policies |
Your policy engine admits this release's workloads, including init containers and nginx. A blanket restricted profile isn't automatically compatible |
No denial events during the installation |
|
Keycloak Operator manifests |
The five upstream manifest files for Keycloak Operator release 26.7.5, obtained through your normal artifact process (stage them before entering a disconnected environment). The two images they need are already in the archive |
Files present |
The Keycloak Operator itself and the UI certificate are created during the installation and checked there (see Install on Kubernetes).
Capacity
-
The reference configuration requests about 55 GiB of memory and 12 vCPU, and has about 144 GiB and 42 vCPU of configured limits. The AI agent pod has no CPU or memory limit, the same as on Docker Swarm, so leave headroom for it beyond the declared limits. Size the cluster from the limits plus that headroom, not from the requests, against the allocatable capacity left after your other workloads.
-
On arm64 nodes that run a kernel with 64 KB memory pages (
getconf PAGESIZEprints65536), the Go, Python, and native services use 1.5 to 3.5 times the memory they use with 4 KB pages, and the Java services about 1.1 to 1.3 times. The reference limits allow for this. Expect these nodes to use a larger share of their memory than nodes with 4 KB pages. -
Persistent volume claims total about 217 GiB. The Druid segment cache alone is 100 GiB and the object-store volume 50 GiB, so plan provisionable storage above that total. Druid serves only the data that fits in its segment cache, so set that volume (
spec.druid.historical.storage.sizein the infrastructure file) large enough to hold your daily ingest for the whole retention period. -
The largest consumers, and the first to grow with fleet size, are Druid, the trans-metric instances, anomaly detection, and the gateway collectors. The reference custom resources carry per-component comments.
-
If your StorageClass provisions node-local volumes, confirm the free disk on each node, not only across the cluster.
Values to Decide Before You Start
The reference custom resources carry these values as placeholders. The table gives the exact token each one replaces.
|
Placeholder |
Set it to |
Where it appears |
|---|---|---|
|
|
The one repository path that will hold every NVIDIA Minerva image, for example |
All three files |
|
|
The platform release from |
Infrastructure and application |
|
|
Your dynamic, SSD-backed, ReadWriteOnce StorageClass, for example |
Infrastructure and application |
|
|
Your UI hostname, the one address users open, for example |
Identity and application |
|
|
The source networks allowed in, for example |
Application, twice |
|
|
A display name, for example |
Application |
|
|
A display name, for example |
Application |
|
|
Only if you federate login to your identity provider: your provider's issuer URL. Otherwise, leave the block commented out |
Identity, commented block |
|
|
Only if you federate login to your identity provider: the client ID you created in your provider |
Identity, commented block |
Caution: one token, two values. The two ${MINERVA_ALLOWED_CIDRS} occurrences in the application file may need different values, one for browsers and one for devices. A single search-and-replace of that token gives both the same value. Edit each occurrence on its own.
You also need, outside the files:
-
the name and kind of your cert-manager issuer
-
the PEM CA chain that signs its certificates
-
the operator version from
MANIFEST.txt -
your NVIDIA Minerva license file (see Get a License). Without a license, the platform starts in the
invalidlicense state, which gates its user-facing features.
Plan Before You Install
-
Size the cluster from the resource limits (about 144 GiB of memory and 42 vCPU) plus headroom for the AI agent pod, not from the requests, and plan at least 217 GiB of persistent storage.
-
Plan network reachability early. Depending on your network, a load-balancer address may be reachable only from some networks, for example only from the cluster's own subnet when nothing routes to it from elsewhere. Clients and devices on other networks then need routing, NAT, or an ingress path.
-
Plan a stable address for the Devices load balancer. Your devices are configured with it, and the WJH certificate must name it.
-
Use registry pull credentials that don't expire, or arrange their refresh.
Last updated: