フリートレベルの設定に関する問題のトラブルシューティング

このドキュメントでは、GKE Identity Service のフリートレベルの設定に関するトラブルシューティングの手順について説明します。

フリートレベルの設定に関する問題を解決する

フリートの設定中に発生する可能性のある問題を解決するには、次の操作を行ってください。

1. GKE Identity Service が有効になっているかどうかを検証する

プロジェクトで GKE Identity Service が有効になっているかどうかを確認するには、次のコマンドを実行します。

$ gcloud container fleet identity-service describe

エラーが表示されない場合は、GKE Identity Service が有効になっているので、次の手順に進みます。

エラー: Identity Service Feature for project <your-project-id> is not enabled

このエラーが表示される場合、機能の設定時にフリートで GKE Identity Service が有効になっていなかったことを示します。

解決策: プロジェクトでこの機能が有効になっていることを確認するには、GKE Identity Service のクラスタを構成するの手順をご覧ください。

2. GKE Identity Service のステータスを確認する

GKE Identity Service の現在のステータスを表示するには、次のコマンドを実行します。

$ gcloud container fleet identity-service describe

このコマンドの出力には、次の 2 つのセクションがあります。

  • membershipSpecs には、フリートに登録されている各クラスタに指定した ID プロバイダ構成が含まれます。GKE Identity Service は、これらの構成を使用して各クラスタに構成されます。

  • membershipStates には、関連する ID プロバイダの構成や設定中に発生したエラーなど、各クラスタの GKE Identity Service の現在の状態が表示されます。

クラスタの問題をトラブルシューティングするには、membershipStates でクラスタを検索し、次のフィールドを確認します。

  • state フィールド: membershipStates -> <cluster-identifier> -> identityservice -> state
  • failureReason フィールド: membershipStates -> <cluster-identifier> -> identityservice -> failureReason.

フリートに 2 つのクラスタ helloworldfoobar が登録されている場合、出力は次の構造になります。

Identity Service Feature:
  createTime: '222-11-10T23:05:6.146566392Z'
  membershipSpecs:
    projects/<your-project-number>/locations/<location>/memberships/helloworld:
      identityservice:
        authMethods:
        - name: oidc
          oidcConfig:
            clientId: id
            issuerUri: https://accounts.google.com
            ... other fields
    projects/<your-project-number>/locations/<location>/memberships/foobar:
      identityservice:
        authMethods:
        - name: oidc
          oidcConfig:
            clientId: id
            issuerUri: https://accounts.google.com
            ... other fields 
  membershipStates:
    projects/<your-project-number>/location/<location>/memberships/helloworld:
      identityservice:
        failureReason: AIS feature does not support this cluster type
        memberConfig:
          authMethods:
          - name: oidc
            oidcConfig:
              clientId: id
              issuerUri: https://accounts.google.com
              ... other fields
        state: ERROR
      state:
        code: OK
        updateTime: '2022-11-11T20:39:59.556176650Z'
    projects/<your-project-number>/location/<location>/memberships/foobar:
      identityservice:
        memberConfig:
          authMethods:
          - name: oidc
            oidcConfig:
              clientId: id
              issuerUri: https://accounts.google.com
              ... other fields
        state: OK
      state:
        code: OK
        updateTime: '2022-11-11T20:39:59.556176650Z'

  name: projects/<project-number>/locations/global/features/identityservice
  updateTime: '2022-11-11T20:40:31.859321901Z'

3. クラスタの状態を確認する

クラスタ内の GKE Identity Service の状態を確認するには、次の点を確認します。

  • state 値が OK: これは、membershipSpecs で指定された構成を使用して、クラスタに GKE Identity Service を構成したときにエラーが発生しなかったことを示します。

    トラブルシューティングしているクラスタの構成(helloworld など)が membershipSpecsmembershipStates で異なる場合は、クラスタの構成を更新した可能性があります。GKE Identity Service が変更をクラスタに反映するまで数分待ってから、もう一度ステータスを確認します。

    トラブルシューティングしているクラスタの構成(helloworld など)が membershipSpecsmembershipStates で同じ場合、GKE Identity Service は正しく構成されています。

  • state フィールドが ERROR: これは、membershipSpecs で指定された構成を使用して、クラスタに GKE Identity Service を構成したときにエラーが発生したことを示します。

    問題を解決するには、一般的な問題のトラブルシューティングをご覧ください。必要なトラブルシューティングの手順を完了したら、数分待ってから、もう一度ステータスを確認します。

一般的な問題のトラブルシューティング

GKE Identity Service API が有効になっていない

この問題は、GKE Identity Service API が有効になっていない場合に発生します。

エラー メッセージ

anthosidentityservice.googleapis.com is not enabled

解決策

API を有効にするには、次のコマンドを実行します。

$ gcloud services enable anthosidentityservice.googleapis.com

サポートされていないクラスタタイプ

この問題は、サポートされていないクラスタタイプを使用している場合に発生します。

エラー メッセージ

GKE Identity Service feature does not support this cluster type

解決策

サポートされているクラスタタイプについては、クラスタタイプをご覧ください。新しいクラスタタイプのリクエストについては、Google Cloud サポートにお問い合わせください。

サポートされていないプロトコルが構成にある

この問題は、クラスタに適用した ID 構成に、サポートされていないプロトコルが含まれている場合に発生します。

エラー メッセージ

unsupported protocol found in configuration, aborting reconciliation.

解決策

GKE Identity Service のフリートレベルの設定では、次のことが可能です。

クラスタの構成を更新して、上記のサポート対象のプロトコルのみを含めるようにします。構成を編集するには、次のコマンドを実行します。

kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

CLUSTER_KUBECONFIG は、クラスタの kubeconfig ファイルへのパスに置き換えます。kubeconfig に複数のコンテキストがある場合は、現行のコンテキストが使用されます。コマンドを実行する前に、現在のコンテキストを正しいクラスタにリセットすることが必要になる場合があります。

クラスタに ID 構成がない

この問題は、クラスタに構成が適用されていない場合に発生します。

エラー メッセージ

Authentication configuration is not present for this membership

解決策

クラスタを構成するの手順に沿って、ID 構成をクラスタに適用します。

GKE Hub 管理者の IAM 権限がない

この問題は、使用しているプロジェクトに gkehub.admin ロールがない場合に発生します。

エラー メッセージ

PERMISSION_DENIED: Permission 'gkehub.memberships.list' denied on '`projects//locations//memberships`'
PERMISSION_DENIED: Permission 'gkehub.features.get' denied on '`projects//locations/global/features/identityservice`'
PERMISSION_DENIED: Permission 'gkehub.features.delete' denied on '`projects//locations/global/features/identityservice`'
PERMISSION_DENIED: Permission 'gkehub.features.create' denied on '`projects//locations/global/features/identityservice`'

解決策

ID が project_id のプロジェクトのオーナーは、次のコマンドを実行する必要があります。

gcloud projects add-iam-policy-binding project_id --member=user:USER_ID --role=roles/gkehub.admin

USER_ID は、Google アカウントに置き換えます。

ID 構成に一意でない ID プロバイダが存在する

この問題は、クラスタの GKE Identity Service 構成で、複数の ID プロバイダに同じ name 値が設定されている場合に発生します。

エラー メッセージ

Configuration contains multiple identity providers with the same name

解決策

重複するエントリの名前を変更するか、構成から削除します。

ID 構成に複数の google タイプのプロバイダが存在する

この問題は、ClientConfig が複数の google タイプの構成で構成されている場合に発生します。

エラー メッセージ

configuration contains multiple identity providers of type 'google'

解決策

構成の spec/authentication セクションには、google タイプの構成を 1 つだけ含めることができます。

クラスタの構成を更新して、google タイプの構成が複数存在しないようにします。構成を編集するには、次のコマンドを実行します。

kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

CLUSTER_KUBECONFIG は、クラスタの kubeconfig ファイルへのパスに置き換えます。kubeconfig に複数のコンテキストがある場合は、現行のコンテキストが使用されます。コマンドを実行する前に、現在のコンテキストを正しいクラスタにリセットすることが必要になる場合があります。

ClientConfig のカスタム リソース定義の取得中にエラーが発生した

この問題は、クラスタから ClientConfig のカスタム リソース定義を取得する際にエラーが起きた場合に発生します。

エラー メッセージ

error fetching the ClientConfig's Custom Resource Definition: ERROR_REASON

解決策

ERROR_REASON に表示される詳細情報を使用して、この問題を解決します。

GKE Identity Service ClientConfig の更新中にエラーが発生した

この問題は、クラスタ内の ClientConfig の更新中にエラーがある場合に発生します。

エラー メッセージ

Error updating AIS ClientConfig: ERROR_REASON

解決策

ERROR_REASON> に表示される詳細情報を使用して、この問題を解決します。

クラスタに ClientConfig が存在しない

この問題は、GKE Identity Service のインストール時に作成されるはずの ClientConfig がクラスタに存在しない場合に発生します。ClientConfig がない場合は、GKE Identity Service がクラスタに正しくインストールされていないことを示します。

エラー メッセージ

ClientConfig CR not present, expected to be created when AIS was installed

解決策

クラスタの GKE Identity Service リソースが誤って削除された可能性があります。新しいクラスタの作成を試すことができます。新しいクラスタでも同じエラーが発生する場合は、クラスタ管理者または Google Cloud サポートにお問い合わせください。

GKE Identity Service Pod が起動していない

この問題は、GKE Identity Service Pod が pending 状態にある場合に発生します。

エラー メッセージ

GKE Identity Service pod is not running (pending)

解決策

この問題は数分以内に自動的に解決し、その後、GKE Identity Service Pod は running 状態に切り替わります。