以前は、なんとなくなんだが、ダッシュボードを入れてみた。ただコマンドラインを使う方が多いので、単なる見栄えというか、リソース食いなので入れなくなってきた。おまけに、Kubernetes 1.25までしかサポートされていない。
と思っていたら、v3.0.0-alpha0というのがリリースされていた。
https://github.com/kubernetes/dashboard/releases/tag/v3.0.0-alpha0
helmでインストールができるらしい。
https://artifacthub.io/packages/helm/k8s-dashboard/kubernetes-dashboard
v1.21から対応しているとのこと。ただしアップグレードはできないので、新規作成となる。v2.7までは単体提供だったのだが、v3からは metricsサーバやら、cert-managerやらnginxが一緒に入るらしい。つまり、既存で入れている人には余計な迷惑になる。
というわけで、自分の環境に入れてみた。
自分の環境は、 Kubernetes v1.26で、 metallbとingress-nginx、そして、 metricsサーバはインストールされているという環境。
インストールステップは以下。
まず、 helm レポジトリを登録
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm repo update
ingressのホスト名がlocalhost なので、FQDNにする。
helm show values kubernetes-dashboard/kubernetes-dashboard > values.yaml
sed -i -e "s/- localhost/- dashboard-test.example.com/g" values.yaml
helmのインストールコマンドは以下
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard --set=cert-manager.enabled=true --set=metrics-server.enabled=false --set=nginx.enabled=false -f values.yaml
cert-managerだけを有効にしている。webhookのエラーが出るがとりあえず無視。
RBACの設定
cat <<EOF | kubectl -n kubernetes-dashboard apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl -n kubernetes-dashboard 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
cat <<EOF | kubectl -n kubernetes-dashboard apply -f -
apiVersion: v1
kind: Secret
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
EOF
アクセス方法
トークンは以下で確認できる。
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath="{".data.token"}" | base64 -d ; echo ""
アクセス先のホスト名は以下で確認できる。
kubectl -n kubernetes-dashboard get ingress
ブラウザでhttps://ホスト名/ へアクセスして、トークンでログインすれば完了。
作ってみたけど、イマイチ使い道がない。。。