Compare commits

..

49 Commits

Author SHA1 Message Date
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
gitea-admin 501913ad5f feat: add ExternalSecret for Tailscale auth key
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 00:35:09 +00:00
gitea-admin 14f2e6bd99 Merge pull request 'feat: add ClusterSecretStore and ExternalSecret for Tailscale' (#13) from orion/auto/feat-add-clustersecretstore-and-external-1778373293466 into main
Auto-merged by ORION: feat: add ClusterSecretStore and ExternalSecret for Tailscale
2026-05-10 00:34:54 +00:00
gitea-admin 53e8a505bd feat: add ClusterSecretStore and ExternalSecret for Tailscale
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-10 00:34:53 +00:00
gitea-admin 2d8cc39df2 feat: add ClusterSecretStore and ExternalSecret for Tailscale 2026-05-10 00:34:53 +00:00
gitea-admin 9b9c164312 Merge pull request 'feat: apply tailscale-auth ExternalSecret' (#11) from orion/auto/feat-apply-tailscale-auth-externalsecret-1778363886223 into main
Auto-merged by ORION: feat: apply tailscale-auth ExternalSecret
2026-05-09 21:58:07 +00:00
gitea-admin 0f9575042c feat: apply tailscale-auth ExternalSecret
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-09 21:58:06 +00:00
gitea-admin 7088256cf4 Merge pull request 'feat: deploy Tailscale operator' (#10) from orion/auto/feat-deploy-tailscale-operator-1778357494349 into main
Reviewed-on: #10
2026-05-09 21:42:39 +00:00
gitea-admin faa45e87da feat: deploy Tailscale operator
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-09 20:11:34 +00:00
gitea-admin 142911c8d2 feat: deploy Tailscale operator 2026-05-09 20:11:34 +00:00
17 changed files with 273 additions and 84 deletions
@@ -0,0 +1,45 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: tailscale
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:v1.78.0
env:
- name: TS_AUTHKEY
valueFrom:
secretKeyRef:
name: tailscale-auth
key: TS_AUTH_KEY
- name: DEPLOYMENT_TYPE
value: "k8s"
ports:
- containerPort: 8080
name: http-metrics
readinessProbe:
httpGet:
path: /metrics
port: http-metrics
initialDelaySeconds: 10
periodSeconds: 15
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
@@ -10,17 +10,14 @@ metadata:
name: tailscale-operator
rules:
- apiGroups: [""]
resources: ["pods", "services", "endpoints", "namespaces", "events", "configmaps"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
resources: ["secrets", "services", "endpoints", "namespaces", "nodes"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["apps"]
resources: ["deployments", "daemonsets"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
resources: ["deployments", "statefulsets", "daemonsets"]
verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: ["tailscale.com"]
resources: ["*"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingressclasses"]
verbs: ["get", "list", "watch"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
@@ -0,0 +1,14 @@
apiVersion: external-secrets.io/v1
kind: ClusterSecretStore
metadata:
name: orion-vault
namespace: vault
spec:
provider:
vault:
server: "http://vault.vault.svc.cluster.local:8200"
path: "secret"
auth:
agentAuth:
path: "kubernetes"
namespace: "vault"
+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
@@ -0,0 +1,18 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: tailscale-auth
namespace: tailscale
spec:
refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target:
name: tailscale-auth
creationPolicy: Owner
data:
- secretKey: TS_AUTH_KEY
remoteRef:
key: tailscale
property: TS_AUTH_KEY
@@ -1,6 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: tailscale
name: apps
labels:
name: tailscale
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,35 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: tailscale
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:v1.78.3
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: TS_AUTH_KEY
valueFrom:
secretKeyRef:
name: tailscale-auth
key: TS_AUTH_KEY
@@ -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
+9 -40
View File
@@ -4,28 +4,21 @@ metadata:
name: tailscale-operator
namespace: tailscale
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
app: tailscale-operator
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
app: tailscale-operator
template:
metadata:
labels:
app.kubernetes.io/name: tailscale
app.kubernetes.io/component: operator
app: tailscale-operator
spec:
serviceAccountName: tailscale-operator
securityContext:
runAsNonRoot: true
containers:
- name: operator
image: ghcr.io/tailscale/operator:v1.76.0
args:
- --hostname=$(POD_NAME)
image: ghcr.io/tailscale/k8s-operator:v1.78.3
env:
- name: POD_NAME
valueFrom:
@@ -35,32 +28,8 @@ spec:
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
- name: TS_AUTH_KEY
valueFrom:
secretKeyRef:
key: TS_AUTH_KEY
name: tailscale-auth
@@ -0,0 +1,18 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: tailscale-auth
namespace: tailscale
spec:
refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target:
name: tailscale-auth
creationPolicy: Owner
data:
- secretKey: TS_AUTH_KEY
remoteRef:
key: secret/tailscale
property: TS_AUTH_KEY
-34
View File
@@ -1,34 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: tailscale
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:v1.78.3
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: TAILSCALE_API_CLIENT_ID
value: ""
- name: TAILSCALE_API_CLIENT_SECRET
value: ""