From 40c86767a25d8c83be9a0dfe84a8443f182287d7 Mon Sep 17 00:00:00 2001 From: WrenIX Date: Wed, 23 Aug 2023 00:38:09 +0200 Subject: [PATCH] fix(headscale): derp support (with embedded server) --- headscale/Chart.yaml | 2 +- headscale/templates/deployment.yaml | 5 +++++ headscale/templates/service.yaml | 22 ++++++++++++++++++++++ headscale/values.yaml | 17 +++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/headscale/Chart.yaml b/headscale/Chart.yaml index 29ba8c2..933da99 100644 --- a/headscale/Chart.yaml +++ b/headscale/Chart.yaml @@ -3,7 +3,7 @@ name: headscale description: An open source, self-hosted implementation of the Tailscale control server. icon: https://raw.githubusercontent.com/juanfont/headscale/56a7b1e34952c3e0306a134b2be9b4277f5d8d6e/docs/logo/headscale3-dots.svg type: application -version: 0.1.1 +version: 0.2.0 appVersion: "0.22.3" keywords: - headscale diff --git a/headscale/templates/deployment.yaml b/headscale/templates/deployment.yaml index 9f0dff2..b00fda0 100644 --- a/headscale/templates/deployment.yaml +++ b/headscale/templates/deployment.yaml @@ -47,6 +47,11 @@ spec: - name: grpc containerPort: {{ .Values.service.port.grpc }} protocol: TCP + {{- if .Values.headscale.config.derp.server.enabled }} + - name: derp + containerPort: {{ .Values.service.derp.port }} + protocol: UDP + {{- end }} livenessProbe: httpGet: path: /health diff --git a/headscale/templates/service.yaml b/headscale/templates/service.yaml index 5497d3b..14f5e31 100644 --- a/headscale/templates/service.yaml +++ b/headscale/templates/service.yaml @@ -25,3 +25,25 @@ spec: name: grpc selector: {{- include "headscale.selectorLabels" . | nindent 4 }} +{{- if .Values.headscale.config.derp.server.enabled }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "headscale.fullname" . }}-derp + labels: + {{- include "headscale.labels" . | nindent 4 }} + {{- with .Values.service.derp.annotations }} + annotations: + {{- toYaml . | nindent 4}} + {{- end }} +spec: + type: {{ .Values.service.derp.type }} + ports: + - port: {{ .Values.service.derp.port }} + targetPort: derp + protocol: UDP + name: derp + selector: + {{- include "headscale.selectorLabels" . | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/headscale/values.yaml b/headscale/values.yaml index 177f7d9..1f68916 100644 --- a/headscale/values.yaml +++ b/headscale/values.yaml @@ -58,6 +58,18 @@ headscale: ## Use already defined certificates: tls_cert_path: "/etc/headscale/certs/tls.crt" tls_key_path: "/etc/headscale/certs/tls.key" + derp: + server: + enabled: true + region_id: 999 + region_code: "headscale" + region_name: "Headscale Embedded DERP" + stun_listen_addr: "0.0.0.0:3478" + urls: [] + # - https://controlplane.tailscale.com/derpmap/default + paths: [] + # auto_update_enabled: true + update_frequency: 24h prometheus: servicemonitor: @@ -135,6 +147,11 @@ service: http: 8080 metrics: 9090 grpc: 50443 + derp: + # just if headscale.config.derp.server.enabled + type: LoadBalancer + annotations: + port: 3478 ingress: enabled: false