ヘッドランプを使用したクラスタへのアクセス

Headlampを使用して、Kubernetes Engine (OKE)を使用して作成したクラスタを表示および管理する方法をご確認ください。

Headlampは、ワークロードの検査、ログとイベントの表示、リソースの編集、アプリケーションのトラブルシューティング、Kubernetes RBAC権限で許可されている操作の実行に使用できるオープン・ソースのKubernetesユーザー・インタフェースです。Headlampをデスクトップ・アプリケーションとして実行するか、Kubernetesクラスタにデプロイできます。

重要

アップストリームKubernetesプロジェクトでは、Kubernetes Dashboardの代替としてHeadlampを推奨しています。Kubernetes Dashboardプロジェクトはアーカイブされ、メンテナンスされなくなりました。Headlampは、同様のクラスタ管理ワークフロー、マルチクラスタ・サポート、拡張性、およびデスクトップとクラスタ内の両方のデプロイメント・オプションを提供します。詳細は、Kubernetes Dashboardからヘッドランプへ: 遷移の理解を参照してください。

クラスタへのアクセス方法に基づいてヘッドランプの実行方法を選択します。

  • 個別の管理者および開発者の場合は、Headlamp Desktopを使用します。Headlamp Desktopはワークステーションで実行され、Kubernetes kubeconfigファイルを使用してクラスタに接続します。各クラスタにHeadlampコンポーネントをデプロイする必要はありません。
  • 共有ブラウザベースのインタフェースの場合は、Headlampをクラスタにデプロイします。Headlampプロジェクトは、クラスタ内デプロイメント用のHelmチャートを提供します。

どちらの場合も、Kubernetes認証とRBACによって、ユーザーが表示できるリソースと実行できる操作が決まります。

Headlamp Desktopの使用

Headlamp Desktopは、クラスタにHeadlampをデプロイせずにワークステーションから1つ以上のクラスタにアクセスする場合に使用します。

Headlamp Desktopを使用してクラスタにアクセスするには:

  1. まだ実行していない場合は、ステップに従って、クラスタのkubeconfig構成ファイルを設定し、(必要に応じて)そのファイルを指すようにKUBECONFIG環境変数を設定します。自分のkubeconfigファイルを設定する必要があります。別のユーザーが設定したkubeconfigファイルを使用してクラスタにアクセスすることはできません。クラスタ・アクセスの設定を参照してください。
  2. 次のように入力して、アクセスするクラスタのKubernetesコンテキストがkubeconfigファイルに含まれていることを確認します:

    kubectl config get-contexts
  3. Headlamp Desktopのドキュメントに記載されているオペレーティング・システムの手順に従って、Headlamp Desktopをインストールします。

    たとえば、macOSでは、次のように入力してHomebrewを使用してHeadlamp Desktopをインストールできます。

    brew install --cask headlamp
  4. Headlamp Desktopを起動します。
  5. アクセスするクラスタまたはKubernetesコンテキストを選択します。
  6. プロンプトが表示されたら、認証を完了します。

Headlampは、kubeconfigファイルのアイデンティティがアクセスを許可されているKubernetesリソースを表示します。Headlampで使用可能な操作は、そのアイデンティティに付与されたKubernetes RBAC権限によって異なります。

Headlamp Desktopはワークステーションで実行されるため、ワーカー・ノード・リソースは消費されず、それ自体は仮想ノードのワークロード制限の対象になりません。

Headlamp In-Clusterのインストール

共有ブラウザベースのインタフェースを提供する場合は、クラスタにHeadlampをデプロイします。

Headlampをインストールする前に、次のことを確認してください。

  • クラスタへのアクセスを設定しました。アクセスを確認するには、kubectl get nodesと入力します。クラスタ・アクセスの設定を参照してください。
  • Helmがインストールされ、環境で使用可能です。helm versionと入力してインストールを検証できます。
  • Kubernetesアイデンティティには、Headlamp Helmチャートでリソースを作成するための十分な権限があります。

Helmを使用してHeadlampをインストールするには:

  1. 次のように入力してHeadlamp Helmリポジトリを追加します:

    helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
    helm repo update
  2. 次のように入力して、ヘッドランプのネームスペースを作成します。

    kubectl create namespace headlamp
  3. 次のように入力してHeadlampをインストールします。

    helm install headlamp headlamp/headlamp --namespace headlamp
  4. 次のように、インストールを検証します。

    kubectl get deployment,pods,service -n headlamp

    Headlampポッドが実行され、準備が完了するまで待ちます。

クラスタ内ヘッドランプ・デプロイメントへの認証

Headlampは、Kubernetes認証とRBACを使用して、ユーザーがアクセスできるクラスタ・リソースを決定します。

Helmチャートを使用してインストールされたHeadlampデプロイメントに対して認証するには:

  1. 次のように入力して、Headlampサービス・アカウントを確認します。

    kubectl get serviceaccount headlamp -n headlamp
  2. 次のように入力して、ClusterRoleBindingを確認します。

    kubectl get clusterrolebinding headlamp-admin -o yaml
    重要

    デフォルトでは、ヘッドランプHelmチャートによってheadlamp-admin ClusterRoleBindingが作成され、cluster-adminロールがheadlampサービス・アカウントに付与されます。cluster-adminロールは、クラスタへの無制限のアクセスを提供します。本番で使用する場合は、使用している環境に必要な権限のみを付与します。

  3. 次のように入力して、Headlampサービス・アカウントの一時トークンを作成します。

    kubectl create token headlamp -n headlamp
  4. コマンド出力からトークンをコピーします。Headlampにアクセスすると、このトークンを入力します。

共有デプロイメントの場合は、サービス・アカウント・トークンを配布するのではなく、OpenID Connect (OIDC)認証を構成することを検討してください。Headlamp in-clusterのドキュメントを参照してください。

クラスタ内ヘッドランプ・デプロイメントへのアクセス

ローカル管理アクセスの場合、kubectl port-forwardを使用してヘッドランプ・サービスにアクセスできます。

  1. 次のように入力して、ローカル・ポート8080をヘッドランプ・サービスに転送します。

    kubectl port-forward -n headlamp service/headlamp 8080:80
  2. ブラウザを開き、次の場所に移動します::

    http://localhost:8080
  3. プロンプトが表示されたら、前に作成した認証トークンを入力します。
重要

kubectl port-forwardコマンドは、仮想ノードで実行されているポッドではサポートされていません。Headlampポッドが仮想ノードで実行されている場合は、イングレスまたは環境でサポートされる別のアクセス方法を使用してHeadlampを公開します。

共有本番アクセスの場合は、ポート転送に依存するのではなく、イングレス、TLSおよび適切な認証メカニズムを構成します。Headlamp in-clusterのドキュメントを参照してください。

仮想ノードでのヘッドランプの使用

ヘッドランプは、仮想ノード・プールを含むクラスタで使用できます。

  • Headlamp Desktopはクラスタの外部で実行され、それ自体は仮想ノードのワークロード制限の対象になりません。検査または管理するワークロードは、そのワークロードが実行されるノード・タイプの機能および制限の対象となります。
  • クラスタ内のヘッドランプ・デプロイメントは、Kubernetesポッドとして実行されます。Headlampポッドが仮想ノードでスケジュールされている場合、ポッドは仮想ノードで実行されている他のワークロードと同じKubernetes機能、ネットワーキング、ストレージおよびリソースの制約の対象となります。

特に、kubectl port-forwardは仮想ノードのポッドではサポートされていません。管理対象ノードとの仮想ノードの比較および仮想ノードによってプロビジョニングされたポッドに割り当てられたリソースを参照してください。

ヘッドランプ・アクセスの検証

Headlampを使用してクラスタに接続した後:

  1. クラスタを選択します。
  2. ネームスペースの選択
  3. 「ワークロード」を開きます。
  4. 「デプロイメント」または「ポッド」を選択します。
  5. リソースを選択して、その詳細、イベント、ログおよび関連リソースを表示します。

表示されるリソースおよび操作は、クラスタへのアクセスに使用したアイデンティティに付与されたKubernetes RBAC権限によって異なります。

Kubernetesメトリック・サーバーがクラスタにインストールされている場合、Headlampはリソース使用状況情報も表示できます。Kubernetesメトリック・サーバーの詳細は、クラスタでのKubernetesメトリック・サーバーのデプロイを参照してください

クラスタ内ヘッドランプ配備の削除

このトピックで作成したHeadlampデプロイメントを削除するには:

  1. 次のように入力してHeadlamp Helmリリースをアンインストールします:

    helm uninstall headlamp -n headlamp
  2. 次のように入力してヘッドランプ・ネームスペースを削除します。

    kubectl delete namespace headlamp

ワークステーションからHeadlamp Desktopを削除しても、それを使用してアクセスしたクラスタは変更されません。