From 3d5c6da6d097da43f4ff67c717bbffaeaf7bd7fd Mon Sep 17 00:00:00 2001 From: Jonas Juselius Date: Sun, 22 Jun 2025 16:22:23 +0200 Subject: [PATCH] feat: add headscale helmfile --- helmfile.d/headscale.yaml.gotmpl | 31 ++++++++++++++ values/argo/manifests/sys-project.yaml | 1 + values/headscale/env-oceanbox.yaml.gotmpl | 3 ++ values/headscale/env.yaml.gotmpl | 4 ++ values/headscale/manifests/headscale.yaml | 51 +++++++++++++++++++++++ values/headscale/{ => values}/values.yaml | 0 6 files changed, 90 insertions(+) create mode 100644 helmfile.d/headscale.yaml.gotmpl create mode 100644 values/headscale/env-oceanbox.yaml.gotmpl create mode 100644 values/headscale/env.yaml.gotmpl create mode 100644 values/headscale/manifests/headscale.yaml rename values/headscale/{ => values}/values.yaml (100%) diff --git a/helmfile.d/headscale.yaml.gotmpl b/helmfile.d/headscale.yaml.gotmpl new file mode 100644 index 00000000..8270af37 --- /dev/null +++ b/helmfile.d/headscale.yaml.gotmpl @@ -0,0 +1,31 @@ +bases: + - ../envs/environments.yaml.gotmpl + +repositories: +- name: headscale + url: https://charts.gabe565.com + +commonLabels: + tier: system + +releases: +- name: manifests + namespace: headscale-system + chart: manifests + condition: nginx.enabled + missingFileHandler: Info + values: + - ../values/env.yaml + - ../values/env-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml + - ../values/headscale/env.yaml.gotmpl + - ../values/headscale/env-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml.gotmpl + hooks: + - events: [ prepare, cleanup ] + showlogs: true + command: ../bin/helmify + args: + - '{{`{{ if eq .Event.Name "prepare" }}build{{ else }}clean{{ end }}`}}' + - '{{`{{ .Release.Chart }}`}}' + - '{{`{{ .Environment.Name }}`}}' + - ../values/headscale/manifests + - manifests diff --git a/values/argo/manifests/sys-project.yaml b/values/argo/manifests/sys-project.yaml index 5ecbb91c..c22bbd99 100644 --- a/values/argo/manifests/sys-project.yaml +++ b/values/argo/manifests/sys-project.yaml @@ -88,4 +88,5 @@ spec: - https://helm.cilium.io - https://chartmuseum.github.io/charts - https://dapr.github.io/helm-charts + - https://charts.gabe565.com diff --git a/values/headscale/env-oceanbox.yaml.gotmpl b/values/headscale/env-oceanbox.yaml.gotmpl new file mode 100644 index 00000000..751125e4 --- /dev/null +++ b/values/headscale/env-oceanbox.yaml.gotmpl @@ -0,0 +1,3 @@ +headscale: + enabled: true + diff --git a/values/headscale/env.yaml.gotmpl b/values/headscale/env.yaml.gotmpl new file mode 100644 index 00000000..40f525fa --- /dev/null +++ b/values/headscale/env.yaml.gotmpl @@ -0,0 +1,4 @@ +plume: + enabled: false + autosync: false + diff --git a/values/headscale/manifests/headscale.yaml b/values/headscale/manifests/headscale.yaml new file mode 100644 index 00000000..928f3aec --- /dev/null +++ b/values/headscale/manifests/headscale.yaml @@ -0,0 +1,51 @@ +{{- if .Values.clusterConfig.argo.enabled }} +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: headscale + namespace: argocd + annotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: headscale-system + server: 'https://kubernetes.default.svc' + sources: + - repoURL: {{ .Values.clusterConfig.manifests }} + targetRevision: HEAD + path: helmfile.d + plugin: + name: helmfile-cmp + env: + - name: CLUSTER_NAME + value: {{ .Values.clusterConfig.cluster }} + - name: HELMFILE_ENVIRONMENT + value: default + - name: HELMFILE_FILE_PATH + value: headscale.yaml.gotmpl + - repoURL: https://charts.gabe565.com + targetRevision: 0.16.0 + chart: headscale + helm: + valueFiles: + - $values/values/headscale/values/values.yaml + - repoURL: {{ .Values.clusterConfig.manifests }} + targetRevision: main + ref: values + project: sys + syncPolicy: + managedNamespaceMetadata: + labels: + component: sys + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true + # - ServerSideApply=true + {{- if .Values.headscale.autosync }} + automated: + prune: true + # selfHeal: false + {{- end }} +{{- end }} diff --git a/values/headscale/values.yaml b/values/headscale/values/values.yaml similarity index 100% rename from values/headscale/values.yaml rename to values/headscale/values/values.yaml