このページでは、anthos.googleapis.com API が有効になっている Anthos のお客様の Google Cloud Console から、登録済み Kubernetes クラスタにログインする方法について説明します。
概要
署名なしトークンを使用して、Google Cloud Console から登録済みクラスタにログインできます。Kubernetes 認証で指定された、さまざまな種類の署名なしトークンがサポートされています。最も簡単な方法は、クラスタ内に Kubernetes サービス アカウント(KSA)を作成し、その署名なしトークンを使用してログインすることです。
クラスタにログインするすべてのアカウントは、クラスタ内に少なくとも次の Kubernetes RBAC ロールを保持する必要があります。
始める前に
クラスタごとに一度、次の手順を完了しておく必要があります。
クラスタを登録する
Cloud Console を使用してログインできるようにするには、Google Cloud にクラスタを登録する必要があります。クラスタを登録すると、Connect Agent がデプロイされます。これは、クラスタと Google Cloud 間の長期接続を確立する Kubernetes Deployment リソースです。Connect Agent によってクラスタにログインできるようになります。
cloud-console-reader
のロールベースのアクセス制御(RBAC)のロールを作成して適用する
コンソールでクラスタ リソースを表示するには、そのための適切な権限が必要です。この一連の権限を定義するには、クラスタに ClusterRole
RBAC リソース(cloud-console-reader
)を作成します。cloud-console-reader
は、クラスタのノード、永続ボリューム、ストレージ クラスに対する get
、list
、watch
の権限をユーザーに付与し、それによってユーザーはこれらのリソースに関する詳細情報を表示できます。その後、次のセクションの説明のとおり、この ClusterRole
をユーザーのサービス アカウントにバインドできます。
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 の作成と承認
KSA を作成して権限をバインドするには、次の手順に沿って操作します。
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 リソースに付ける名前です。任意の名前を付けることもできます。
サービス アカウントに必要な権限に応じて、追加のロールを KSA にバインドします。一部のオプションについては、Kubernetes のデフォルトのロールをご覧ください。
たとえば、Cloud Marketplace から Kubernetes アプリケーションをデプロイする場合は、
cluster-admin
ロールを KSA にバインドする必要があります。kubectl create clusterrolebinding [BINDING_NAME] \ --clusterrole cluster-admin --serviceaccount default:[KSA_NAME]
[BINDING_NAME] は、サービス アカウントにバインドされているクラスタロールの名前です。
他のアカウントの承認
クラスタにアクセスするすべてのユーザーまたはサービス アカウントに ClusterRoleBinding
リソースを作成して、view
のロールと cloud-console-reader
のロールをアカウントにバインドする必要があります。
view
とcloud-console-reader
の ClusterRole をバインドするには: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}
ここで
- [VIEW_BINDING_NAME] は、
view
ClusterRoleBinding リソースに付ける名前です。任意の名前を付けることができますが、ユーザーまたはサービス アカウントにちなんだ名前を付けるのが最も簡単です。 - [CLOUD_CONSOLE_READER_BINDING_NAME] は、
view
ClusterRoleBinding リソースに付ける名前です。任意の名前を付けることもできます。 - [ACCOUNT_NAME] は Kubernetes サービス アカウントです。
- [VIEW_BINDING_NAME] は、
アカウントに付与するアクセス権に応じて、追加のロールをバインドします。一部のオプションについては、Kubernetes のデフォルトのロールをご覧ください。
たとえば、
cluster-admin
ロールをバインドするには、次のようにします。kubectl create clusterrolebinding [BINDING_NAME] \ --clusterrole cluster-admin --serviceaccount default:[ACCOUNT_NAME]
[BINDING_NAME] は、サービス アカウントにバインドされているクラスタロールの名前です。
KSA の署名なしトークンの取得
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 に付ける名前です。
このコマンドの出力のトークンをコピーし、次のセクションで使用できるよう保存します。
クラスタへのログイン
クラスタにログインするには、次の手順に沿って操作します。
Cloud Console の GKE メニューに移動します。
クラスタのリストで、登録済みクラスタの横にある [ログイン] ボタンをクリックします。
ログインの方法を選択します。
- KSA トークンを使用してログインするには、[トークン] を選択して、[トークン] フィールドに KSA の署名なしトークンを入力し、[ログイン] をクリックします。
- 基本認証を使用している場合は、[基本認証] を選択して、[ユーザー名] フィールドと [パスワード] フィールドに入力し、[ログイン] をクリックします。
- OpenID Connect(OIDC)を使用している場合は、[OpenID Connect] を選択して、[ログイン] をクリックします。
認証に成功すると、クラスタを検査して、ノードの詳細を取得できます。