Compare commits

..

57 Commits

Author SHA1 Message Date
gitea-admin 91b3ec7be4 chore: remove files from wrong root tailscale/ dir
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 02:01:09 +00:00
gitea-admin 8ee3ca36c5 chore: remove files from wrong root tailscale/ dir
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 02:01:09 +00:00
gitea-admin 74b9664078 chore: remove files from wrong root tailscale/ dir
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 02:01:08 +00:00
gitea-admin 534c11dfa2 chore: remove files from wrong root tailscale/ dir
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 02:01:08 +00:00
gitea-admin 8a5d4d761e chore: remove files from wrong root tailscale/ dir
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 02:01:07 +00:00
gitea-admin 5383783db1 chore: remove files from wrong root tailscale/ dir 2026-05-15 02:01:07 +00:00
gitea-admin a90d4fbd4d chore: remove files from wrong root tailscale/ dir 2026-05-15 02:01:06 +00:00
gitea-admin 751b4c80f2 chore: remove files from wrong root tailscale/ dir 2026-05-15 02:01:06 +00:00
gitea-admin 711be643ff fix: relocate operator manifests to deployments/tailscale/operator/
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 02:00:49 +00:00
gitea-admin 36b95768e9 fix: relocate operator manifests to deployments/tailscale/operator/ 2026-05-15 02:00:49 +00:00
gitea-admin 8ab62024ad fix: relocate operator manifests to deployments/tailscale/operator/ 2026-05-15 02:00:48 +00:00
gitea-admin cca85815d2 fix: remove non-existent OAuth credential refs, auth key only
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 01:50:17 +00:00
gitea-admin 9691ba2827 fix: correct ExternalSecret path, name, and key to match deployment
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 01:50:07 +00:00
gitea-admin 63f92ade28 feat: deploy Tailscale Operator for tailnet management
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-15 01:07:01 +00:00
gitea-admin f925eae344 feat: deploy Tailscale Operator for tailnet management 2026-05-15 01:07:01 +00:00
gitea-admin 73a933a41a feat: deploy Tailscale Operator for tailnet management 2026-05-15 01:07:01 +00:00
gitea-admin d763511a8a Merge pull request 'feat: deploy Tailscale Operator via GitOps' (#23) from orion/auto/feat-deploy-tailscale-operator-via-gitop-1778426037111 into main
Reviewed-on: #23
2026-05-10 15:15:07 +00:00
gitea-admin e35f4d22f9 feat: deploy Tailscale Operator via GitOps
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 15:13:57 +00:00
gitea-admin 7829189b3a Merge pull request 'Deploy Tailscale Operator and ExternalSecret' (#22) from orion/auto/deploy-tailscale-operator-and-externalse-1778415920810 into main
Auto-merged by ORION: Deploy Tailscale Operator and ExternalSecret
2026-05-10 12:25:21 +00:00
gitea-admin 104fcf5eca Deploy Tailscale Operator and ExternalSecret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 12:25:21 +00:00
gitea-admin 58980c72ee Deploy Tailscale Operator and ExternalSecret 2026-05-10 12:25:21 +00:00
gitea-admin 4e58b30418 Merge pull request 'Deploy Tailscale Operator with correct secret' (#21) from orion/auto/deploy-tailscale-operator-with-correct-s-1778415897457 into main
Auto-merged by ORION: Deploy Tailscale Operator with correct secret
2026-05-10 12:24:58 +00:00
gitea-admin 0045292277 Deploy Tailscale Operator with correct secret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 12:24:57 +00:00
gitea-admin da5faa78f9 Merge pull request 'feat: deploy Tailscale Operator with auth secret' (#20) from orion/auto/feat-deploy-tailscale-operator-with-auth-1778415696837 into main
Reviewed-on: #20
2026-05-10 12:23:29 +00:00
gitea-admin 9bc3d2fe60 Merge pull request 'feat: deploy Tailscale Operator with auth secret' (#19) from orion/auto/feat-deploy-tailscale-operator-with-auth-1778415685599 into main
Reviewed-on: #19
2026-05-10 12:23:21 +00:00
gitea-admin 65cfcf17ce Merge pull request 'feat: deploy Tailscale Operator with auth secret' (#18) from orion/auto/feat-deploy-tailscale-operator-with-auth-1778415674454 into main
Reviewed-on: #18
2026-05-10 12:23:08 +00:00
gitea-admin e27aef4304 feat: deploy Tailscale Operator with auth secret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 12:21:37 +00:00
gitea-admin 080a189397 feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:37 +00:00
gitea-admin 75b5ca4f0e feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:37 +00:00
gitea-admin 96fe445998 feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:37 +00:00
gitea-admin c7bdc4a4ac feat: deploy Tailscale Operator with auth secret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 12:21:26 +00:00
gitea-admin 910aae7b46 feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:26 +00:00
gitea-admin 2a92c5a371 feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:26 +00:00
gitea-admin 01eb2ad04d feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:25 +00:00
gitea-admin c5eb76601e feat: deploy Tailscale Operator with auth secret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 12:21:15 +00:00
gitea-admin 9cc349466a feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:15 +00:00
gitea-admin 1a8d36eeb7 feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:14 +00:00
gitea-admin d35f234c14 feat: deploy Tailscale Operator with auth secret 2026-05-10 12:21:14 +00:00
gitea-admin a2eddee64e Merge pull request 'feat: deploy Tailscale Operator and auth secret' (#16) from orion/auto/feat-deploy-tailscale-operator-and-auth--1778378551457 into main
Reviewed-on: #16
2026-05-10 12:18:11 +00:00
gitea-admin 5aa3e9361c Merge pull request 'feat: deploy Tailscale Operator and auth secret' (#17) from orion/auto/feat-deploy-tailscale-operator-and-auth--1778378566626 into main
Reviewed-on: #17
2026-05-10 12:18:01 +00:00
gitea-admin cc8e6a8703 feat: deploy Tailscale Operator and auth secret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 02:02:48 +00:00
gitea-admin 82848e37d6 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:48 +00:00
gitea-admin b3dbc88e04 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:47 +00:00
gitea-admin 440d7bae96 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:47 +00:00
gitea-admin af493fb726 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:47 +00:00
gitea-admin 4d8e974632 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:47 +00:00
gitea-admin ee32969622 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:46 +00:00
gitea-admin 0f18dec449 feat: deploy Tailscale Operator and auth secret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 02:02:33 +00:00
gitea-admin 48885e73b5 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:33 +00:00
gitea-admin e032650eab feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:32 +00:00
gitea-admin 295168bbde feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:32 +00:00
gitea-admin d518b7866f feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:32 +00:00
gitea-admin 06405cc08f feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:31 +00:00
gitea-admin ecb9edb3c8 feat: deploy Tailscale Operator and auth secret 2026-05-10 02:02:31 +00:00
gitea-admin 9dc53835d3 Merge pull request 'feat: add ExternalSecret for Tailscale auth key' (#14) from orion/auto/feat-add-externalsecret-for-tailscale-au-1778373309640 into main
Reviewed-on: #14
2026-05-10 00:36:57 +00:00
gitea-admin 418e32e4eb Merge pull request 'feat: add ExternalSecret for Tailscale' (#15) from orion/auto/feat-add-externalsecret-for-tailscale-1778373314635 into main
Auto-merged by ORION: feat: add ExternalSecret for Tailscale
2026-05-10 00:35:15 +00:00
gitea-admin 21c7856bbd feat: add ExternalSecret for Tailscale
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 00:35:14 +00:00
18 changed files with 236 additions and 163 deletions
+19
View File
@@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tailscale-operator
labels:
app: tailscale-operator
rules:
- apiGroups: [""]
resources: ["pods", "services", "secrets", "configmaps"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["discovery.k8s.io"]
resources: ["endpointslices"]
verbs: ["get", "list", "watch"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
@@ -0,0 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tailscale-operator
labels:
app: tailscale-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tailscale-operator
subjects:
- kind: ServiceAccount
name: tailscale-operator
namespace: apps
+9
View File
@@ -0,0 +1,9 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: tailscale-operator
namespace: apps
labels:
app: tailscale-operator
data:
TS_KUBE_OBJECT_STORE: "true"
+42
View File
@@ -0,0 +1,42 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: apps
labels:
app: tailscale-operator
spec:
replicas: 1
selector:
matchLabels:
app: tailscale-operator
template:
metadata:
labels:
app: tailscale-operator
spec:
serviceAccountName: tailscale-operator
containers:
- name: operator
image: ghcr.io/tailscale/k8s-operator:1.72.0
env:
- name: TS_AUTH_KEY
valueFrom:
secretKeyRef:
name: tailscale-auth
key: TS_AUTH_KEY
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
+3 -8
View File
@@ -3,21 +3,16 @@ kind: ExternalSecret
metadata:
name: tailscale-auth
namespace: tailscale
labels:
app: tailscale
managed-by: orion
spec:
refreshInterval: "1h"
refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target:
name: tailscale-auth
creationPolicy: Owner
template:
type: Opaque
data:
- secretKey: TS_AUTH_KEY
remoteRef:
key: secret/data/tailscale
property: TS_AUTH_KEY
key: tailscale
property: TS_AUTH_KEY
@@ -1,7 +1,7 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: tailscale-auth
name: tailscale-operator
namespace: tailscale
spec:
refreshInterval: 1h
@@ -9,10 +9,10 @@ spec:
name: orion-vault
kind: ClusterSecretStore
target:
name: tailscale-auth
name: tailscale-operator
creationPolicy: Owner
data:
- secretKey: TS_AUTH_KEY
- secretKey: auth-key
remoteRef:
key: secret/tailscale
key: secret/Talos Cluster/tailscale
property: TS_AUTH_KEY
+6
View File
@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: apps
labels:
name: apps
@@ -0,0 +1,17 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tailscale-operator
rules:
- apiGroups: [""]
resources: ["secrets", "configmaps", "services", "pods", "endpoints"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets", "daemonsets"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["tailscale.com"]
resources: ["*"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tailscale-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tailscale-operator
subjects:
- kind: ServiceAccount
name: tailscale-operator
namespace: tailscale
@@ -0,0 +1,57 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: tailscale
labels:
app.kubernetes.io/name: tailscale-operator
spec:
replicas: 1
selector:
matchLabels:
app: tailscale-operator
template:
metadata:
labels:
app: tailscale-operator
spec:
serviceAccountName: tailscale-operator
containers:
- name: operator
image: ghcr.io/tailscale/kubernetes-operator:latest
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: TAILSCALE_AUTH_KEY
valueFrom:
secretKeyRef:
name: tailscale-operator
key: auth-key
ports:
- name: http
containerPort: 8080
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 30
+39
View File
@@ -0,0 +1,39 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tailscale-operator
namespace: tailscale
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tailscale-operator
rules:
- apiGroups: [""]
resources: ["secrets", "configmaps"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch", "patch", "list"]
- apiGroups: [""]
resources: ["pods", "services"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch", "patch", "list"]
- apiGroups: ["apps"]
resources: ["deployments", "daemonsets"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch", "patch", "list"]
- apiGroups: ["operator.tailscale.com"]
resources: ["*"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch", "patch", "list"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tailscale-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tailscale-operator
subjects:
- kind: ServiceAccount
name: tailscale-operator
namespace: tailscale
@@ -0,0 +1,7 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tailscale-operator
namespace: tailscale
labels:
app: tailscale-operator
@@ -0,0 +1,7 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tailscale-operator
namespace: apps
labels:
app: tailscale-operator
-12
View File
@@ -1,12 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: tailscale-operator-secret
namespace: tailscale
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
type: Opaque
data:
# TODO: Fill in the Tailscale auth key (base64 encoded)
authkey: PLACEHOLDER
-66
View File
@@ -1,66 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: tailscale
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
template:
metadata:
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
spec:
serviceAccountName: tailscale-operator
securityContext:
runAsNonRoot: true
containers:
- name: operator
image: ghcr.io/tailscale/operator:v1.76.0
args:
- --hostname=$(POD_NAME)
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
envFrom:
- secretRef:
name: tailscale-operator-secret
ports:
- containerPort: 8080
name: metrics
protocol: TCP
resources:
requests:
cpu: 10m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsUser: 1000
runAsGroup: 1000
capabilities:
drop:
- ALL
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
-7
View File
@@ -1,7 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: tailscale
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
-48
View File
@@ -1,48 +0,0 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tailscale-operator
namespace: tailscale
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tailscale-operator
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
rules:
- apiGroups: ['']
resources: ['secrets', 'services', 'endpoints']
verbs: ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete']
- apiGroups: ['']
resources: ['nodes']
verbs: ['get', 'list', 'update', 'patch']
- apiGroups: ['apps']
resources: ['daemonsets']
verbs: ['get', 'list', 'watch']
- apiGroups: ['tailscale.com']
resources: ['*']
verbs: ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete']
- apiGroups: ['coordination.k8s.io']
resources: ['leases']
verbs: ['get', 'create', 'update']
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tailscale-operator
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tailscale-operator
subjects:
- kind: ServiceAccount
name: tailscale-operator
namespace: tailscale
-18
View File
@@ -1,18 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: tailscale-operator
namespace: tailscale
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
spec:
type: ClusterIP
ports:
- name: metrics
port: 8080
targetPort: 8080
protocol: TCP
selector:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator