チュートリアル: Kubernetes ダッシュボード (ウェブ UI) のデプロイ - Amazon EKS

チュートリアル: Kubernetes ダッシュボード (ウェブ UI) のデプロイ

このチュートリアルでは、Kubernetes ダッシュボードを、CPU およびメモリメトリクスを備えた Amazon EKS クラスターにデプロイする手順について説明します。クラスターを表示および管理するダッシュボードに安全に接続できる Amazon EKS 管理者サービスアカウントの作成にも役立ちます。


            Kubernetes ダッシュボード

前提条件

このチュートリアルでは、以下のことを前提としています。

ステップ 1: Kubernetes メトリクスサーバーをデプロイする

Kubernetes メトリクスサーバーは、クラスター内のリソース使用状況データを集約し、デフォルトでは Amazon EKS クラスターにデプロイされません。Kubernetes ダッシュボードでは、メトリクスサーバーを使用して、時間の経過に伴う CPU やメモリの使用状況など、クラスターのメトリクスを収集します。

メトリクスサーバーをデプロイするには

  1. 次のコマンドを使用してメトリクスサーバーをデプロイします。

    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
  2. 次のコマンドを使用して、metrics-server デプロイメントで必要な数のポッドが実行されていることを確認します。

    kubectl get deployment metrics-server -n kube-system

    出力

    NAME READY UP-TO-DATE AVAILABLE AGE metrics-server 1/1 1 1 6m

ステップ 2: ダッシュボードのデプロイ

次のコマンドを使用して Kubernetes ダッシュボードをデプロイします。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/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 created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created

ステップ 3: eks-admin サービスアカウントおよびクラスターロールバインディングの作成

デフォルトでは、Kubernetes ダッシュボードユーザーのアクセス許可は制限されています。このセクションでは、管理者レベルのアクセス権限を使用してダッシュボードに安全に接続するために使用できる、eks-admin サービスアカウントおよびクラスターロールバインディングを作成します。詳細については、Kubernetes ドキュメントのサービスアカウントの管理を参照してください。

eks-admin サービスアカウントおよびクラスターロールバインディングを作成するには

重要

この手順で作成された、この例のサービスアカウントにはクラスターの完全な cluster-admin (スーパーユーザー) 権限があります。詳細については、Kubernetes ドキュメントの RBAC 認証の使用を参照してください。

  1. 以下のテキストを使用して、eks-admin-service-account.yaml という名前のファイルを作成します。このマニフェストでは、サービスアカウントと、eks-admin と呼ばれるクラスターロールバインディングを定義します。

    apiVersion: v1 kind: ServiceAccount metadata: name: eks-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: eks-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: eks-admin namespace: kube-system
  2. サービスアカウントおよびクラスターロールバインディングをクラスターに適用する。

    kubectl apply -f eks-admin-service-account.yaml

    出力:

    serviceaccount "eks-admin" created clusterrolebinding.rbac.authorization.k8s.io "eks-admin" created

ステップ 4: ダッシュボードに接続する

これで、Kubernetes ダッシュボードがクラスターにデプロイされました。クラスターを表示および管理するのに使用できる管理者サービスアカウントがあるため、このサービスアカウントを使用してダッシュボードに接続できます。

Kubernetes ダッシュボードに接続するには

  1. eks-admin サービスアカウントの認証トークンを取得します。出力から<authentication_token>の値をコピーします。このトークンを使用してダッシュボードに接続します。

    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')

    出力:

    Name: eks-admin-token-b5zv4 Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: <authentication_token>
  2. kubectl proxy を開始します。

    kubectl proxy
  3. ウェブブラウザで以下のリンクを開いて、ダッシュボードエンドポイントにアクセスします。http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login

  4. [トークン] を選択して、前のコマンドからの<authentication_token>出力を [トークン] フィールドに貼り付け、[サインイン] を選択します。

    
                        Kubernetes トークン認証
    注記

    CPU とメモリメトリクスがダッシュボードに表示されるまでに数分かかることがあります。

ステップ 5: 次のステップ

Kubernetes ダッシュボードに接続した後、eks-admin サービスアカウントを使用してクラスターを表示および管理できます。ダッシュボードの使用の詳細については、GitHub のプロジェクトドキュメントを参照してください。