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

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

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

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

登録済みクラスタについて

Kubernetes クラスタをプロジェクト Environ に登録すると、統一された方法で複数のクラスタとそのワークロードを表示、管理できます(Cloud Console で一緒に表示するなど)。Google Cloud の外部でクラスタを表示するには、Anthos を有効にする必要があります。

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

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

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

Environ の詳細については、Environ の概要をご覧ください。クラスタの登録と 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 は、クラスタのノード、永続ボリューム、ストレージ クラスに対する 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"]
  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 クラスタに移動

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

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

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

Basic 認証を使用したログイン

コンソール

Basic 認証を使用してクラスタにログインするには、次の手順に従います。

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

    GKE クラスタに移動

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

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

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

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

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

コンソール

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

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

    GKE クラスタに移動

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

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

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

次のステップ