ArgoCD dashboardにtailscale経由でアクセスする。
proxmox veの管理画面よろしくArgoCDのdashboardもtailscale経由で公開するのがちょうどよい感じがしたのでtailscale on k8sをセットアップする。
https://tailscale.com/kb/1185/kubernetes
tailscaleのドキュメントはこれ。
https://tailscale.com/kb/1236/kubernetes-operator
Kubernetes operatorのドキュメントはこれ。
Kubernetes operatorを使用する。
https://github.com/tailscale/tailscale/blob/main/cmd/k8s-operator/deploy/chart/values.yaml
helmの設定値は↑で確認することができる。
まず、https://login.tailscale.com/admin/acls/file でTailnetに対するACLを変更する。k8s関連のタグを追加する。
次に、https://login.tailscale.com/admin/settings/oauth でOAuth Clientを設定する。このOAuth Clientの設定はKubernetes ClusterがTailscaleのリソースを操作するために必要。
dependencies:
- name: tailscale-operator
version: 1.72.0
repository: https://pkgs.tailscale.com/helmchartsChart.yamlにtailscale-operatorに関する情報を記述し、
のSecretだけはSealed Secret化してからdeployする。
kubectl create secret generic operator-oauth --dry-run=client --from-literal=client_id=xxxxx --from-literal=client_secret=yyyyy -o yaml > operator-oauth-secret.yaml
kubeseal --namespace tailscale -f operator-oauth-secret.yaml -w operator-oauth-sealed-secret.yaml --controller-name sealed-secrets-app --controller-namespace sealed-secrets正常に起動するとPodのlogに以下のように表示される
YYYY/MM/DD hh:mm:ss tsnet starting with hostname "tailscale-operator", varRoot "/root/.config/tsnet-operator"
YYYY/MM/DD hh:mm:ss LocalBackend state is NeedsLogin; running StartLoginInteractive...
YYYY/MM/DD hh:mm:ss AuthLoop: state is Starting; donehttps://login.tailscale.com/admin/machines
更に↑のmachine欄でtailscale-operatorがtailnetに参加していることを確認することができる。
https://tailscale.com/kb/1437/kubernetes-operator-api-server-proxy
tailnet経由でkube-api-serverにアクセスするために上記ページのセットアップを行う。
// k8s operator
{"action": "accept", "src": ["tag:k8s-readers"], "dst": ["tag:k8s-operator:443"]},access controlのaclsのセクションに上記を追加する。tagsのセクションにもk8s-readersを追加しておく。
更に、Machines一覧でkube-api-serverに接続する予定のPCに対してk8s-readersを適用する。
kubectl create clusterrolebinding tailnet-readers \
--group="tag:k8s-readers" \
--clusterrole=view \
--dry-run=client \
-o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: null
name: tailnet-readers
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Grouptailnet用のcrbも作成しておく。
https://tailscale.com/kb/1080/cli?tab=macos
mac OSにtailscale CLIをinstallする方法はこれ。tailscale自体をinstallしてあればCLI integrationとして簡単にinstallすることができる。
tailscale configure kubeconfig <operator-hostname>operator-hostnameはdefaultでhelm chartをinstallしていればtailscale-operator
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* tailscale-operator.xxx.ts.net tailscale-operator.xxx.ts.net tailscale-auth となっていることが確認できる。
この状態ではmax OSのtailscaleをoffにするとkubectlコマンドが通らなくなることがわかる。
更に、この場合はtag:k8s-readersのGroupにImpersonateしているためview相当の操作しか行うことができない。