Cloud Console からクラスタへのログイン

このページでは、Google Cloud Console から Google Cloud 外の登録済み Kubernetes クラスタにログインする方法について説明します。

登録済みクラスタにログインすると、Google Cloud 上の Google Kubernetes Engine(GKE)クラスタに対するのと同様に、Cloud Console でそのクラスタを検査して、そのノードの詳細を取得できます。プロジェクトと組織のニーズに応じて、クラスタにログインするための複数の認証方法から選択することができます。

コマンドラインから登録済みクラスタに接続するには、Connect Gateway を使用して登録済みクラスタに接続すると、Anthos Identity Service を使用したクラスタへのアクセスをご覧ください。

登録済みクラスタの概要

Kubernetes クラスタをプロジェクト フリート(旧称「プロジェクト environ」)に登録すると、Cloud Console で複数のクラスタとそのワークロードを同時に表示するなど、一括して表示、管理を行えます。Google Cloud の外部にあるクラスタを表示するには、Anthos を有効にする必要があります。

Google Cloud の外部(オンプレミスや AWS など)にあるマネージド Anthos クラスタは、作成時にプロジェクト フリートへ自動的に登録されます。接続クラスタは、手動で登録する必要があります。また、クラスタを誤って登録解除した場合や、別のプロジェクトに登録する場合も、クラスタは手動で登録することをおすすめします。クラスタを登録する必要がある場合は、クラスタの登録の手順に沿って操作してください。

クラスタを登録すると、登録したクラスタは Cloud Console の GKE と Anthos クラスタページに表示されます。ただし、Google Cloud の外部に存在するクラスタのノードとワークロードなどの詳細を確認するには、このガイドの残りの部分で説明するように、クラスタにログインして認証を行う必要があります。Google Kubernetes Engine クラスタリストでログインが必要なクラスタには、オレンジ色の警告を示す三角形が表示され、ログインを求められます。

Google Kubernetes Engine クラスタリストのスクリーンショット

フリートについてのさらに詳しい説明は、フリートの概要をご覧ください。クラスタの登録と Connect Agent の仕組みの詳細については、Connect のドキュメントをご覧ください。

Google Cloud ID を使用したログイン

この推奨オプションでは、Connect サービスを使用してクラスタの API サーバーにリクエストを転送するときに、プロジェクトと GKE クラスタに対して使用するものと同じ Google Cloud ID を使用して、登録済みクラスタにログインできます。Connect サービスの仕組みの詳細については、Connect Gateway を使用した登録済みクラスタへの接続をご覧ください。

始める前に、ユーザーが Google Cloud ID を使ってログインするうえで必要な設定を管理者がすでに行っていることを確認してください。設定には、登録済みクラスタの表示と許可に必要なすべてのロールとロールベースのアクセス制御(RBAC)権限の付与が含まれます。

コンソール

Google Cloud ID を使用してクラスタにログインするには、次の手順に沿って操作します。

  1. Cloud Console で、[GKE クラスタ] ページに移動します。

    GKE クラスタに移動

  2. クラスタのリストで、登録済みクラスタの横にある [アクション] をクリックし、[ログイン] をクリックします。

  3. [Google ID を使用してログインします] を選択します。

  4. [ログイン] をクリックします。

署名なしトークンを使用したログイン

登録済みクラスタへは、署名なしトークンを使用してログインできます。Kubernetes 認証で指定された、さまざまな種類の署名なしトークンがサポートされています。最も簡単な方法は、クラスタ内に Kubernetes サービス アカウント(KSA)を作成し、その署名なしトークンを使用してログインすることです。

クラスタにログインするすべてのアカウントは、クラスタ内に少なくとも次の Kubernetes RBAC ロールを保持する必要があります。

始める前に

ユーザーまたはプラットフォーム管理者は、登録済みクラスタごとに次の手順を完了する必要があります。

cloud-console-reader RBAC ロールを作成して適用する

Cloud Console でクラスタのリソースを表示するには、関連する権限が必要です。この一連の権限は、クラスタ内に ClusterRole RBAC リソース cloud-console-reader を作成することによって定義します。

cloud-console-reader は、クラスタのノード、永続ボリューム、Pod、ストレージ クラスに対する getlistwatch の権限をユーザーに付与し、それによってユーザーはこれらのリソースに関する詳細情報を表示できます。その後、次のセクションの説明のとおり、この ClusterRole をユーザーのサービス アカウントにバインドできます。

kubectl

cloud-console-reader ClusterRole を作成して適用するには、次のコマンドを実行します。

cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cloud-console-reader
rules:
- apiGroups: [""]
  resources: ["nodes", "persistentvolumes", "pods"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
  resources: ["storageclasses"]
  verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml

サービス アカウントの設定

ユーザーまたはクラスタ管理者が、クラスタにログインするユーザーごとにサービス アカウントを作成することをおすすめします。署名なしトークンを使用する場合は、パスワードを使用するのと同様に、各ユーザーが自分のアカウントを持っている必要があります。KSA の署名なしトークンを使用してログインすると、すべてのオペレーションが KSA として実行され、KSA が保持する RBAC ロールによって制限されます。

KSA は、クラスタ内に少なくとも次の RBAC ロールを保持する必要があります。

KSA を作成して承認する

kubectl

KSA を作成して、それに権限をバインドするには、次の手順に従います。

  1. KSA および ClusterRoleBinding リソースを作成して view および cloud-console-reader Kubernetes RBAC ClusterRoles を KSA にバインドします。

    KSA_NAME=KSA_NAME
    kubectl create serviceaccount ${KSA_NAME}
    kubectl create clusterrolebinding VIEW_BINDING_NAME \
    --clusterrole view --serviceaccount default:${KSA_NAME}
    kubectl create clusterrolebinding CLOUD_CONSOLE_READER_BINDING_NAME \
    --clusterrole cloud-console-reader --serviceaccount default:${KSA_NAME}
    

    以下を置き換えます。

    • KSA_NAME: KSA に付ける名前
    • VIEW_BINDING_NAME: view ClusterRoleBinding リソースに付ける名前。任意の名前を付けることができますが、KSA にちなんだ名前を付けるのが最も簡単です。
    • CLOUD_CONSOLE_READER_BINDING_NAME: cloud-console-reader ClusterRoleBinding リソースに付ける名前。任意の名前を付けることもできます
  2. サービス アカウントに必要な権限に応じて、追加のロールを KSA にバインドします。オプションについては、Kubernetes のデフォルトのロールをご覧ください。

    たとえば、Cloud Marketplace から Kubernetes アプリケーションをデプロイする場合は、cluster-admin ロールを KSA にバインドします。

    kubectl create clusterrolebinding BINDING_NAME \
    --clusterrole cluster-admin --serviceaccount default:KSA_NAME
    

    BINDING_NAME を、サービス アカウントのクラスタ ロール バインディングの名前に置き換えます。

他のアカウントを承認する

kubectl

クラスタにアクセスするすべての他のユーザーまたはサービス アカウントが ClusterRoleBinding リソースを作成して、view ロールと cloud-console-reader ロールを自分のアカウントにバインドします。

  1. viewcloud-console-reader ClusterRoles をバインドします。

    ACCOUNT_NAME=ACCOUNT_NAME
    kubectl create clusterrolebinding VIEW_BINDING_NAME \
    --clusterrole view --serviceaccount default:${ACCOUNT_NAME}
    kubectl create clusterrolebinding CLOUD_CONSOLE_READER_BINDING_NAME \
    --clusterrole cloud-console-reader --serviceaccount default:${ACCOUNT_NAME}
    

    以下を置き換えます。

    • ACCOUNT_NAME: Kubernetes サービス アカウント
    • VIEW_BINDING_NAME: view ClusterRoleBinding リソースに付ける名前。任意の名前を付けることができますが、ユーザーまたはサービス アカウントにちなんだ名前を付けるのが最も簡単です。
    • CLOUD_CONSOLE_READER_BINDING_NAME: view ClusterRoleBinding リソースに付ける名前。任意の名前を付けることもできます。
  2. アカウントに付与するアクセス権に応じて、追加のロールをバインドします。オプションについては、Kubernetes のデフォルトのロールをご覧ください。

    たとえば、cluster-admin ロールをバインドするには、次のコマンドを実行します。

    kubectl create clusterrolebinding BINDING_NAME \
    --clusterrole cluster-admin --serviceaccount default:ACCOUNT_NAME
    

    BINDING_NAME を、サービス アカウントのクラスタ ロール バインディングの名前に置き換えます。

KSA の署名なしトークンの取得

kubectl

KSA の署名なしトークンを取得するには、次のコマンドを実行します。

SECRET_NAME=$(kubectl get serviceaccount KSA_NAME -o jsonpath='{$.secrets[0].name}')
kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 --decode

KSA_NAME を KSA に付ける名前に置き換えます。

このコマンドの出力のトークンをコピーし、次のセクションで使用できるよう保存します。

クラスタへのログイン

コンソール

トークンを使用してクラスタにログインするには、次の手順に沿って操作します。

  1. Cloud Console で、GKE の [GKE クラスタ] ページに移動します。

    GKE クラスタに移動

  2. クラスタのリストで、登録済みクラスタの横にある [アクション] をクリックし、[ログイン] をクリックします。

  3. [トークン] を選択し、[トークン] フィールドに KSA の署名なしトークンを入力します。

  4. [ログイン] をクリックします。

基本認証を使用したログイン

コンソール

基本認証を使用してクラスタにログインするには、次の手順に沿って操作します。

  1. Cloud Console で、GKE の [GKE クラスタ] ページに移動します。

    GKE クラスタに移動

  2. クラスタのリストで、登録済みクラスタの横にある [操作]() をクリックし、[ログイン] をクリックします。

  3. [Basic 認証] を選択し、[ユーザー名] と [パスワード] フィールドに入力します。

  4. [ログイン] をクリックします。

OpenID Connect(OIDC)を使用したログイン

OIDC ID プロバイダを使用するようにクラスタが構成されている場合は、それを使用して Cloud Console からそのクラスタを認証できます。Anthos クラスタに対する OIDC の設定方法については、次のガイドをご覧ください。

Console

OIDC を使用して構成済みのクラスタにログインするには、次の手順に従います。

  1. Cloud Console で、GKE の [GKE クラスタ] ページに移動します。

    GKE クラスタに移動

  2. クラスタのリストで、登録済みクラスタの横にある [アクション] をクリックし、[ログイン] をクリックします。

  3. [クラスタ用に構成された ID プロバイダで認証] を選択します。ID プロバイダにリダイレクトされます。ここで、ログインするか、Cloud Console が自分のアカウントにアクセスすることに同意することが必要になる場合があります。

  4. [ログイン] をクリックします。

次のステップ