De quels droits dois-je disposer pour gérer le stockage et créer des réservations de volume persistant ?

Dépannage des erreurs d'autorisation liées aux revendications de volumes persistants.

Cloud privé virtuel Infrastructure classique

Lorsque vous créez une réservation de volume persistant, elle reste à l'état En attente. Lorsque vous exécutez le programmeoc describe pvc <pvc_name>, vous obtenez un message d'erreur semblable au suivant :

User doesn't have permissions to create or manage Storage

La clé d'API IAM ou la clé d'API de l'infrastructure IBM Cloud qui est stockée dans le secret Kubernetes storage-secret-store de votre cluster ne dispose pas des droits requis pour mettre à disposition le stockage persistant.

Récupérez la clé d'API IAM ou la clé d'API de l'infrastructure IBM Cloud qui est stockée dans le secret Kubernetes storage-secret-store de votre cluster et vérifiez que la clé d'API correcte est utilisée.

  1. Exécutez la commande suivante pour obtenir la clé API qui est stockée dans le secret storage-secret-store.

    Exemple de commande

    oc get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode
    

    Exemple de sortie

    [Bluemix]
    iam_url = "https://iam.cloud.ibm.com"
    iam_client_id = "bx"
    iam_client_secret = "bx"
    iam_api_key "IAM-API-KEY"
    refresh_token = ""
    pay_tier = "paid"
    containers_api_route = "https://us-south.containers.cloud.ibm.com"
    encryption = true
    containers_api_route_private = "https://private.us-south.containers.cloud.ibm.com"
    [Softlayer]
    encryption = true
    softlayer_username = ""
    softlayer_api_key = ""
    softlayer_endpoint_url = "https://api.service.softlayer.com/rest/v3"
    softlayer_iam_endpoint_url = "https://api.service.softlayer.com/mobile/v3"
    softlayer_datacenter = "dal10"
    softlayer_token_exchange_endpoint_url = "https://iam.cloud.ibm.com"
    [VPC]
    g2_token_exchange_endpoint_url = "https://iam.bluemix.net"
    g2_riaas_endpoint_url = "https://us-south.iaas.cloud.ibm.com"
    g2_riaas_endpoint_private_url = "https://us-south.private.iaas.cloud.ibm.com"
    g2_resource_group_id = "............"
    g2_api_key = ".............."
    encryption = true
    provider_type = "g2"
    iks_token_exchange_endpoint_private_url = "https://private.us-south.containers.cloud.ibm.com"
    

    La clé d'API IAM est répertoriée dans la section Bluemix.iam_api_key de votre sortie CLI. Si aucune valeur Softlayer.softlayer_api_key n'est définie au même moment, la clé d'API IAM est utilisée pour déterminer vos droits sur l'infrastructure. La clé d'API IAM est définie automatiquement par l'utilisateur qui exécute la première action nécessitant le rôle d'accès à la plateforme IAM Administrateur dans un groupe de ressources et une région. Si une autre clé d'API est définie dans Softlayer.softlayer_api_key, cette clé est prioritaire sur la clé d'API IAM. La valeur Softlayer.softlayer_api_key est définie lorsqu'un administrateur de cluster exécute la commande ibmcloud oc credentials-set.

  2. Si vous devez contacter l'assistance, vous pouvez utiliser la commande suivante pour extraire les informations d'identification du secret du cluster, trouver la clé et la hacher. Cette étape vous évite de coller accidentellement votre clé API dans le dossier d'assistance. Exécutez la commande suivante pour récupérer la clé actuelle stockée sur le cluster.

    oc  get secret -n kube-system storage-secret-store -o custom-columns=:.data.slclient\\.toml | base64 -d | grep g2_api_key | md5sum
    
  3. Si vous souhaitez modifier les données d'identification, mettez à jour la clé d'API qui est utilisée.

    1. Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
    2. Pour mettre à jour la clé API IAM, utilisez la commandeibmcloud oc api-key reset. Pour mettre à jour la clé d'infrastructure IBM Cloud, utilisez la commandeibmcloud oc credential set.
    3. Attendez 10 à 15 minutes que la mise à jour du secret Kubernetes storage-secret-store soit effectuée, puis vérifiez que la clé est mise à jour.
        oc get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode
        ```
    
  4. Si la clé d'API est correcte, vérifiez qu'elle est dotée des droits appropriés permettant de mettre à disposition le stockage persistant.

    1. Contactez le propriétaire de compte pour vérifier les droits de la clé d'API.
    2. En tant que titulaire du compte, sélectionnez Gérer > Accès (IAM) dans le menu de navigation de la console IBM Cloud.
    3. Sélectionnez Utilisateurs et recherchez l'utilisation dont vous souhaitez utiliser la clé d'API.
    4. Dans le menu Actions, sélectionnez Gérer les détails de l'utilisateur.
    5. Accédez à l'onglet Infrastructure classique.
    6. Développez la catégorie Compte et vérifiez que l'autorisation d'ajouter ou de mettre à niveau du stockage (StorageLayer) est affectée.
    7. Développez la catégorie Services et vérifiez que les droits Gestion de stockage sont affectés.
  5. Supprimez la réservation de volume persistant qui a échoué.

    oc delete pvc <pvc_name>
    
  6. Recréer le PVC.

    oc apply -f pvc.yaml