GKE Identity Service によるクラスタへのアクセス

GKE Identity Service は、組織の既存の ID プロバイダを使用して複数の GKE Enterprise 環境のクラスタに対して認証を行うことができる認証サービスです。これにより、同じ ID を使用して Google Cloud、オンプレミス、その他のパブリック クラウドのクラスタにログインできます。このドキュメントは、このサービスを使用してクラスタにアクセスする必要があるデベロッパーやその他の GKE クラスタ ユーザーを対象としています。Connect Gateway で Google Cloud ID を使用してクラスタにログインする必要がある場合は、Connect Gateway の使用をご覧ください。

組織またはチームに対して GKE Identity Service を設定する必要があるクラスタまたはプラットフォーム管理者は、GKE Identity Service の概要で、サポートされるクラスタ環境、その他の前提条件、関連する設定ガイドを確認してください。

コマンドラインからクラスタにログインする

コマンドラインからクラスタ認証を行うには、クラスタ管理者が提供する特別なログイン構成ファイルを使用して、gcloud 認証コマンドを実行する必要があります。

始める前に

  1. 次のコマンドライン ツールがインストールされていることを確認します。

    • Google Cloud CLI の最新バージョン。Google Cloud とやり取りするためのコマンドライン ツールである gcloud が含まれています。Google Cloud CLI をインストールする必要がある場合は、インストール ガイドをご覧ください。
    • kubectl。Kubernetes クラスタにコマンドを実行するために使用します。kubectl をインストールする必要がある場合は、インストール ガイドをご覧ください。
  2. 以下のコマンドを実行して、anthos-auth コンポーネントをインストールまたは更新します。

    gcloud components update
    gcloud components install anthos-auth
  3. 次のコマンドを実行して、ツールが正常にインストールされたことを確認します。

    gcloud anthos auth version

    バージョンが返されたら、インストールは正常に完了しています。

構成ファイルを取得する

gcloud CLI は、認証構成ファイルのファイル名とローカルマシン上の場所を想定しています。ユーザーの代わりに管理者がマシンにファイルをコピーすることもできます。ファイルを手動で指定し、マシンに保存する必要がある場合は、デフォルト値を使用して gcloud 認証コマンドを簡素化します。

認証構成ファイルをデフォルトの場所にコピーするには、次のコマンドを使用します。

Linux

mkdir -p  $HOME/.config/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/.config/google/anthos/kubectl-anthos-config.yaml

ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml

macOS

mkdir -p  $HOME/Library/Preferences/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml

Windows

md "%APPDATA%\google\anthos"
copy [AUTH_CONFIG_FILE] "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml

別のファイル名や場所を使用する場合(たとえば、管理者が安全な URL でファイルを提供する場合など)、認証リクエストごとに --login-config フラグを使用して指定できます。詳細は以下のセクションをご覧ください。

クラスタに対して認証を行う

gcloud コマンドを実行してクラスタで認証します。

  1. gcloud anthos auth login コマンドを実行して認証フローを開始します。

    gcloud anthos auth login \
     --cluster [CLUSTER_NAME] \
     --user [USER_NAME] \
     --login-config [AUTH_CONFIG_FILE_PATH] \
     --login-config-cert [CA_CERT_PEM_FILE] \
     --kubeconfig [CLUSTER_KUBECONFIG]

    ここで

    • [CLUSTER_NAME](省略可)には、クラスタの名前を指定します。このフラグを省略すると、認証構成ファイルで指定されたクラスタから選択するよう求められます。

    • [USER_NAME](省略可)には、kubeconfig ファイルに格納されている認証情報のユーザー名を指定します。デフォルト値は [CLUSTER_NAME]-anthos-default-user です。

    • [AUTH_CONFIG_FILE_PATH](省略可)には、認証構成ファイルが保存またはホストされるカスタムパスまたは URL を指定します。ファイルがデフォルトの場所にある場合、このパラメータは省略できます。例: --login-config /path/to/custom/authentication-config.yaml

    • [CA_CERT_PEM_FILE](省略可)には、CA からの PEM 証明書ファイルのパスを指定します。認証構成ファイルが安全にホストされている場合は、HTTPS 接続を使用してファイルにアクセスできます。例: --login-config-cert my-cert.pem

    • [CLUSTER_KUBECONFIG](省略可)には、クラスタの kubeconfig ファイルへのカスタムパスを指定します。OpenID プロバイダから返される OIDC ID トークンは、kubeconfig ファイルに格納されます。

      このフラグは、kubeconfig ファイルがデフォルト以外の場所にある場合に使用します。このフラグを省略すると、認証トークンがデフォルトの場所にある kubeconfig ファイルに追加されます。例: --kubeconfig /path/to/custom.kubeconfig

    :

    • 特定のクラスタに対して認証します。

      gcloud anthos auth login --cluster my-production-cluster
      
    • プロンプトを使用して、認証するクラスタを選択します。

      gcloud anthos auth login
      

      結果:

      Please use the --cluster flag to specify a cluster from the list below:
      Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml
      1. Cluster: projects/1000000000000/locations/global/memberships/gke-gcp-cluster ServerIP: https://104.198.180.50:440
      2. Cluster: projects/1000000000000/locations/global/memberships/gke-baremetal-cluster ServerIP: https://104.198.180.51:440
      3. Cluster: projects/1000000000000/locations/global/memberships/gke-onprem-cluster ServerIP: https://104.198.180.52:440
      4. Cluster: projects/1000000000000/locations/global/memberships/gke-aws-cluster ServerIP: https://104.198.180.53:440
      
    • ホストされている認証構成ファイルを使用します。

      gcloud anthos auth login \
       --cluster my-production-cluster \
       --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \
       --login-config-cert my-cert.pem
      
    • プロンプトを使用して認証オプションを選択します。サンプルを含む詳細については、後述の認証オプションを選択するをご覧ください。

  2. ブラウザベースの同意画面で認証情報を入力します。成功すると、kubectl コマンドでクラスタの Kubernetes API サーバーでの認証に使用する ID トークンが kubeconfig ファイルに保存されます。

  3. いずれかの kubectl コマンドを実行して、クラスタのリソースにアクセスし、認証が成功したことを確認します。たとえば、クラスタの nodes リソースにアクセスできる場合(このアクセスはクラスタ管理者によって構成されます)、次のコマンドを実行してクラスタのノードを確認できます。

    kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]

ユーザー アクセスに関する問題のトラブルシューティングについては、ユーザー アクセスの問題のトラブルシューティングをご覧ください。

認証方法を選択する

クラスタ管理者がクラスタ用に複数の ID プロバイダ(OIDC プロバイダや LDAP サーバーなど)を構成し、クラスタのデフォルト プロバイダを構成していない場合は、次の例に示すように、ログイン時に認証オプションの選択を求めるプロンプトが表示されます。

gcloud anthos auth login

Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

1

Setting Preferred Authentication option to [LDAP Server]

数値を入力してから、上のクラスタに対する認証を行うの説明に従ってログインを続けます。

選択した認証オプションは、クラスタ管理者がこのクラスタのデフォルト プロバイダを変更するか、ユーザーが自分で変更するまで保持されます。おすすめの認証オプションを変更するには、--set-preferred-authentication フラグを使用します。

gcloud anthos auth login --set-preferred-authentication

次の例のような結果が表示されます。任意の新しい認証オプションを選択できます。

Your current authentication method is [1] AD Server. Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

2

Setting Preferred Authentication option to [OIDC]

SSH を使用してリモートマシンから認証を行う

リモートマシンに SSH 接続し、リモートマシンからクラスタに対して認証を行うとします。これを実行するには、認証構成ファイルがリモートマシン上にあり、ローカルマシンから Open ID プロバイダにアクセスできる必要があります。

ローカルマシンで、次のコマンドを実行します。

ssh [USER_NAME]@[REMOTE_MACHINE] -L [LOCAL_PORT]:localhost:[REMOTE_PORT]

ここで

  • [USER_NAME][REMOTE_MACHINE] は、SSH でのログインに使用される標準の値です。

  • [LOCAL_PORT] は、リモートマシンへのアクセスに使用するローカルマシン上の任意のオープンポートです。

  • [REMOTE_PORT] は、OIDC リダイレクト URL 用に構成したポートです。これは、認証構成ファイルの kubectlRedirectURI フィールドで確認できます。

SSH シェルで次のコマンドを実行して、認証を開始します。

gcloud anthos auth login --login-config [AUTH_CONFIG_FILE]

ここで、[AUTH_CONFIG_FILE] はリモートマシン上の認証構成ファイルのパスです。

ローカルマシンのブラウザで、http://localhost:[LOCAL_PORT]/login にアクセスして OIDC ログインフローを完了します。

これで、リモートマシンの kubeconfig ファイルに、クラスタにアクセスするために必要なトークンが用意されます。

SSH シェルで、クラスタにアクセスできることを確認します。

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get nodes

Google Cloud コンソールからクラスタにログインする

Google Cloud コンソールからクラスタにログインする方法については、Google Cloud コンソールからクラスタを操作するをご覧ください。