ipn/store: add ability to store data as k8s secrets.

Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
Maisem Ali
2021-09-01 08:11:43 -07:00
committed by Maisem Ali
parent f53792026e
commit 0842e2f45b
11 changed files with 493 additions and 4 deletions

20
docs/k8s/README.md Normal file
View File

@@ -0,0 +1,20 @@
# Using Kubernetes Secrets as the state store for Tailscale
Tailscale supports using Kubernetes Secrets as the state store, however there is some configuration required in order for it to work.
**Note: this only works if `tailscaled` runs inside a pod in the cluster.**
1. Create a service account for Tailscale (optional)
```
kubectl create -f sa.yaml
```
1. Create role and role bindings for the service account
```
kubectl create -f role.yaml
kubectl create -f rolebinding.yaml
```
1. Launch `tailscaled` with a Kubernetes Secret as the state store.
```
tailscaled --state=kube:tailscale
```

10
docs/k8s/role.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: tailscale
rules:
- apiGroups: [""] # "" indicates the core API group
resourceNames: ["tailscale"]
resources: ["secrets"]
verbs: ["create", "get", "update"]

12
docs/k8s/rolebinding.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: default
name: tailscale
subjects:
- kind: ServiceAccount
name: tailscale
roleRef:
kind: Role
name: tailscale
apiGroup: rbac.authorization.k8s.io

5
docs/k8s/sa.yaml Normal file
View File

@@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tailscale
namespace: default