Feature: kubernets operator for headscale #538

Closed
opened 2025-12-29 02:19:40 +01:00 by adam · 4 comments
Owner

Originally created by @siredmar on GitHub (Aug 11, 2023).

Why

With a headscale kubernetes operator it would be easy to manage every headscale resource like users, keys, ... as native kubernetes resources.

Description

Below is a very basic example how headscale resources could look like.

Example for user

apiVersion: headscale.io/v1alpha1
kind: User
spec:
  name: "myuser"

Example for preauthkey

apiVersion: headscale.io/v1alpha1
kind: PreAuthKey
spec:
  config:
    user: "myuser"
    ephemeral: true
    reusable: true
    expiration: "1h"
  output:
    secretName: mysecret
    secretKey: mykey

If i would write an operator for headscale, i'd use crossplane (https://docs.crossplane.io/latest/concepts/providers/)

Originally created by @siredmar on GitHub (Aug 11, 2023). <!-- We typically have a clear roadmap for what we want to improve and reserve the right to close feature requests that does not fit in the roadmap, or fit with the scope of the project, or we actually want to implement ourselves. Headscale is a multinational community across the globe. Our language is English. All bug reports needs to be in English. --> ## Why With a headscale kubernetes operator it would be easy to manage every headscale resource like users, keys, ... as native kubernetes resources. <!-- Include the reason, why you would need the feature. E.g. what problem does it solve? Or which workflow is currently frustrating and will be improved by this? --> ## Description Below is a very basic example how headscale resources could look like. Example for user ``` apiVersion: headscale.io/v1alpha1 kind: User spec: name: "myuser" ``` Example for preauthkey ``` apiVersion: headscale.io/v1alpha1 kind: PreAuthKey spec: config: user: "myuser" ephemeral: true reusable: true expiration: "1h" output: secretName: mysecret secretKey: mykey ``` If i would write an operator for headscale, i'd use crossplane (https://docs.crossplane.io/latest/concepts/providers/) <!-- A clear and precise description of what new or changed feature you want. -->
adam added the enhancement label 2025-12-29 02:19:40 +01:00
adam closed this issue 2025-12-29 02:19:40 +01:00
Author
Owner

@juanfont commented on GitHub (Aug 11, 2023):

Hi @siredmar,

We don't have the capacity to implement this. There is however a third party operator, but does not seem to be maintained https://github.com/guilhem/headscale-operator

@juanfont commented on GitHub (Aug 11, 2023): Hi @siredmar, We don't have the capacity to implement this. There is however a third party operator, but does not seem to be maintained https://github.com/guilhem/headscale-operator
Author
Owner

@siredmar commented on GitHub (Aug 12, 2023):

@juanfont Thanks for bringing this to my attention!

@siredmar commented on GitHub (Aug 12, 2023): @juanfont Thanks for bringing this to my attention!
Author
Owner

@ksullivan86 commented on GitHub (Sep 12, 2025):

Has this changed at all? Its been a couple years.

@ksullivan86 commented on GitHub (Sep 12, 2025): Has this changed at all? Its been a couple years.
Author
Owner

@clwluvw commented on GitHub (Dec 20, 2025):

Started a new one here: https://github.com/infradohq/headscale-operator

@clwluvw commented on GitHub (Dec 20, 2025): Started a new one here: https://github.com/infradohq/headscale-operator
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/headscale#538