この記事書いたのが2年前で久々にk8sの勉強を始めたらダッシュボードのバージョンがめっちゃ上がってることに気づいたのでせっかくなので導入してみたのでまとめます。
ゴール
クラスタ外のクライアントからkubernetesのダッシュボードを閲覧する
導入
yamlを取得し外部からのアクセスを行えるように以下のようにmanifestを書き換えます。(nodePortは任意です)
--- dashbord.yml 2020-12-11 23:41:41.629261110 -0500 +++ dashbord2.yml 2020-12-11 23:48:10.455847801 -0500 @@ -37,11 +37,9 @@ name: kubernetes-dashboard namespace: kubernetes-dashboard spec: - type: NodePort ports: - port: 443 targetPort: 8443 - nodePort: 30843 selector: k8s-app: kubernetes-dashboard
書き換えが完了したらapplyしてセットアップは完了です。
kubectl apply -f dashboard.yml
tokenの取得
ダッシュボードをデプロイしただけでは管理画面へのアクセスは行えないので公式サンプルにあるtokenを使った認証をしてアクセスします。
サンプルユーザを作成
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard EOF
クラスタロールと紐付け
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
tokenの取得
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
アクセス
以下のようにportを取得しアクセス可能です。
kubectl get svc