Add-ons
Je gehoste control plane heeft geen plan: je stelt de vorm in (1 tot 3 API-servers, een state-limiet) en legt daar add-ons bovenop. Deze pagina is de praktische aanvulling op Prijzen: wat elke add-on je echt oplevert, hoe je hem gebruikt en, waar van toepassing, een commando om te plakken.
Je kiest add-ons in de dashboard: in de aanmaakwizard, en later onder Instellingen → Plan van het cluster (de kaart Add-ons op de clusterpagina toont alleen wat er is geïnstalleerd). De kubehz-operator vertaalt je keuze naar de bijbehorende Kubermatic-(KKP-)instellingen op je control plane; je bewerkt KKP nooit rechtstreeks.
Apps zijn geen add-ons
Add-ons zijn control-plane-opties. Software die in je cluster draait, komt uit de app-catalogus op het tabblad Applicaties van het cluster: kies een app en een versie, geef optioneel Helm-values mee, en de operator installeert hem (GET /api/catalog/apps, PUT /api/clusters/{id}/apps/{name}). Vandaag bevat de catalogus cert-manager; meer apps volgen zodra ze zijn beoordeeld.
Inbegrepen vs. add-on
Twee dingen die je als add-on verwacht, zijn dat niet, omdat ze ingebouwd zijn:
- etcd-back-ups: geplande snapshots zijn inbegrepen in elk gehost control plane, standaard aan. Zie etcd-back-ups hieronder voor wat dat betekent.
- Hoge beschikbaarheid: HA is het aantal API-servers dat je instelt (3× API-server), geen aparte post. Stel er drie in en je hebt het.
Add-ons in het kort: elke add-on hieronder is € 0 tot 1 november 2026. Dit zijn de lijstprijzen die daarna ingaan (zie Prijzen):
€ 0 tot 1 november 2026
| Add-on | Prijs vanaf 1 november 2026 | Maandplafond | Vereist |
|---|---|---|---|
| Cluster-webdashboard (Headlamp) | € 0,001/uur | € 0,73/maand | elke vorm |
| OPA / Gatekeeper | gratis | gratis | elke vorm |
| etcd-back-ups | inbegrepen | inbegrepen | elk control plane |
| Auditlogging | € 0,001/uur | € 0,73/maand | elke vorm |
| Monitoring | € 0,010/uur | € 7,30/maand | elke vorm |
| Logging | € 0,008/uur | € 5,84/maand | 3 API-servers |
| Toegewijde nodes | € 0,018/uur | € 13,14/maand | 3 API-servers |
Hoe de meter werkt. kubehz factureert elk begonnen uur volledig. De facturering begint zodra je de resource aanmaakt. kubehz factureert de resource zolang ze bestaat, in welke staat dan ook; alleen verwijderen stopt de kosten. De uurbedragen van één eenheid komen nooit boven haar maandprijs uit: het €/maand-bedrag is het uurtarief vermenigvuldigd met 730 uur en is een maximum, ook in een maand van 31 dagen. Add-ons worden apart gefactureerd. Een add-on die een verwijdering overleeft, wordt gefactureerd tot je ook de add-on verwijdert. Zie Prijzen.
Eén prijs staat buiten deze lijst omdat het geen add-on is: een statische node, een worker-node die je zelf meebrengt, kost € 0,001/uur per node, hooguit € 0,73/maand, gefactureerd per uur dat hij Ready meldt. Een NotReady-node is de enige uitzondering op de regels hierboven: kubehz factureert hem nooit. Zie Statische nodes.
Cluster-webdashboard (Headlamp)
Wat het inschakelt. Een gehost Headlamp-webdashboard voor je cluster, door kubehz naast je control plane gedraaid en gepubliceerd op een direct bereikbare publieke URL:
https://dash-<cluster-id>.kubehz.cloudOpen het vanaf de detailpagina van het cluster in de kubehz-dashboard (knop Dashboard openen). Je logt in met je kubehz-account (dezelfde SSO-login als het platform), en wat je kunt zien en doen volgt je Kubernetes-RBAC: Headlamp stuurt jouw eigen identiteitstoken door naar de API-server en heeft zelf geen admin-credentials. Geen kubeconfig, geen proxy, geen tweede wachtwoord.
Het kost € 0,001/uur, hooguit € 0,73/maand, op elke vorm, en je kunt het overal uitvinken. De aanmaakwizard vinkt geen enkele add-on voor je aan; deze vink je zelf aan. Headlamp verving de verouderde upstream-kubernetes-dashboard achter deze add-on (2026-07): zelfde optie, zelfde prijs, een duidelijk betere toegangsroute.
Liever een lokale app? Headlamp desktop opent hetzelfde cluster met je gedownloade kubeconfig, geen add-on nodig. Het is ook de dashboard-route voor self-hosted clusters.
Terugvaloptie: kubectl proxy. Een cluster waarop nog de oude in-cluster kubernetes-dashboard draait, blijft bereikbaar via de service-proxy van de API-server, geauthenticeerd met je eigen kubeconfig:
Download de kubeconfig van het cluster uit de kubehz-dashboard (detailpagina van het cluster).
Start een lokale proxy naar de API-server:
bashkubectl --kubeconfig ./kubeconfig proxyOpen de service-proxy-URL van het dashboard in je browser:
texthttp://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
De proxy neemt je kubeconfig over, dus het dashboard ziet precies wat je met kubectl zou zien, niet meer.
OPA / Gatekeeper
Wat het inschakelt. OPA Gatekeeper-policyhandhaving in je cluster: validatie van resources op admissie-tijd tegen policies die je schrijft als ConstraintTemplate + Constraint-objecten. Het is gratis en beschikbaar op elke vorm. De operator koppelt dit aan opaIntegration.enabled van KKP; de Gatekeeper-componenten draaien in je cluster.
Hoe je het gebruikt. Zodra de add-on aan staat, pas je een ConstraintTemplate toe (definieert een herbruikbare regel) en daarna een Constraint (past hem toe op specifieke kinds). De klassieker om te beginnen is “elke namespace moet een owner-label hebben”:
Toon de volledige ConstraintTemplate + Constraint YAML
# 1. De template: een herbruikbare "required labels"-regel.
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
validation:
openAPIV3Schema:
type: object
properties:
labels:
type: array
items:
type: string
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[_]}
missing := required - provided
count(missing) > 0
msg := sprintf("you must provide labels: %v", [missing])
}
---
# 2. De constraint: vereis een `owner`-label op elke Namespace.
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
name: ns-must-have-owner
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Namespace"]
parameters:
labels: ["owner"]Sla beide documenten op als required-labels.yaml en pas ze daarna toe:
kubectl apply -f required-labels.yamlHoe handhaving eruitziet. Daarna wordt een namespace zonder owner-label bij admissie geweigerd:
$ kubectl create namespace demo
Error from server (Forbidden): admission webhook "validation.gatekeeper.sh" denied
the request: [ns-must-have-owner] you must provide labels: {"owner"}Maak de namespace in plaats daarvan meteen mét het label aan, en hij wordt toegelaten:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: demo
labels:
owner: platform-team # elke waarde — de policy vereist alleen de sleutel
EOFetcd-back-ups
Wat het inschakelt. Geplande snapshots van de etcd van je control plane, de datastore achter elk object in je cluster (Deployments, Secrets, CRD’s, alles). Dit is inbegrepen in elk gehost control plane, standaard aan; er is niets te kopen of in te schakelen. De operator levert een EtcdBackupConfig van KKP voor je cluster.
Schema en bewaring. Back-ups draaien elke 6 uur (cron 0 */6 * * *) en de laatste 20 snapshots worden bewaard; oudere worden automatisch opgeruimd. Snapshots worden weggeschreven naar door kubehz beheerde objectopslag in de EU. Je beheert geen bucket.
Eenmalige snapshots en herstel. Naast het schema kun je zelf een snapshot maken, vóór een riskante wijziging, en herstellen vanaf elke snapshot die je hebt. Beide zijn selfservice: de sectie Back-ups op de clusterpagina, of de API (POST /api/clusters/{id}/snapshots met een name, GET om ze op te sommen, DELETE .../snapshots/{name} om er een te verwijderen, en de herstelactie op een snapshot). Een herstel is een KKP-EtcdRestore op je control plane: de API-server is de paar minuten die het duurt niet beschikbaar, en elk object dat sinds de snapshot is gewijzigd, is weg. Wil je liever dat iemand meekijkt, vraag het dan in de chat voordat je erop drukt.
Auditlogging
Wat het inschakelt. Kubernetes-API-auditlogging op je control plane: een registratie van wie wat tegen de API-server heeft gedaan (requests, subjecten, werkwoorden, resources). € 0,001/uur, hooguit € 0,73/maand, op elke vorm. De operator koppelt dit aan auditLogging van KKP met een vaste policy-preset.
Welke preset wordt toegepast. kubehz schakelt de auditpolicy-preset recommended in, een gebalanceerd niveau dat de beveiligingsrelevante operaties vastlegt zonder het volume van een volledige request/response-stroom. (De preset ligt vast; er is geen policy-editor per cluster.)
Waar de events heen gaan. Auditevents worden uitgezonden door de API-server op je control plane. Kies op de clusterpagina (of met PUT /api/clusters/{id}/audit-delivery) een aflevering voor ze: webhook post elke batch naar een HTTPS-endpoint van jou (met een optionele CA-bundel), s3 schrijft ze naar een S3-compatibele bucket die je zelf bezit (endpoint, bucket, prefix, access key), none houdt ze alleen op het control plane. Om ze te doorzoeken, combineer je de add-on met Logging, dat je een plek geeft om ze op schaal te lezen.
Monitoring
Wat het inschakelt. Per cluster verzamelde metrics uit je cluster, verstuurd naar het kubehz-platform. € 0,010/uur, hooguit € 7,30/maand, op elke vorm. Je schakelt het in via de kubehz-dashboard: bij het aanmaken in de add-on-opties van de wizard, of later onder Instellingen → Plan van het cluster. Een Prometheus draait in je cluster en voedt het platform; je draait of schaalt het niet zelf.
Wat de kosten dekken. De platformkant: multi-tenant metricsopslag met 15 dagen bewaring, het querypad van de dashboard en alerting, gedraaid en beheerd door kubehz. Aan jouw kant draait alleen een lichte collector op je eigen workers; het bedrag betaalt ons backend en onze opslag, niet jouw compute.
Wat er wordt verzameld. Cluster- en node-gezondheid, resourcegebruik van control plane en workloads (de standaard Kubernetes-/cAdvisor-/kube-state- signalen), zo krijg je CPU-, geheugen-, pod- en node-metrics door de tijd zonder je eigen Prometheus op te zetten.
Waar je het ziet. Metrics verschijnen in de sectie Monitoring van de kubehz-dashboard, op de clusterpagina.
Alerting. Dezelfde sectie bevat ook je alertregels en receivers. Een regelgroep is een Prometheus-regelbestand voor metrics of logs (PUT /api/clusters/{id}/monitoring/rules/{name} met de YAML in data); een receiver is een webhook-URL of een email-adres (PUT .../monitoring/receivers/{name}). Abonneer je eigen account op de alertmails van het cluster met POST /api/clusters/{id}/alerts/subscription, of met de schakelaar op dezelfde pagina.
Logging
Wat het inschakelt. Per cluster logaggregatie, op basis van Loki, via dezelfde platformstack. € 0,008/uur, hooguit € 5,84/maand; het vereist de vorm met drie API-servers. Net als monitoring schakel je het in via de kubehz-dashboard: bij het aanmaken in de add-on-opties van de wizard, of later onder Instellingen → Plan van het cluster. Een collector in promtail-stijl draait in je cluster en stuurt pod-logs naar de Loki van het platform; Loki draai je niet zelf.
Wat de kosten dekken. De platformzijdige ingest, de 7 dagen logopslag en het querypad achter de logbrowser van de dashboard, gedraaid en beheerd door kubehz. De collector op je nodes is van jou en marginaal; het bedrag betaalt ons backend en onze opslag.
Bewaring. De add-on bevat 7 dagen logbewaring: de laatste week aan logs is opvraagbaar, oudere data verloopt.
Waar je het ziet. Logs verschijnen in de kubehz-dashboard naast monitoring. Net als de monitoring-weergave wordt de logbrowser in de dashboard uitgerold; het verzamelen en de 7-dagen-bewaring levert de add-on vandaag, en het is ook de natuurlijke metgezel van Auditlogging om auditevents te lezen.
Toegewijde nodes
Wat het inschakelt. Plaatst je control plane op toegewijd bare metal in de kubehz-vloot in plaats van op gedeelde cloud-VM’s: stabielere, geïsoleerde prestaties voor de control plane. € 0,018/uur, hooguit € 13,14/maand; het vereist de vorm met drie API-servers. De operator stuurt je control plane naar metal-class-nodes (een plaatsingswijziging, geen resize).
Live-migratie bij omschakelen. Toegewijd is omkeerbaar: aanzetten (of uitzetten) triggert een live-migratie van de control plane naar (of van) de metal-pool: de operator verplaatst de workload; je bouwt het cluster niet opnieuw.
Capaciteitsgating (het eerlijke deel). Bare metal is een schaarse, bewust beperkte pool. Daarom is toegewijd capaciteitsgated bij provisioning: staat de metal-pool op zijn ondergrens, dan kan de optie tijdelijk niet bestelbaar zijn, zelfs op een pro-cluster. Dat is bewust (metal wordt toegevoegd wanneer de vraag het rechtvaardigt) en alleen pro, zodat wegwerp-clusters de schaarse capaciteit niet opsouperen. Is het bij je poging niet beschikbaar, dan opent het naarmate er capaciteit wordt toegevoegd.
Volgende stappen
- Prijzen: de volledige add-on-prijslijst.
- Gehoste control plane: de vorm en het gehoste pad in het geheel.
- Worker pools: pools, scaling en autoscaling op je cluster.
- Dashboard en account: waar je add-ons omschakelt en de kubeconfig downloadt.
Documentstatus
| Aspect | Detail |
|---|---|
| Staat | add-ons live; snapshots, herstel, auditaflevering en alerting als selfservice; logbrowser in de dashboard wordt uitgerold |
| Laatst herzien | 2026-09-05 |