こんにちは。よっしーです(^^)
今日は、Kubernetes Dashboardについてご紹介します。
背景
Kubernetes Dashboardは、Kubernetesクラスタを視覚化および管理するためのウェブベースのユーザーインターフェース(UI)です。Kubernetesは、コンテナ化されたアプリケーションを効果的に管理するためのオーケストレーションプラットフォームですが、コマンドラインインターフェース(CLI)を使用する場合、操作が複雑になることがあります。
Kubernetes Dashboardを使用すると、グラフィカルなインターフェースを介してKubernetesクラスタを監視し、管理することができます。これにより、クラスタ内のポッド、デプロイメント、サービス、ノードなどのリソースの状態を視覚化し、簡単に操作することができます。
Kubernetes Dashboardでは、クラスタ内のリソースの作成、編集、削除といった一般的な操作を実行することができます。また、クラスタのログやイベントの表示、パフォーマンスメトリクスの監視、アプリケーションのデバッグなどの機能も提供されています。
ただし、Kubernetes Dashboardはセキュリティ上の懸念があるため、公開環境での使用は推奨されていません。セキュリティ上のリスクを最小限に抑えるためには、適切な認証とアクセス制御の設定が必要です。
Kubernetes Dashboard
デプロイ
ダッシュボードをデプロイするには、次のコマンドを実行します。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
アクセス
デプロイしたダッシュボードにアクセスするには、Kubernetes クラスターへの安全なチャネルを作成する必要があります。次のコマンドを実行します。
kubectl proxy
ブラウザで、「http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/」にアクセスします。
下図の画面になれば成功です。
トークン作成
Kubernetes のサービス アカウント メカニズムを使用して新しいユーザーを作成し、このユーザーに管理者権限を付与し、このユーザーに関連付けられたbearer tokenを使用してDashboardにログインする方法を説明します。
下記の内容でマニュフェストファイル(dashboard-adminuser.yaml)を作成します。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
次のコマンドを実行して、アカウントを作成します。
kubectl apply -f dumpboard-adminuser.yaml
次のコマンドを実行して、トークンを取得します。
kubectl -n kubernetes-dashboard create token admin-user
上記のコマンド結果をDashboardのトークン入力の欄に入力して、サインインして、下図のようになれば成功です。
解説
dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
このコードは、Kubernetes Dashboardに対して管理者権限を付与するための設定を行っています。以下に各パートの解説を示します。
apiVersion: v1
- この行は、KubernetesのAPIバージョンを指定しています。
kind: ServiceAccount
- この行は、ServiceAccount(サービスアカウント)オブジェクトを作成することを示しています。ServiceAccountは、Kubernetesクラスタ内のアプリケーションやプロセスに認証情報を提供するためのリソースです。
metadata:
- ここから下は、ServiceAccountオブジェクトのメタデータを指定します。
name: admin-user
- ServiceAccountの名前を「admin-user」として指定しています。
namespace: kubernetes-dashboard
- ServiceAccountを「kubernetes-dashboard」という名前空間に所属させることを示しています。名前空間は、Kubernetes内のリソースをグループ化するための仕組みです。
---
- ここで、2つ目のKubernetesオブジェクトの定義が始まることを示します。
apiVersion: rbac.authorization.k8s.io/v1
- この行は、Kubernetesのロールベースアクセス制御(RBAC)のAPIバージョンを指定しています。
kind: ClusterRoleBinding
- この行は、ClusterRoleBinding(クラスタロールバインディング)オブジェクトを作成することを示しています。ClusterRoleBindingは、クラスタレベルでのロールとサービスアカウントの結びつけを定義します。
metadata:
- ClusterRoleBindingオブジェクトのメタデータを指定します。
name: admin-user
- ClusterRoleBindingの名前を「admin-user」として指定しています。
roleRef:
- ロール参照(roleRef)を指定します。ロール参照は、どのロールをバインドするかを示します。
apiGroup: rbac.authorization.k8s.io
- ロールが属するAPIグループを指定しています。ここではRBAC APIグループを指定しています。
kind: ClusterRole
- バインドするロールの種類を「ClusterRole」として指定しています。
name: cluster-admin
- ロールの名前を「cluster-admin」として指定しています。このロールは、クラスタ全体での管理者権限を持ちます。
subjects:
- バインドされるサブジェクト(Subject)を指定します。サブジェクトは、ロールと関連付ける対象を示します。
- kind: ServiceAccount
- サブジェクトの種類を「ServiceAccount」として指定しています。
name: admin-user
- サブジェクトの名前を「admin-user」として指定しています。これは先ほど定義したServiceAccountの名前と一致しています。
namespace: kubernetes-dashboard
- サブジェクトが所属する名前空間を「kubernetes-dashboard」として指定しています。先ほどのServiceAccountと同じ名前空間です。
この設定によって、Kubernetes Dashboard用の「admin-user」という名前のServiceAccountが作成され、そのServiceAccountには「cluster-admin」という名前のクラスタロールがバインドされます。これにより、Kubernetes Dashboardはクラスタ内のリソースを管理するための広範な権限を持つことになります。
ただし、この設定はセキュリティ上の懸念があります。管理者権限を持つServiceAccountを公開環境で使用する場合は、注意が必要です。適切なアクセス制御を適用し、必要な権限の最小限のみを与えるように設定することが推奨されます。
おわりに
今日は、Kubernetes Dashboardについてご紹介しました。
Kubernetes Dashboardを活用することで、Kubernetesクラスタの管理が簡単かつ効率的になります。クラスタ内のリソースの監視や操作を容易に行い、アプリケーションのデバッグやトラブルシューティングを迅速に行うことができます。Kubernetesの学習や使用をサポートするための貴重なツールとして、Kubernetes Dashboardが役立つことでしょう。
何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント