Lab · HA ready

Pertisk KOS

Immutable Kubernetes OS, API-only.

Pertisk KOS boots a locked-down Linux image whose only job is to run Kubernetes nodes. PID 1 is pertiskd in Rust: disk, net, containerd, kubelet, and signed A/B updates — without a shell on the machine. The management UI provisions clusters on Proxmox, standalone ESXi, and Nutanix AHV (Prism Element). Cluster add-ons cover NFS, cert-manager, Cilium LoadBalancer, Pertisk Ingress, and kos-scaler worker VM autoscaling.

Pertisk KOS management dashboard with cluster resource cards

Highlights

  • API-only management with mTLS (pertiskctl)
  • Immutable root with signed A/B image updates
  • Mgmt UI: Proxmox, ESXi, and Nutanix AHV — dashboard, cluster ops, add-ons
  • Same API from the UI, Terraform, or pertiskctl

Stack

  • Rust
  • containerd
  • kubelet
  • gRPC
  • React mgmt UI
  • UKI / Secure Boot

Management UI

Hash routes on the live demo. Roles: viewer (read), operator (mutate clusters), admin (users + delete providers).

Login

/#/login

Local username/password, optional Auth0 SSO, remember password, forgot password.

  • Sign in
  • Continue with Auth0 SSO
  • Forgot password?

Dashboard

/#/

Cluster stats and cards (CPU / memory / disk) stacked above provider cards. Recent clusters table.

  • Create cluster
  • All clusters
  • All providers
  • Refresh
  • Open a cluster or provider card

Clusters

/#/clusters

All clusters: status, arch, provider, topology, resource bars, network, CNI.

  • Create cluster
  • Open a row for cluster detail

Create cluster

/#/clusters?new=1

Wizard: General → Network → Size → Verify (image, VMID, VIP).

  • Next / Back
  • Cancel
  • Create (starts a job)

Cluster detail

/#/clusters/:id

Header stats plus tabs: Overview, Nodes, K8s, Add-ons, Shell, Config, Upgrade, Jobs.

  • Download kubeconfig
  • Download config ZIP
  • Export to Terraform
  • Delete
  • Copy / View kubeconfig (Overview)

Nodes

/#/clusters/:id?tab=nodes

Guest inventory, live online/offline, CPU / memory / disk, hardware.

  • Add node (Create VM / Adopt / Join)
  • Reboot
  • Resize hardware
  • Bulk reboot / remove
  • Open node

Node detail

/#/clusters/:id/nodes/:nid

Inventory, Machine Health, live charts, log tail, TPM Quote.

  • Enroll AK
  • Verify Quote
  • Refresh / Follow logs

K8s

/#/clusters/:id?tab=k8s

Live workloads via kubectl on the mgmt host (ready clusters).

  • Filter namespace / kind
  • Refresh
  • Scale
  • Restart
  • Delete

Add-ons

/#/clusters/:id?tab=addons

Autoscaling, Certificates, Ingress, Storage & network.

  • Check config
  • Install / Update
  • Refresh

Shell

/#/clusters/:id?tab=shell

OS shell on the management host with KUBECONFIG set (operator+).

  • kubectl / helm in the terminal

Config

/#/clusters/:id?tab=config

Machine config YAML editor.

  • Apply to all nodes

Upgrade

/#/clusters/:id?tab=upgrade

Rolling Kubernetes upgrade and signed OS A/B upgrade.

  • Start rolling upgrade
  • Start OS upgrade

Jobs

/#/clusters/:id?tab=jobs

Job history with kind, status, time, duration, and color log.

  • Select job
  • Refresh
  • Follow

OS packages

/#/os-packages

Signed A/B OS bundles in the catalog.

  • Upload bundle
  • Upgrade clusters
  • Delete

Images

/#/images

Cloud qcow2 catalog (amd64 / arm64) used to create VMs.

  • Upload
  • Delete

Machines

/#/machines

All guests across clusters, live online/offline.

  • Filter
  • Refresh
  • Open a node

Templates

/#/templates

Reusable machine-config YAML snippets.

  • Create
  • Edit
  • Delete

Providers

/#/providers

Hypervisors with live CPU / memory / disk.

  • Add provider
  • Edit
  • Test
  • Delete (admin)
  • Open dashboard

Provider dashboard

/#/providers/:id

Hypervisor capacity gauges for the selected host / storage.

  • Refresh
  • Back to providers

Users

/#/users

Local and Auth0 identities (admin only).

  • Create user
  • Change role
  • Enable / disable
  • Send reset email

Audit

/#/audit

Action log with user, resource, and detail.

  • Filter action / resource
  • Refresh
  • Paging

Settings

/#/settings

Read-only session, service, paths, auth, and email config.

  • Switch tabs (Session / Service / Paths / Authentication / Email)

Clone

git clone https://github.com/pertisktech/pertisk-kos.git