パーミッションとクレデンシャルのエラーの解決
ワーカーノードやその他のコンポーネントを作成または削除するなど、クラスタに変更を加えようとすると、次の例のようなエラーメッセージが表示されます。
クラスターへのアクセス時に発生する権限や認証情報に関するエラーのトラブルシューティングを行います。
The infrastructure authentication credentials are not authorized for the request.
We were unable to connect to your Softlayer account.
Creating a standard cluster requires that you have either a
Pay-As-You-Go account that is linked to an IBM Cloud infrastructure
account term or that you have used the Kubernetes service
CLI to set your Infrastructure API keys.
'Item' must be ordered with permission.
The worker node instance '<ID>' can't be found. Review '<provider>' infrastructure user permissions.
The worker node instance can't be found. Review '<provider>' infrastructure user permissions.
The worker node instance can't be identified. Review '<provider>' infrastructure user permissions.
The IAM token exchange request failed with the message: <message>
IAM token exchange request failed: <message>
The cluster could not be configured with the registry. Make sure that you have the Administrator role for Container Registry.
リージョンとリソースグループに設定されているインフラストラクチャ資格情報に適切な インフラストラクチャ権限 がないか、資格情報が認識されません。
このようなことが起こる理由は複数ある。
-
必要なインフラストラクチャの権限がありません。
-
リソースグループとリージョンが不一致です。
- クレデンシャルと IAM API キーは、リージョンとリソースグループに設定される。 地域は
ibmcloud oc credential setコマンドを実行するときに指定する。 適用されるリソースグループは、このコマンドを実行したときに対象となったリソースグループです。 xml-ph-0000@deepl.internal を実行する前に、ibmcloud targetibmcloud oc credential setを実行する前にリソースグループを明示的に指定しない場合、API キーのリソースグループが想定したものと異なる可能性があり、その結果、認証情報が一致せず、認識されないことがあります。
- クレデンシャルと IAM API キーは、リージョンとリソースグループに設定される。 地域は
-
認証情報がクラスタに追加またはクラスタから削除された。
- リンクされた IBM Cloud インフラストラクチャ・アカウント でクラスターを作成し、その後
ibmcloud oc credential setまたはibmcloud oc credential unsetで資格情報を追加または削除した場合、資格情報がリンクされたアカウントの仕様と一致しない可能性があります。 その結果、クレデンシャルが認識されなくなる可能性がある。
- リンクされた IBM Cloud インフラストラクチャ・アカウント でクラスターを作成し、その後
アカウント所有者は、インフラストラクチャー・アカウントの資格情報を正しくセットアップする必要があります。 資格情報は、使用しているインフラストラクチャー・アカウントのタイプによって異なります。
始めに、アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。.
-
リージョンおよびリソース・グループのインフラストラクチャー許可に使用されるユーザー資格情報を特定します。
- クラスターのリージョンおよびリソース・グループの API キーを確認します。
ibmcloud oc api-key info --cluster <cluster_name_or_ID> ``` 出力例 ```sh {: screen} Getting information about the API key owner for cluster <cluster_name>... OK Name Email <user_name> <name@email.com> ``` 2. リージョンおよびリソース・グループのクラシック・インフラストラクチャー・アカウントが、別の IBM Cloud インフラストラクチャー・アカウントを使用するように手動で設定されているかどうか確認します。 ```sh {: pre} ibmcloud oc credential get --region <us-south> ``` **別のクラシック・アカウントを使用するように資格情報が設定されている場合の出力例**。 この場合、前のステップで取得した API キーに別のユーザーの資格情報が保管されていても、ターゲットにしたリージョンとリソース・グループには、ユーザーのインフラストラクチャー資格情報が使用されます。 ```sh {: screen} OK Infrastructure credentials for user name <1234567_name@email.com> set for resource group <resource_group_name>. ``` **別のクラシック・アカウントを使用するように資格情報が設定されていない場合の出力例**。 この場合、前のステップで取得した API キーの所有者は、リージョンおよびリソース・グループに使用されるインフラストラクチャー資格情報を持っています。 ```sh {: screen} FAILED No credentials set for resource group <resource_group_name>.: The user credentials could not be found. (E0051) ``` -
ユーザーのインフラストラクチャー許可を検証します。
- リージョンおよびリソース・グループの推奨および必須のインフラストラクチャー許可をリストします。
ibmcloud oc infra-permissions get --region <region> ``` コンソールおよび CLI コマンドを使用してこれらの許可を割り当てる方法については、[クラシック・インフラストラクチャーの役割](/docs/openshift?topic=openshift-iam-platform-access-roles)を参照してください。 {: tip} 2. [API キーのインフラストラクチャー資格情報所有者、または手動で設定されたアカウントに、正しい許可がある](/docs/openshift?topic=openshift-iam-platform-access-roles)ことを確認します。 リージョンとリソースグループの [APIキー](/docs/openshift?topic=openshift-kubernetes-service-cli#api-key-reset-cli) または [手動設定](/docs/openshift?topic=openshift-kubernetes-service-cli#credential-set-classic-cli) インフラストラクチャークレデンシャルの所有者を変更できます。 {: note} -
クラスタやワーカーノードの削除など、インフラストラクチャの操作をもう一度実行してみてください。 それでもアクセス許可や認証情報のエラーが発生する場合は、以下のトラブルシューティングのページを参照してください。
- ワーカーノードが削除されていない場合は、 州 および「 ステータス 」フィールド および ワーカーノードによくある問題 を確認し、デバッグを続けてください。
- 手動で資格情報を設定しても、インフラストラクチャー・アカウントにクラスターのワーカー・ノードが表示されない場合は、クラスターが孤立しているかどうかを確認できます。
-
問題が解決しない場合は、以下の情報を収集し、IBM Cloud サポートに提出してください。 各コマンドの出力を保存する。
ibmcloud target -g <resource_group>コマンドで正しいリソースグループをターゲットにしていることを確認してください。- APIキー情報
ibmcloud ks api-key info --cluster <cluster_name_or_id> ``` 1. 口座の詳細 ```sh {: pre} ibmcloud target ``` 1. 想定されるリージョンおよびリソースグループのクレデンシャル詳細。 ```sh {: pre} ibmcloud oc credential get --region <region> ``` 1. インフラの許可詳細 ```sh {: pre} ibmcloud oc infra-permissions get --region <region> ``` -
[Open issue with IBM Cloud support](/docs/openshift?topic=openshift-get-help. 前のステップで収集したすべての情報とコマンド出力を必ず含めること。
無効な API キー
クラシック・インフラストラクチャー
APIキーの指定が必要なアクションを完了しようとすると、以下のようなエラーが発生します。
Error: SoftLayer_Exception_User_Customer_Unauthorized: Invalid API key
さらに、ibmcloud ks api-key reset コマンドを実行しても問題は解決せず、ibmcloud oc infra-permissions get コマンドの出力はパーミッションの問題を示さない。
このエラーが発生する理由は複数ある。
-
Kubernetes APIキーではなく、古典的なインフラストラクチャAPIキーを指定する必要があります。 クラシックなインフラストラクチャ API キーがリージョンに設定されている場合、それは他のすべてのクレデンシャルよりも優先される。
-
指定されたクラシックインフラAPIキーが存在しません。 削除されたかもしれないし、APIキーの所有者が組織を去ったかもしれない。
クラシック・インフラストラクチャのAPIキーを知っている場合は、それを指定してください。 インフラストラクチャAPIキーがわからない場合、または削除された可能性がある場合は、以下の手順に従ってください。
-
ibmcloud oc credential set classic --infrastructure-api-key API_KEY --infrastructure-username USERNAME --region REGION [-q] -
クラスタ上のクレデンシャルを更新する コマンドを実行します。
ibmcloud oc api-key reset --region REGION [-q] -
アクションを完了するために再試行してください。