Résoudre les erreurs d'autorisation et d'accréditation

Lorsque vous essayez d'apporter des modifications à votre cluster, telles que la création ou la suppression de nœuds de travail ou d'autres composants, vous recevez un message d'erreur similaire à l'un des exemples suivants.

Résolvez les erreurs liées aux autorisations et aux identifiants lors de l'accès à votre cluster.

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.

Les informations d'identification de l'infrastructure définies pour la région et le groupe de ressources ne disposent pas des autorisations d'infrastructure appropriées, ou les informations d'identification ne sont pas reconnues.

Il y a de multiples raisons pour lesquelles cela peut se produire.

  • Vous ne disposez pas des autorisations d'infrastructure requises.

  • Le groupe de ressources et la région ne sont pas compatibles.

    • Les informations d'identification et la clé IAM API sont associées à une région et à un groupe de ressources. La région est spécifiée lorsque vous exécutez la commande ibmcloud oc credential set. Le groupe de ressources appliqué est le groupe de ressources ciblé lorsque vous exécutez cette commande. Si vous ne spécifiez pas explicitement un groupe de ressources à l'aide de la ibmcloud target commande avant d'exécuter ibmcloud oc credential set``, il est possible que le groupe de ressources associé à la clé API ne soit pas celui auquel vous vous attendiez, ce qui entraîne une incompatibilité des identifiants qui ne sont pas reconnus.
  • Des informations d'identification ont été ajoutées ou supprimées du cluster.

    • Si vous avez créé un cluster avec un compte d'infrastructure IBM Cloud lié et que vous avez ensuite ajouté ou supprimé des informations d'identification avec ibmcloud oc credential set ou ibmcloud oc credential unset, il se peut que les informations d'identification ne correspondent pas aux spécifications du compte lié. Cela peut entraîner la non-reconnaissance des informations d'identification.

Le propriétaire de compte doit configurer correctement les données d'identification du compte d'infrastructure. Les données d'identification dépendent du type de compte d'infrastructure que vous utilisez.

Avant de commencer, Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster..

  1. Identifiez les données d'identification d'utilisateur qui sont utilisées pour les droits d'infrastructure de la région et du groupe de ressources.

    1. Vérifiez la clé d'API pour une région et un groupe de ressources du cluster.
        ibmcloud oc api-key info --cluster <cluster_name_or_ID>
        ```
        Exemple de sortie
        ```sh {: screen}
        Getting information about the API key owner for cluster <cluster_name>...
        OK
        Name                Email
        <user_name>         <name@email.com>
        ```
    2. Vérifiez si le compte d'infrastructure classique pour la région et le groupe de ressources est défini manuellement pour utiliser un autre compte d'infrastructure IBM Cloud.
    ```sh {: pre}
        ibmcloud oc credential get --region <us-south>
        ```
        **Exemple de sortie si des données d'identification sont définies pour utiliser un autre compte classique**. Dans ce cas, les données d'identification d'infrastructure de l'utilisateur sont utilisées pour la région et le groupe de ressources que vous avez ciblés, même si les données d'identification d'un autre utilisateur sont stockées dans la clé d'API que vous avez extraite à l'étape précédente.
        ```sh {: screen}
        OK
        Infrastructure credentials for user name <1234567_name@email.com> set for resource group <resource_group_name>.
        ```
        **Exemple de sortie si des données d'identification ne sont pas définies pour utiliser un autre compte classique**. Dans ce cas, le propriétaire de la clé d'API que vous avez extraite à l'étape précédente possède les données d'identification d'infrastructure qui sont utilisées pour la région et le groupe de ressources.
        ```sh {: screen}
        FAILED
        No credentials set for resource group <resource_group_name>.: The user credentials could not be found. (E0051)
        ```
    
  2. Validez les droits d'infrastructure dont l'utilisateur dispose.

    1. Répertoriez les droits d'infrastructure suggérés et requis pour la région et le groupe de ressources.
        ibmcloud oc infra-permissions get --region <region>
        ```
        Pour que les commandes de console et d'interface de ligne de commande attribuent ces droits, voir [Rôles d'infrastructure classique](/docs/openshift?topic=openshift-iam-platform-access-roles).
        {: tip}
    
    2. Vérifiez que le [propriétaire des données d'identification d'infrastructure pour la clé d'API ou le compte de jeu manuel possède les droits d'accès appropriés](/docs/openshift?topic=openshift-iam-platform-access-roles).
            Vous pouvez modifier la [clé API](/docs/openshift?topic=openshift-kubernetes-service-cli#api-key-reset-cli) ou [définir manuellement](/docs/openshift?topic=openshift-kubernetes-service-cli#credential-set-classic-cli) le propriétaire des informations d'identification de l'infrastructure pour la région et le groupe de ressources.
    {: note}
    
    
  3. Réessayez d'effectuer l'opération d'infrastructure, telle que la suppression du cluster ou du nœud de travail. Si vous rencontrez toujours l'erreur relative aux autorisations ou aux informations d'identification, consultez ces pages de dépannage supplémentaires.

    1. Si le nœud de travail n'est pas supprimé, consultez les champs State et Status ainsi que les problèmes courants liés aux nœuds de travail pour poursuivre le débogage.
    2. Si vous définissez manuellement les données d'identification et que vous ne pouvez toujours pas voir les nœuds worker du cluster dans votre compte d'infrastructure, vous pouvez vérifier si le cluster est orphelin.
  4. Si le problème persiste, rassemblez les informations suivantes pour les soumettre à l'assistance IBM Cloud. Enregistrez les résultats de chaque commande. Assurez-vous que vous avez ciblé le bon groupe de ressources avec la commande ibmcloud target -g <resource_group>.

    1. Informations sur la clé API.
        ibmcloud ks api-key info --cluster <cluster_name_or_id>
        ```
    1. Détails du compte.
    
    ```sh {: pre}
        ibmcloud target
        ```
    1. Détails de l'accréditation pour la région et le groupe de ressources attendus.
    
    ```sh {: pre}
        ibmcloud oc credential get --region <region>
        ```
    1. Détails des permissions d'infrastructure.
    
    ```sh {: pre}
        ibmcloud oc infra-permissions get --region <region>
        ```
    
  5. [Ouvrir un problème avec le support IBM Cloud](/docs/openshift?topic=openshift-get-help. Veillez à inclure toutes les informations et tous les résultats de commande recueillis à l'étape précédente.

Clé d'API non valide

Infrastructure classique

Lorsque vous essayez d'effectuer une action qui nécessite la spécification d'une clé API, vous obtenez une erreur similaire à la suivante.

Error: SoftLayer_Exception_User_Customer_Unauthorized: Invalid API key

En outre, l'exécution de la commande ibmcloud ks api-key reset ne résout pas le problème et la sortie de la commande ibmcloud oc infra-permissions get n'indique aucun problème de permissions.

Les raisons pour lesquelles cette erreur peut se produire sont multiples.

  • L'action que vous tentez vous oblige à spécifier une clé API d'infrastructure classique plutôt qu'une clé API Kubernetes. Si une clé API d'infrastructure classique est définie pour la région, elle est prioritaire sur toutes les autres informations d'identification.

  • La clé API de l'infrastructure classique que vous avez indiquée n'existe pas. Il se peut qu'elle ait été supprimée ou que le propriétaire de la clé API ait quitté l'organisation.

Si vous connaissez la clé API de l'infrastructure classique, indiquez-la. Si vous ne connaissez pas la clé API de l'infrastructure ou si vous pensez qu'elle a été supprimée, procédez comme suit.

  1. Réinitialiser la clé API de l'infrastructure classique.

    ibmcloud oc credential set classic --infrastructure-api-key API_KEY --infrastructure-username USERNAME --region REGION [-q]
    
  2. Exécutez la commande pour mettre à jour les informations d'identification sur le cluster.

    ibmcloud oc api-key reset --region REGION [-q]
    
  3. Réessayez pour terminer l'action.