Tailscale とは、簡単に VPN 環境が構築できるアプリケーションです。VPN を使用したい端末にインストールして起動するだけなので、学習コストがかなり低いです。
無料プランでは 20 端末まで使用できます。個人利用や少人数のチームであれば無料で十分使えます。
Mac, Windows, Linux などあらゆるプラットフォームに対応しており、コミュニティーでは Docker イメージや Helm Chart も公開されています。
今回は Helm Chart を用いておうち kubernetes に導入して、どこでも VPN アクセスしてみようと思います。
tailscale にログインして、「Settings > Personal Settings > Keys」より Generate auth key... をクリックします。
Service リソースの ClusterIP で使用される IP アドレスのサブネットを取得します。
SVCRANGE=$(echo '{"apiVersion":"v1","kind":"Service","metadata":{"name":"tst"},"spec":{"clusterIP":"1.1.1.1","ports":[{"port":443}]}}' | kubectl apply -f - 2>&1 | sed 's/.*valid IPs is //')
echo $SVCRANGE
Helm でインストールします。
helm repo add mvisonneau https://charts.visonneau.fr
helm install \
tailscale-subnet-router \
mvisonneau/tailscale-relay \
--set config.authKey=<YOUR_AUTH_KEY> \
--set config.variables.TAILSCALE_ADVERTISE_ROUTES=<YOUR_SUBNET_RANGE>
以下のリソースが作成されていることが確認できます。
❯ kubectl -n tailscale get all
NAME READY STATUS RESTARTS AGE
pod/tailscale-relay-0 1/1 Running 0 3m6s
NAME READY AGE
statefulset.apps/tailscale-relay 1/1 10m
tailscale.com を開いての Machines を確認すると、tailscale-relay-0
が追加されていることが確認できます。
「Edit route settings」より Subnet routes を有効にします。
❯ip r get 10.43.0.0/16
10.43.0.0 dev utun5 src 100.97.218.103
Mac で tailscale を起動してみます。疎通確認をしてみます。
(特定の Pod と疎通が取れないので調査中)