動かざることバグの如し

近づきたいよ 君の理想に

Kubernetes Dashboardをインストールする

環境

先にmetrics-serverをインストールして kubectl top node コマンドが使えるようにしておく必要がある(Dashboardはただのビューアーなので

やりたいこと

自分のクラスタ上でダッシュボードを見てニヤニヤしたい

github.com

インストール

例によって公式README参照

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/alternative.yaml

アクセス

まずはポートフォワードで画面を見る

kubectl port-forward service/kubernetes-dashboard 8000:80 -n kubernetes-dashboard

で、 http://localhost:8000/ へアクセスできれば成功

起動パラメータ編集

デフォルトだとhttps経由じゃないとアクセスできない。が、alternative版はそもそもhttpsをサポートしてないのでこのままだと一生ポートフォワードしないと見れない。

そこでパラメータを以下のように編集する

kubectl -n kubernetes-dashboard edit deploy kubernetes-dashboard
spec:
  containers:
  - args:
    - --namespace=kubernetes-dashboard
+    - --disable-settings-authorizer
+    - --enable-insecure-login
+    - --insecure-bind-address=0.0.0.0
+    - --enable-skip-login

でデプロイ再起動

確認

$ kubectl -n kubernetes-dashboard get deploy kubernetes-dashboard -o json| jq '.spec.template.spec.containers[0].args'
[
  "--namespace=kubernetes-dashboard",
  "--disable-settings-authorizer",
  "--enable-insecure-login",
  "--insecure-bind-address=0.0.0.0",
  "--enable-skip-login"
]

認証無しでログインしたい場合

とりあえず楽に見たかった。 --enable-skip-login を追加した場合、以下のように「Skip」ボタンが表示されクリックするとそのままダッシュボードの画面に飛べる

スクリーンショット 2022-07-29 9.02.30.png

が、

replicationcontrollers is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "replicationcontrollers" in API group "" in the namespace "default"

のようにエラーになってしまい各メトリクスを見る方法がわからなかった。

トークンで認証する場合

公式ドキュメントを参考

dashboard/creating-sample-user.md at master · kubernetes/dashboard

ダッシュボード用のサービスアカウント作成

kubectl create serviceaccount -n kubernetes-dashboard admin-user

ロール作成

cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
EOF

トークン生成

kubectl -n kubernetes-dashboard create token admin-user

表示されたトークンでログインできる

ロードバランサー経由でアクセスしたい

結果から言うと成功していない

ロードバランサータイプに変更する

$ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "LoadBalancer"}}'

が、「--enable-insecure-login」を有効にしてもログインできない。。。

バグと言うか仕様っぽいな

Dashboard login not authorized while --enable-insecure-login and protocolHttp options are set to true · Issue #5612 · kubernetes/dashboard

参考リンク