What ROOTKey Must Provide
Four things cannot be derived, generated or looked up. Request them before you schedule the installation, because without any one of them the install cannot start.Hardware
The installer measures these on the target and reports each one as PASS, WARN or FAIL.Operating System
Scenario C only. Scenario B installs nothing on a host, so the operating system underneath your cluster is your concern.
Anything else fails the preflight check. The requirement comes from the k3s and PostgreSQL packages the installer uses, not from ROOTKey itself.
Network
Ports on the host
These must be free on a virgin host. On a host that already runs k3s from a previous install, the preflight accepts them as held by the existing ingress rather than treating it as a conflict.
Outbound
In egress-only mode the deployment needs exactly one outbound destination:Inbound
None from outside your network. Users reach the platform over your own network or VPN.PostgreSQL
PostgreSQL runs outside Kubernetes. A database that outlives its cluster is a database whose restore is a database problem, not a Kubernetes one.- Scenario C
- Scenario B
The installer provisions PostgreSQL natively on the host with systemd, creates the roles and databases, and renders the connection Secret from the credentials in your vault. Nothing to prepare beyond the disk space.You supply the passwords in the vault under
vault_postgres_passwords — five of them, one per database role. The installer applies exactly those; it never generates its own.DNS and TLS
You supply both. The installer consumes them and creates neither. One hostname, resolvable from wherever your users are — inside the corporate network, over the VPN, or on the internet for a reseller deployment. The whole platform answers on it, including stored files at/files.
One TLS certificate for that hostname, loaded into the cluster as a Kubernetes Secret in the release namespace before the install runs.
There is no ACME issuer in the installation. A network that may not reach Let’s Encrypt cannot depend on one, so the certificate is yours to provide and renew. Name the Secret consistently —
rootkey-tls is the default the values file expects.Container Registry Access
The images are published to a distribution registry that partners are given access to. It is deliberately not the registry holding everything ROOTKey has ever built. You need:- The registry hostname and credentials, supplied by ROOTKey.
- Either outbound access from the cluster to pull them, or an air-gapped bundle containing the images pre-pulled.
Control Machine
The machine you run the installer from — your laptop, a jump host, or a CI runner. It is not the target.Helm and
kubectl do not need to be on the control machine in Scenario C. The installer places them on the target and runs them there.Checklist
Everything above, in the order the installation consumes it:Infrastructure
Infrastructure
- Host or cluster meets the CPU, RAM and disk requirements — eight vCPUs, not four.
- Operating system is on the supported list (Scenario C).
- Ports 6443, 443 and 80 are free.
- SSH key access to the target (Scenario C) or a working kubeconfig (Scenario B).
Network
Network
-
control-api.rootkey.aiis on the egress allowlist (egress-only mode). - The platform hostname resolves from wherever your users are.
- The cluster can reach the container registry, or you have the air-gapped bundle.
Data and secrets
Data and secrets
- PostgreSQL endpoint and credentials (Scenario B), or disk space for it (Scenario C).
- TLS certificate loaded as a Secret in the release namespace.
- Registry credentials from ROOTKey.
- The vault filled in — see Configuration Reference.
→ Next: Installation

