A managed Kubernetes cluster on the Stack Harbor PaaS is installed from the Marketplace under the Clusters category. The installer walks you through topology, ingress controller, storage, and optional observability — it provisions the cluster, joins control-plane and worker nodes, and runs a health check before handing the cluster back to you.
This page describes each option in the installer so you can pick the right shape on the first try.
Open the installer
Open the dashboard’s Marketplace, switch to Clusters, and pick Kubernetes Cluster (use the search box if it’s not on the first page). The installer opens in a dialog. The fields below appear in roughly the order they’re prompted.
Version
The dropdown lists the Kubernetes minor versions currently supported by the platform package. The package typically tracks one or two minor versions behind the upstream tip, so the latest entry in the dropdown is the most recent shipped here, not the most recent on github.com/kubernetes/kubernetes.
If you’re building something new, pick the highest version listed. If you’re matching a fleet that already runs an older version, pick the matching minor.
The Kubernetes version can be upgraded later — see Kubernetes upgrade — so this choice is not permanent, but a minor-version upgrade is a real operation, not a click.
Dashboard
Two Kubernetes-Dashboard distributions are supported:
- v2 — the standard upstream Kubernetes Dashboard. Default choice.
- Skooner — an alternative dashboard with a different UX. Note that some metrics in Skooner don’t render correctly when the HAProxy ingress controller is selected.
Topology
Two pre-baked shapes:
- Development — one control-plane node and one or more worker nodes that can scale horizontally. The single control-plane is a single point of failure. Use this for development, internal tooling, or non-critical workloads.
- Production — three control-plane nodes behind two or more API load balancers, with two or more worker nodes that can scale horizontally. This is the topology to run real workloads against.
The development topology is cheap to run and quick to provision; the production topology survives the loss of any one control-plane node. The brief on the installer is blunt: the development topology is not recommended for production because a single control-plane node cannot handle real load reliably.
Ingress controller
Three ingress controllers ship out of the box:
- NGINX — recommended default. The most flexible of the three; the broadest annotation surface and the most mature documentation.
- Traefik — smaller resource footprint, good defaults, configuration is more concise.
- HAProxy — high-performance, used where NGINX’s behaviour doesn’t fit the routing model.
The choice is sticky: the platform’s install-time picker doesn’t let you swap controllers later from the management add-on. A switch after install is possible but manual — Stack Harbor support can help if you need to do it.
Deployment
Two options for the initial cluster contents:
- Clean cluster with a pre-deployed
HelloWorldexample. Useful for verifying ingress, DNS, and the dashboard end-to-end on first boot. - Custom Helm chart or shell command. Lets you point the installer at a Helm chart or a script that bootstraps your application directly into the cluster.
For most teams, Clean cluster is the right choice — separate the cluster provisioning from the application provisioning so failures in one don’t block the other.
NFS storage
Enable NFS Storage to attach a dedicated NFS storage tier with dynamic volume provisioning. This adds a StorageClass that pods can request via PersistentVolumeClaim without any manual provisioner setup.
Disable it if you intend to register your own storage class (e.g. a cloud-provider CSI driver). Doing this from scratch requires real Kubernetes knowledge — the platform doesn’t intermediate.
Modules
Three optional add-ons that can also be installed later through the Master layer’s Add-Ons panel:
- Prometheus & Grafana — bundled observability stack. Recommended. Allocates roughly 5 GB of persistent storage and 500 MB of RAM.
- Jaeger Tracing — distributed-tracing operator and collector.
- Remote API Access — required for
kubectlfrom a local workstation (see cluster access). Recommended if anyone on the team works from outside the dashboard.
Environment
- Environment — the internal environment name. Cannot be changed later; appears in DNS hostnames.
- Display Name — friendly alias shown in the dashboard.
- Region — the platform region for the cluster, if more than one is available.
Install
Click Install. The platform provisions the underlying containers, joins the control plane, applies CNI, installs the chosen ingress controller and optional modules, and runs a health check. The whole flow is automated and typically takes a few minutes for the development topology, longer for production.
When the installer finishes, the success pop-up surfaces:
- The Kubernetes Dashboard URL and bootstrap token.
- The Remote API endpoint (if enabled).
- The example application URL (if a clean cluster with the example was chosen).
The same information is sent to the account owner by email — keep that email until you’ve stored the credentials somewhere reliable.