IBM Cloud におけるクラスタへのアクセスに関する問題のトラブルシューティング Kubernetes

IBM Cloud の Kubernetes クラスターの表示や操作に関する問題を解決するには、ユーザーのアクセス権限とリソースグループの設定を確認してください。

仮想プライベートクラウド クラシック・インフラストラクチャー

クラスタが見つかりません。 ibmcloud oc cluster ls を実行しても、クラスターが出力にリストされません。 あるいは、クラスターで仕事ができない。 ibmcloud oc cluster config やその他のクラスター固有のコマンドを実行しても、クラスターが見つかりません。

IBM Cloud では各リソースが特定のリソース・グループに属している必要があります。 例えば、クラスター mycluster は、default リソース・グループに存在している可能性があります。

アカウント所有者によって IBM Cloud IAM プラットフォーム・アクセス役割を割り当てられてリソースへのアクセス権限を付与されるとき、そのアクセス権限は特定のリソースを対象にしたものである場合と、リソース・グループを対象にしたものである場合があります。 特定のリソースを対象にしたアクセス権限を付与された場合、それが属するリソース・グループへのアクセス権限はありません。 その場合、アクセス権限を持つクラスターを操作するために、そのリソース・グループをターゲットにする必要はありません。 そのクラスターが属するグループとは異なるリソース・グループをターゲットとした場合、そのクラスターに対するアクションは失敗する可能性があります。 反対に、特定のリソース・グループへのアクセス権限の一部として 1 つのリソースへのアクセス権限が付与されている場合、そのグループのクラスターを操作するために、リソース・グループをターゲットとする必要があります。 クラスターが属するリソース・グループをターゲットとして CLI セッションを実行しないと、そのクラスターに対するアクションは失敗する可能性があります。

クラスターが見つからないか、クラスターで作業できない場合は、以下のいずれかの問題が発生している可能性があります。

  • クラスターに対するアクセス権限と、そのクラスターが属するリソース・グループに対するアクセス権限はあるが、そのクラスターが属するリソース・グループをターゲットとして CLI セッションが実行されていない。
  • クラスターに対するアクセス権限はあるが、それは、そのクラスターが属するリソース・グループの一部として付与されたアクセス権限ではない。 CLI セッションはそのリソース・グループまたは別のリソース・グループをターゲットとしている。
  • クラスターに対するアクセス権限がない。

自分のユーザー・アクセス許可を確認するには、以下のようにします。

  1. すべてのユーザー権限をリストします。

    ibmcloud iam user-policies <your_user_name>
    
  2. クラスターに対するアクセス権限と、そのクラスターが属するリソース・グループに対するアクセス権限があるかどうかを確認します。

    1. **「リソース・グループ名」の値がクラスターのリソース・グループになっていて、「メモ」**の値がPolicy applies to the resource groupになっているポリシーを検索します。 このポリシーがある場合、そのリソース・グループに対するアクセス権限があります。 たとえば、次のポリシーは、あるユーザーが「 test-rg 」リソースグループにアクセスできることを示しています
        Policy ID:   3ec2c069-fc64-4916-af9e-e6f318e2a16c
        Roles:       Viewer
        Resources:
        Resource Group ID     50c9b81c983e438b8e42b2e8eca04065
        Resource Group Name   test-rg
        Memo                  Policy applies to the resource group
        ```
    2. **「リソース・グループ名」**の値がクラスターのリソース・グループになっていて、**「サービス名」**の値が `containers-kubernetes` になっているか値がなく、**「メモ」**の値が`Policy applies to the resource(s) within the resource group`になっているポリシーを検索します。 このポリシーが適用されている場合、クラスター、またはリソースグループ内のすべてのリソースにアクセスできます。 たとえば、次のポリシーは、あるユーザーが「 `test-rg` 」リソースグループ内のクラスターにアクセスできることを示しています
    ```sh {: screen}
        Policy ID:   e0ad889d-56ba-416c-89ae-a03f3cd8eeea
        Roles:       Administrator
        Resources:
        Resource Group ID     a8a12accd63b437bbd6d58fb6a462ca7
        Resource Group Name   test-rg
        Service Name          containers-kubernetes
        Service Instance
        Region
        Resource Type
        Resource
        Memo                  Policy applies to the resource(s) within the resource group
        ```
    3. これらのポリシーを両方とも持っている場合は、ステップ 4 の最初の黒丸にスキップします。 ステップ 2a のポリシーはないが、ステップ 2b のポリシーはある場合は、ステップ 4 の 2 番目の黒丸にスキップします。 これらのポリシーがいずれもない場合は、ステップ 3 に進みます。
    
    
  3. クラスターに対するアクセス権限はあるが、そのクラスターが属するリソース・グループに対するアクセス権限の一部ではない、という状態になっているかどうかを確認します。

    1. **「ポリシー ID」フィールドと「役割」**フィールドの横に値がないポリシーを見つけます。 このポリシーがある場合、アカウント全体に対するアクセス権限の一部としてこのクラスターに対するアクセス権限があります。 たとえば、次のポリシーは、 アカウントすべてのリソースにアクセスできることを示しています
        Policy ID:   8898bdfd-d520-49a7-85f8-c0d382c4934e
        Roles:       Administrator, Manager
        Resources:
        Service Name
        Service Instance
        Region
        Resource Type
        Resource
        ```
    2. **「サービス名」**の値が `containers-kubernetes` になっていて、**「サービス・インスタンス」**の値がクラスターの ID になっているポリシーを見つけます。 `ibmcloud oc cluster get --cluster <cluster_name>` を実行すると、クラスター ID を見つけることができます。 たとえば、次のポリシーは、ユーザーが特定のクラスターにアクセスできることを示しています
    ```sh {: screen}
        Policy ID:   140555ce-93ac-4fb2-b15d-6ad726795d90
        Roles:       Administrator
        Resources:
        Service Name       containers-kubernetes
        Service Instance   df253b6025d64944ab99ed63bb4567b6
        Region
        Resource Type
        Resource
        ```
    3. これらのポリシーのいずれかがある場合は、ステップ 4 の 2 番目の黒丸までスキップします。 これらのポリシーのいずれもない場合は、ステップ 4 の 3 番目の黒丸までスキップします。
    
    
  4. アクセス・ポリシーの状態に応じて、次のオプションのいずれかを選択します。

    • クラスターに対するアクセス権限と、そのクラスターが属するリソース・グループに対するアクセス権限がある場合:
      1. リソース・グループをターゲットとして設定します。 このリソースグループを変更するまでは、他のリソースグループ内のクラスターを操作することはできません。
        ibmcloud target -g <resource_group>
        
      2. クラスターをターゲットとして設定します。
        ibmcloud oc cluster config --cluster <cluster_name_or_ID>
        
    • クラスターに対するアクセス権限はあるが、そのクラスターが属するリソース・グループに対するアクセス権限はない場合:
      1. リソース・グループをターゲットとして設定しないでください。 既にリソース・グループをターゲットにしている場合は、ターゲットを削除します。
        ibmcloud target --unset-resource-group
        
      2. クラスターをターゲットとして設定します。
        ibmcloud oc cluster config --cluster <cluster_name_or_ID>
        
    • クラスターに対するアクセス権がない場合は、以下を行います。
      1. アカウント所有者に連絡して、そのクラスターに対する IBM CloudIAM プラットフォーム・アクセス役割を自分に割り当ててもらいます。
      2. リソース・グループをターゲットとして設定しないでください。 既にリソース・グループをターゲットにしている場合は、ターゲットを削除します。
        ibmcloud target --unset-resource-group
        
      3. クラスターをターゲットとして設定します。
        ibmcloud oc cluster config --cluster <cluster_name_or_ID>