はじめに
K8sの学習にて、DashBordのログイン方法に少し手間取ったのでメモを残しておきます。
環境
今回、KubernetesはDocker Desktop(mac)のKubernetes連携を使用してローカル上にデプロイしています。
バージョンは下記の通り。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T21:16:14Z", GoVersion:"go1.16.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:15:20Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
KubeDashBordのデプロイ
以下を実行
実行後、新たにNamespaceが作成され、ダッシュボードに必要なリソースがデプロイされて行きます
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
#上記の実行結果
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
とりあえずgetで確認↓ ちゃんと動いてそうですね。
$ kubectl get pod,deploy,svc,secret,cm,role -n kubernetes-dashboard
#結果
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-7b59f7d4df-6tg9d 1/1 Running 0 5m14s
pod/kubernetes-dashboard-74d688b6bc-7b5jp 1/1 Running 0 5m14s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dashboard-metrics-scraper 1/1 1 1 5m14s
deployment.apps/kubernetes-dashboard 1/1 1 1 5m14s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.109.49.245 <none> 8000/TCP 5m14s
service/kubernetes-dashboard ClusterIP 10.101.211.202 <none> 443/TCP 5m14s
NAME TYPE DATA AGE
secret/default-token-w2lr4 kubernetes.io/service-account-token 3 5m14s
secret/kubernetes-dashboard-certs Opaque 0 5m14s
secret/kubernetes-dashboard-csrf Opaque 1 5m14s
secret/kubernetes-dashboard-key-holder Opaque 2 5m14s
secret/kubernetes-dashboard-token-k2scs kubernetes.io/service-account-token 3 5m14s
NAME DATA AGE
configmap/kubernetes-dashboard-settings 0 5m14s
NAME CREATED AT
role.rbac.authorization.k8s.io/kubernetes-dashboard 2021-05-08T15:07:39Z
KubernetesdashBordへサインインしてみる
ではダッシュボードにアクセスしてみます。
以下コマンドでダッシュボードへのプロキシサーバを立ち上げ、ブラウザからアクセスします。
$ kubectl proxy
そういえば、secretにkubernetes-dashboard-token-k2scsなるものがあったような。。(上記のkubect get ...で確認しています。)
一度中身を確認してみます。
kubectl describe secret kubernetes-dashboard-token-k2scs -n kubernetes-dashboard
#結果
Name: kubernetes-dashboard-token-k2scs
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: kubernetes-dashboard
kubernetes.io/service-account.uid: 5c9c0022-f970-430b-8cf8-d9b4cb59ea1a
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1066 bytes
namespace: 20 bytes
token: /*ここにトークンが表示されます*/
何かトークンらしきものがありました。
ちなみに、kubectl get secret kubernetes-dashboard-token-k2scs -n kubernetes-dashboard -o yaml
でもtokenは取得できますが、echo /*取得したtoken*/ | base64 -D
で複合してあげる必要があります。
こいつを入力してみると、、、
無事ログインできました。
ちゃんとリソースも見れてそうですね。
最後に
とりあえずサインインはできましたが、きちんと権限の絞ったroleを作成する必要がありそうです。