地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【k8s】ダッシュボード 2.1を外部から表示させるための手順

qiita.com

この記事書いたのが2年前で久々にk8sの勉強を始めたらダッシュボードのバージョンがめっちゃ上がってることに気づいたのでせっかくなので導入してみたのでまとめます。

ゴール

クラスタ外のクライアントからkubernetesダッシュボードを閲覧する

導入

github.com

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 

f:id:ryuichi1208:20201212135440p:plain