Skip to content

Registratie

Registreer je self-hosted cluster bij het kubehz-platform voor zichtbaarheid in het dashboard.

Registratie en claimen zijn de twee helften van een handshake:

  1. Registreren (CLI): meldt het cluster aan bij kubehz. Het cluster wordt aangemaakt met de status Creating, nog aan geen enkel account gekoppeld.
  2. Claimen (dashboard): je bewijst dat het cluster van jou is. Het gebruikelijke bewijs is de claimsleutel die lo naar je Hetzner Cloud-project uploadt; een claimcode of een nonce die de agent terugstuurt werken ook. Het cluster wordt aan je tenant gekoppeld. Zie Cluster claimen.

Vereisten

  • Een draaiend Kubernetes-cluster, uitgerold met lok8s
  • kubectl geconfigureerd en verbonden met je cluster
  • Een kubehz-account (nodig voor het claimen, niet voor de registratie)

Configuratie

Voeg het kubehz-blok toe aan je cluster.lok8s.yaml:

yaml
spec:
  kubehz:
    # self | hosted | shared
    hosting: self
    # 'managed' ontgrendelt de beheerfuncties (Supporter+)
    access: registered
    # cronjob (alleen-lezen heartbeat) | operator (managed-tier, live weergave)
    agent: cronjob
    apiUrl: https://api.kubehz.cloud

apiUrl moet HTTPS zijn: de CLI weigert endpoints met onversleuteld HTTP. De optionele sleutels (connectHcloudToken, upgrades, maintenanceWindow, space) staan in Eerste cluster.

Toegangsniveaus

NiveauWat kubehz zietKosten
noneNiets: geen verbindingGratis
registeredNodes, K8s-versie, componentstatus, certificaatverloop, uptimeGratis (tot 2 clusters)
managedAlles uit registered, plus de beheerdata achter healing-beleid, capaciteitsbewaking en beheer van de gewenste staat (upgrades/schalen)Supporter-tier of hoger

Registreren

De registratie draait automatisch tijdens lo provision (zolang access niet none is). Je kunt haar ook op elk moment handmatig uitvoeren:

bash
lo kubehz register

De CLI op jouw machine stuurt de request naar POST /api/clusters/register op de geconfigureerde apiUrl; er wordt niets in je cluster geïnstalleerd. Wat hij meestuurt, hangt af van wat er in je shell staat:

In je shellWat er gebeurtHoe je claimt
HCLOUD_TOKEN (het gebruikelijke geval na lo provision)De api maakt een claimsleutel aan en lo uploadt de publieke helft naar je Hetzner Cloud-project als kubehz-claim-<domain>. Opnieuw uitvoeren roteert de sleutel.Plak de fingerprint van de sleutel op de claimpagina. Er verlaat geen token je machine.
KUBEHZ_TOKEN (een clusters:write-API-token uit het dashboard, Toegang → API-tokens)Het cluster wordt direct op je tenant geregistreerd. Met connectHcloudToken: true in de spec geeft lo het platform ook je Hetzner-token, alleen over HTTPS.Niets te claimen: het cluster is al van jou.
geen van beidelo stuurt het domein plus de MD5-fingerprint van de SSH-sleutel in je providerbeschrijving.De claimcode van de heartbeat-agent, of de fingerprint als die sleutel in je Hetzner-project staat.

Op het gebruikelijke pad print de CLI de fingerprint waarmee je claimt:

kubehz: cluster 'example.com' registered (pending). Claim key 'kubehz-claim-example.com' uploaded to your Hetzner Cloud account.
kubehz: claim it with the fingerprint ALONE — dashboard /claim (SSH fingerprint tab), or:
  curl -X POST https://api.kubehz.cloud/api/claims/verify -H 'Authorization: Bearer <khzt_ token (clusters:write)>' \
       -H 'Content-Type: application/json' -d '{"fingerprint":"..."}'
  fingerprint: aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99   (also visible in Hetzner Console -> Security -> SSH keys)

De fingerprint identificeert een publieke sleutel. Het is geen geheim en verraadt niets over je private sleutels.

Het cluster heeft nu de status Creating: aan geen enkel account gekoppeld en voor niemand zichtbaar totdat je het claimt. Niet-geclaimde registraties worden na 30 dagen automatisch verwijderd; je kunt op elk moment gewoon opnieuw registreren.

Claim je cluster

Registratie alleen koppelt het cluster aan niemand. Ga naar het dashboard en claim het: plak de fingerprint van de claimsleutel, of gebruik een van de andere bewijzen. Zie Cluster claimen voor de stapsgewijze gids.

Heartbeats

De clusterstatus in het dashboard komt van een agent in het cluster, in de namespace kubehz-system. Met agent: cronjob (de standaard) is dat een lichtgewicht CronJob met de naam kubehz-heartbeat, die elke 5 minuten naar de kubehz-API POST:

  • Kubernetes-versie
  • Namen, status en rollen van nodes
  • Status van de control plane-componenten
  • Certificaatverloop

De agent draait met read-only RBAC en een gehardende security context, en doet uitsluitend uitgaande requests: het kubehz-platform maakt nooit verbinding je cluster in.

Installeer hem met de CLI. Die rendert de agent-manifests die met lok8s meekomen (de API-URL, je domein en de eigenaar van de heartbeat worden voor je ingevuld) en past ze toe met je kubeconfig:

bash
# bekijk eerst de gerenderde manifests, pas niets toe
lo kubehz deploy --dry-run

lo kubehz deploy

Bij de eerste run maakt de agent zijn identity-Secret aan, registreert zichzelf en begint te kloppen. Alle opties: de lok8s kubehz Platform-gids. Tot de agent is geïnstalleerd toont het dashboard je cluster als Disconnected (registreren en claimen werken ook zonder).

Operator-modus (managed-tier)

Met agent: operator installeert lo kubehz deploy de langlopende kubehz-agent naast de CronJob en draagt de heartbeat aan hem over. Hij bewaakt het cluster en stuurt een schema-2-payload zodra er iets verandert. Alles wat hij stuurt is metadata; namen en inhoud van workloads verlaten het cluster nooit, tenzij je daar zelf voor kiest.

VeldWat het bevat
schema, clusterId, timestamp2, je cluster-id, het tijdstip van de heartbeat.
agentDe version en mode (operator) van de agent.
kubernetes.versionDe versie van de API-server.
nodes[]Per node: name, status, ready, roles, instanceType, kubeletVersion en capacity (cpu, memory).
components[]name en status van elk control plane-component.
workloads.podsAantal pods per fase: total, running, pending, failed, succeeded, unknown. deployments (total, unavailable) als de apps-informer aanstaat.
events[]Recente Warning-events: reason, kind, count, lastSeen.
actions[]Voortgang van desired-state-acties die de agent heeft uitgevoerd: type (scale, upgrade, heal), target, status, detail, revision.
machineIssues[]Fouten van de machine-controller: pool, machine, reason, message, since.
inventoryWat lok8s heeft uitgerold, uit het ClusterInventory-object dat je eigen lo heeft geschreven: lok8sVersion, kind, provider, kubernetesVersion, specHash, renderedAt en addons[] (name, chartVersion, appVersion, category, source). Nooit chart-values of credentials.
pools[], desired, certificatesGereserveerd voor de waargenomen worker pools, de bevestiging van de gewenste staat en het certificaatverloop.

Alleen op verzoek. Namespace-namen worden standaard niet gerapporteerd. Zet KUBEHZ_REPORT_NAMESPACES=true op de agent om workloads.pods.byNamespace (aantal pods per namespace) en de velden namespace en note (het event-bericht) aan events toe te voegen. Laat je dit ongezet, dan ontbreken die sleutels in elke heartbeat.

De DPA noemt deze velden heartbeat-metadata.

Probleemoplossing

bash
# Registratiestatus zoals de CLI die ziet (vereist KUBEHZ_TOKEN)
lo kubehz status

# Staat de heartbeat-CronJob er?
kubectl -n kubehz-system get cronjob kubehz-heartbeat

# Logs van recente heartbeat-runs
kubectl -n kubehz-system logs -l app=kubehz-heartbeat

# Registratie opnieuw uitvoeren (veilig te herhalen)
lo kubehz register

# De agent is zijn identity-Secret kwijt (namespace opnieuw aangemaakt, cluster hersteld):
# maak een nieuw aan voor hetzelfde geregistreerde cluster (vereist KUBEHZ_TOKEN)
lo kubehz re-enroll

Is het cluster geregistreerd maar ontbreekt het in je dashboard, dan is het hoogstwaarschijnlijk nog niet geclaimd; zie Cluster claimen.

Deregistratie

Om je cluster uit het kubehz-register te verwijderen:

bash
lo kubehz deregister

Dit verwijdert de vermelding van het cluster bij kubehz en trekt de claimsleutel in je Hetzner-project in. Er wordt niets in je cluster gewijzigd; het blijft onafhankelijk werken. Wil je ook de agent verwijderen, verwijder dan de namespace kubehz-system en de clusterbrede RBAC ervan (zie Migratie).

KUBEHZ_TOKEN

lo kubehz deregister, lo kubehz status en lo kubehz re-enroll lezen het clusterregister van de tenant en vereisen daarom KUBEHZ_TOKEN: een clusters:write-API-token dat je in het dashboard aanmaakt onder Toegang → API-tokens. De registratie zelf heeft nooit een token nodig.

Volgende stappen


Documentstatus

AspectDetail
Statusactive
Laatst herzien2026-09-05