Compare commits

...

34 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 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
9 changed files with 85 additions and 192 deletions
+3 -5
View File
@@ -2,9 +2,7 @@ apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: tailscale-auth
namespace: apps
labels:
app: tailscale-operator
namespace: tailscale
spec:
refreshInterval: 1h
secretStoreRef:
@@ -16,5 +14,5 @@ spec:
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
+39 -32
View File
@@ -4,7 +4,7 @@ metadata:
name: tailscale-operator
namespace: tailscale
labels:
app: tailscale-operator
app.kubernetes.io/name: tailscale-operator
spec:
replicas: 1
selector:
@@ -17,34 +17,41 @@ spec:
spec:
serviceAccountName: tailscale-operator
containers:
- name: operator
image: ghcr.io/tailscale/k8s-operator:v1.78.3
env:
- name: TS_AUTH_KEY
valueFrom:
secretKeyRef:
name: tailscale-auth
key: TS_AUTH_KEY
ports:
- containerPort: 8080
name: metrics
protocol: TCP
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
readinessProbe:
httpGet:
path: /metrics
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /metrics
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
- 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
-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