kubernetesのDashboardを外部からアクセスした時のメモです。
環境
以下と同じ環境です。
ダッシュボードのインストール
masterノードで以下のコマンドを実行します。
1 2 |
[root@k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml |
ダッシュボードがインストールされて起動していることを確認します。
1 2 3 |
[root@k8s-master ~]# kubectl get pods --all-namespaces | grep dashboard kube-system kubernetes-dashboard-5f7b999d65-cxzg7 1/1 Running 0 114s |
クラスタの任意ノードからアクセスできるように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@k8s-master ~]# kubectl -n kube-system edit service kubernetes-dashboard (snip) spec: (snip) ports: - port: 443 protocol: TCP targetPort: 8443 nodePort: 32002 <- nodePortを追加 (snip) type: ClusterIP <- これを以下のように修正 type: NodePort <- ClusterIPからNodePortへ変更 (snip) |
dashboardのPORT(S)に (ここでは)32002
が表示されていることを確認します。
1 2 3 4 5 |
[root@k8s-master ~]# kubectl get svc --all-namespaces NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE (snip) kube-system kubernetes-dashboard NodePort 10.97.43.70 <none> 443:32002/TCP 16m |
管理者ユーザー作成
ダッシュボードにログインする管理者ユーザーを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@k8s-master ~]# cat << EOF > dashboard-admin.yml > apiVersion: rbac.authorization.k8s.io/v1beta1 > kind: ClusterRoleBinding > metadata: > name: kubernetes-dashboard > labels: > k8s-app: kubernetes-dashboard > roleRef: > apiGroup: rbac.authorization.k8s.io > kind: ClusterRole > name: cluster-admin > subjects: > - kind: ServiceAccount > name: kubernetes-dashboard > namespace: kube-system > EOF [root@k8s-master ~]# kubectl create -f dashboard-admin.yml clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created |
ダッシュボードへログインするための管理者ユーザーのTokenを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@k8s-master ~]# kubectl -n kube-system get secret | grep dashboard-token | awk '{print $1}' | xargs kubectl -n kube-system describe secret Name: kubernetes-dashboard-token-lvzmb Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: kubernetes-dashboard kubernetes.io/service-account.uid: 238a3987-638f-11e9-82c2-005056b625c0 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1sdnptYiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjIzOGEzOTg3LTYzOGYtMTFlOS04MmMyLTAwNTA1NmI2MjVjMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.BalhJ9sQ0sSqOdf9ziz4-gVoN5NJo-1VkZdEcJrm3uH_oGDYEonOkKpEawNQhZ_6Ef348oG8qW0C7IlvnNPa3hfsx9exxFYc7ASar_8F3xuiU5E1_IES33QY4aq4NcIiHrt2zeg5sU9IxhWnhrqmn3kjos-AeDGPSYyKtPQ2TnbC7P0eRIMDlKDlLDC7-aoIaNaAuKq_p9AsA9pj6yKZebA1Dk18eX8eGHqM6nMgyi7-EK1hJ-dCvx3zuZjqN0r4SuU96jx5KWMHccaB-5k-rD6nppeY18ilFzTCACQxPPHY2QtJrN5mduYO-kg7A4vuZ8-whsSI-UKPb6MaC-jkWw |
ダッシュボードログイン
以下のアドレスにアクセスします。
URL |
---|
https://ノードIP:表示されたポート番号 |
トークン
に確認した token
を入力して サインイン
をクリックします。
問題なくログインできることを確認します。