Résoudre les erreurs d'autorisation dans Sauvegarde pour GKE

Cette page décrit les erreurs d'autorisation que vous pouvez rencontrer lorsque vous utilisez Sauvegarde pour GKE, les éléments à prendre en compte lorsque vous effectuez l'action et comment résoudre l'erreur.

Erreur 100010101 : Échec de la sauvegarde de PersistentVolumeClaim – Liaison IAM manquante pour le projet locataire

L'erreur 100010101 se produit lorsqu'une tentative de sauvegarde d'un PersistentVolumeClaim échoue en raison d'une liaison Identity and Access Management manquante pour votre projet de locataire, ce qui entraîne un message d'erreur indiquant Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project.

Backup for GKE crée des instantanés du disque persistant de votre cluster GKE. Les instantanés résident dans votre projet Google Cloud , également appelé projet client, et Google Cloud les crée dans un projet de locataire qu'il gère. Le projet locataire existe dans l'organisation google.com, distincte de la vôtre.

L'agent de service du projet de locataire nécessite des autorisations spécifiques pour utiliser la clé de chiffrement gérée par le client (CMEK) qui chiffre le disque persistant référencé par le PersistentVolumeClaim de votre cluster. Cette autorisation permet de chiffrer et de déchiffrer les données d'instantané. Si l'agent de service service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com ne dispose pas du rôle roles/cloudkms.cryptoKeyEncrypterDecrypter sur la clé CMEK de votre disque, l'opération de sauvegarde échoue.

Pour résoudre cette erreur, suivez les instructions ci-dessous :

  1. Vérifiez que vous disposez des autorisations IAM suffisantes pour modifier les stratégies IAM sur la clé Cloud Key Management Service dans la console Google Cloud , telles que roles/cloudkms.admin ou roles/owner.

  2. Localisez l'agent de service Compute Engine du projet locataire à l'aide de la valeur TENANT_PROJECT_NUMBER qui se trouve dans le message status reason de votre opération de sauvegarde ayant échoué. Exemple : service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  3. Localisez les informations CMEK suivantes utilisées pour votre disque persistant chiffré :

    • Nom de la clé : nom de votre clé de chiffrement.

    • Trousseau de clés : nom du trousseau de clés où se trouve votre clé.

    • Emplacement : emplacement Google Cloud de votre clé. Par exemple, global ou us-central1.

  4. Pour accorder le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter à l'agent de service Compute Engine du projet locataire sur votre CMEK, exécutez la commande gcloud kms keys add-iam-policy-binding à l'aide de Google Cloud CLI :

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Remplacez les éléments suivants :

    • KEY_NAME : nom de votre clé de chiffrement.

    • KEY_RING : nom du trousseau de clés.

    • LOCATION : emplacement Google Cloud de votre clé. Par exemple, global ou us-central1.

    • TENANT_PROJECT_NUMBER : numéro du projet locataire que vous avez obtenu à partir du message status reason de votre opération de sauvegarde ayant échoué.

    Si la commande réussit, le résultat est semblable à celui-ci :

    - members:
    - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Testez à nouveau l'opération de sauvegarde. Si l'opération échoue toujours, contactez Cloud Customer Care pour obtenir de l'aide.

Erreur 100010104 : Échec de la sauvegarde de PersistentVolumeClaim – Non-respect de la contrainte de règle de l'organisation lors de la création de l'instantané

L'erreur 100010104 se produit lorsqu'une tentative de sauvegarde d'un PersistentVolumeClaim échoue en raison d'une violation de contrainte de règle d'administration lors de la création d'un instantané, ce qui entraîne l'affichage du message d'erreur Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot.

Backup for GKE crée des instantanés du disque persistant de votre cluster GKE. Les instantanés résident dans votre projet Google Cloud , également appelé projet client, et sont créés dans un projet locataire géré par Google Cloud. Le projet locataire existe dans l'organisation google.com, distincte de la vôtre.

Votre règle d'administration détermine où vous pouvez créer des ressources de stockage. L'erreur Constraint constraints/compute.storageResourceUseRestrictions violated signifie qu'une ressource ou un instantané enfreint le règlement en étant créé dans un projet locataire qui ne fait pas partie de la structure organisationnelle autorisée. Étant donné que le projet locataire se trouve dans l'organisation de Google, il ne relève pas de la stratégie que vous avez définie, ce qui entraîne l'échec de la sauvegarde.

Pour résoudre cette erreur, suivez les instructions ci-dessous :

  1. Localisez la règle d'administration qui implémente la contrainte constraints/compute.storageResourceUseRestrictions. Pour en savoir plus sur l'affichage des règles d'administration à l'aide de la console Google Cloud , consultez Afficher les règles d'administration.

  2. Modifiez la règle constraints/compute.storageResourceUseRestrictions pour inclure le dossier du projet locataire folders/77620796932 utilisé par Sauvegarde pour GKE dans sa liste d'autorisation.

  3. Enregistrez les modifications apportées aux règles après avoir ajouté le dossier à la liste d'autorisation.

  4. Testez à nouveau l'opération de sauvegarde après la mise à jour et la propagation de la règle d'entreprise, ce qui prend généralement quelques minutes. La sauvegarde doit se dérouler sans enfreindre les restrictions d'utilisation des ressources de stockage. Si l'opération échoue toujours, contactez l'assistance Cloud Customer Care pour obtenir de l'aide.

Erreur 100010106 : Échec de la sauvegarde de PersistentVolumeClaim. Liaison IAM manquante pour l'agent de service Backup for GKE

L'erreur 100010106 se produit lorsqu'une tentative de sauvegarde d'un PersistentVolumeClaim échoue en raison d'une liaison Identity and Access Management manquante pour votre agent de service Backup for GKE, ce qui entraîne un message d'erreur indiquant Failed to backup PVC - Missing IAM binding for Backup for GKE service agent.

Backup for GKE nécessite des autorisations pour utiliser la clé de chiffrement gérée par le client (CMEK) de votre BackupPlan afin de chiffrer et déchiffrer les disques persistants des volumes. Lorsque l'agent de service Sauvegarde pour GKE ne dispose pas du rôle roles/cloudkms.cryptoKeyEncrypterDecrypter sur votre CMEK BackupPlan, les opérations de sauvegarde échouent.

Pour résoudre cette erreur, suivez les instructions ci-dessous :

  1. Identifiez l'agent de service Sauvegarde pour GKE géré par Google et spécifique à votre projet. Par exemple, service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com. Vous pouvez trouver le numéro de votre projet en utilisant les méthodes suivantes :

    • Utilisez le tableau de bord du projet Google Cloud dans la console Google Cloud .

    • Exécutez la commande gcloud projects describe à l'aide de Google Cloud CLI :

      gcloud projects describe PROJECT_ID –format="value(projectNumber)"
      

      Remplacez PROJECT_ID par le nom unique de votre projet.

  2. Identifiez les informations CMEK suivantes :

    • Nom de la clé : nom de votre clé de chiffrement.

    • Trousseau de clés : nom du trousseau de clés où se trouve votre clé.

    • Emplacement : emplacement Google Cloud où se trouve votre clé CMEK BackupPlan. Par exemple, global ou us-central1.

  3. Pour accorder le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter à l'agent de service Sauvegarde pour GKE sur votre clé CMEK, utilisez Google Cloud CLI pour exécuter la commande gcloud kms keys add-iam-policy-binding :

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Remplacez les éléments suivants :

    • KEY_NAME : nom de votre clé de chiffrement.

    • KEY_RING : nom du trousseau de clés.

    • LOCATION : emplacement Google Cloud de votre clé. Par exemple, global ou us-central1.

    • PROJECT_NUMBER : numéro de votre projet Google Cloud .

  4. Vérifiez que vous disposez des autorisations Identity and Access Management requises sur la clé Cloud Key Management Service. Par exemple, roles/cloudkms.admin ou roles/owner.

  5. Vérifiez que vous disposez des autorisations accordées. Dans le résultat de la commande gcloud kms keys add-iam-policy-binding précédente, recherchez une entrée semblable à la suivante :

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Testez à nouveau l'opération de sauvegarde après avoir accordé les autorisations nécessaires. Si l'opération n'aboutit pas, contactez Cloud Customer Care pour obtenir de l'aide.

Erreur 100010107 : Échec de la sauvegarde de PersistentVolumeClaim – Liaison IAM manquante – Compte de service de l'agent (KCP)

L'erreur 100010107 se produit lorsque vous essayez d'effectuer une opération de sauvegarde Sauvegarde pour GKE et que l'agent de service du cluster Google Kubernetes Engine n'a pas accès à votre clé de chiffrement gérée par le client (CMEK), ce qui entraîne l'affichage du message Failed to backup PVC - Missing IAM binding - agent service account (KCP).

L'agent de service du cluster Google Kubernetes Engine, généralement au format service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, est essentiel pour que votre cluster GKE puisse interagir avec les services Google Cloud. Lorsque votre forfait de sauvegarde utilise une clé de chiffrement gérée par le client (CMEK). Cet agent de service a besoin d'autorisations pour chiffrer et déchiffrer vos données de sauvegarde à l'aide de votre clé CMEK. Si le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter est manquant dans le plan de sauvegarde de votre CMEK, les opérations de sauvegarde lancées depuis le cluster échouent et renvoient une erreur permission denied.

Pour résoudre cette erreur, suivez les instructions de dépannage ci-dessous :

  1. Vérifiez que vous disposez des autorisations appropriées pour modifier les stratégies IAM sur la clé Cloud Key Management Service. Par exemple, cloudkms.admin ou roles/owner.

  2. Identifiez l'agent de service du cluster Google Kubernetes Engine. Cet agent de service est créé et géré automatiquement par Google Cloud pour vos clusters GKE. Exemple : service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com. Vous avez besoin du numéro de projet pour créer le compte de service complet. Vous pouvez trouver votre numéro de projet à l'aide de l'une des méthodes suivantes :

    • Utilisez le tableau de bord du projet Google Cloud dans la console Google Cloud .

    • Exécutez la commande gcloud projects describe à l'aide de Google Cloud CLI :

      gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
      

      Remplacez PROJECT_ID par l'ID du projet.

  3. Recherchez les informations CMEK suivantes :

    • Nom de la clé : nom de votre clé de chiffrement.

    • Trousseau de clés : nom du trousseau de clés où se trouve votre clé.

    • Emplacement : emplacement Google Cloud de votre clé. Par exemple, global ou us-central1.

  4. Attribuez le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter au niveau de la clé CMEK. L'agent de service Google Kubernetes Engine a besoin d'autorisations sur votre clé de chiffrement. Pour attribuer le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter à votre clé CMEK, utilisez la Google Cloud CLI pour exécuter la commande gcloud kms key add-iam-policy-binding :

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Remplacez les éléments suivants :

    • KEY_NAME : nom de votre clé de chiffrement.

    • KEY_RING : nom du trousseau de clés.

    • LOCATION : emplacement Google Cloud de votre clé. Par exemple, global ou us-central1.

    • PROJECT_NUMBER : nom du projet.

    Le résultat ressemble à ce qui suit :

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Réessayez l'opération Sauvegarde pour GKE. Si l'opération continue d'échouer, contactez l'assistance Cloud Customer Care pour obtenir de l'aide.

Erreur 100020101 : Échec de la sauvegarde de PersistentVolumeClaim – PersistentVolumeClaim lié à un type PersistentVolume non compatible

L'erreur 100020101 se produit lorsqu'une tentative de sauvegarde d'un PersistentVolumeClaim échoue, car le PersistentVolumeClaim est lié à un type PersistentVolume non compatible. L'erreur génère le message d'erreur suivant : PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.

Cette erreur se produit lorsque votre opération Sauvegarde pour GKE rencontre un PersistentVolumeClaim lié à un PersistentVolume qui utilise un type de volume non compatible avec la sauvegarde de données par Sauvegarde pour GKE. La sauvegarde pour GKE permet principalement de sauvegarder les données des volumes de disque persistant. Si un PersistentVolumeClaim est lié à un PersistentVolume qui n'est pas un disque persistant, l'opération de sauvegarde échoue pour les données du PersistentVolumeClaim.

Pour résoudre cette erreur, suivez les instructions de dépannage ci-dessous :

  1. Répertoriez tous les PersistentVolumeClaims et les PersistentVolumes qui leur sont associés en exécutant la commande kubectl get pvc. Consultez cette liste pour identifier les PersistentVolumes qui sont sauvegardés par des types de volumes non compatibles.

    kubectl get pvc --all-namespaces -o wide
    
  2. Déterminez le type de volume du PersistentVolume qui est sauvegardé par un type de volume non compatible avec Sauvegarde pour GKE en exécutant la commande kubectl describe pv :

    kubectl describe pv PERSISTENT_VOLUME_NAME
    

    Remplacez les éléments suivants :

    PERSISTENT_VOLUME_NAME : nom de PersistentVolume dont le type de volume n'est pas compatible et qui est listé dans la colonne VOLUME du résultat de l'étape précédente.

    Dans le résultat, utilisez les champs Source et Driver pour obtenir des informations sur le provisionneur de volumes :

    • Pour les disques persistants compatibles : le résultat ressemble à Source.Driver: pd.csi.storage.gke.io ou Source.Type:GCEPersistentDisk.

    • Pour les types non compatibles qui sont à l'origine de l'erreur : la sortie serait un pilote de disque non persistant, par exemple Source.Driver:filestore.csi.storage.gke.io.

  3. Pour résoudre l'erreur, utilisez l'une des méthodes suivantes :

    • Migrer vers un volume de disque persistant : nous recommandons cette méthode pour les sauvegardes complètes de données. Si vous devez sauvegarder les données de volume proprement dites, vous devez utiliser un disque persistant, ce qui implique de migrer vos données du type de volume non compatible vers un nouveau volume CSI de disque persistant. Pour obtenir de l'aide concernant la migration d'un volume de disque persistant, contactez l'assistance Cloud Customer Care.

    • Activez le mode permissif dans Sauvegarde pour GKE : nous vous recommandons cette méthode si la sauvegarde des données n'est pas requise pour les volumes non compatibles. Si la migration des données n'est pas possible ou nécessaire (par exemple, si le volume est sauvegardé par un service externe et que vous prévoyez de le rattacher lors de l'opération de restauration), vous pouvez configurer votre plan de sauvegarde Sauvegarde pour GKE pour autoriser la sauvegarde en mode permissif. Pour savoir comment activer le mode permissif, consultez Activer le mode permissif sur un plan de sauvegarde.

  4. Réessayez l'opération Sauvegarde pour GKE. En fonction de la méthode que vous avez choisie pour résoudre l'erreur, l'opération Backup for GKE se comporte comme suit :

    • Si vous avez migré vers un volume de disque persistant, la sauvegarde devrait fonctionner pour le volume, y compris ses données.

    • Si vous avez activé le mode Permissif, l'opération de sauvegarde devrait réussir, mais les données des volumes non compatibles ne seront pas sauvegardées.

Si l'opération continue d'échouer, contactez l'assistance Cloud Customer Care pour obtenir de l'aide.

Erreur 100020104 : Échec de la sauvegarde de PersistentVolumeClaim – PersistentVolumeClaim non lié à un PersistentVolume

L'erreur 100020104 se produit lorsqu'une tentative de sauvegarde d'un PersistentVolumeClaim échoue, car le PersistentVolumeClaim n'est pas associé à un PersistentVolume. L'erreur génère le message d'erreur suivant : Failed to backup PVC - PVC Not Bound to a Persistent Volume.

Cette erreur se produit lorsque votre opération Sauvegarde pour GKE tente de sauvegarder un PersistentVolumeClaim qui n'est pas correctement lié à un PersistentVolume. Un PersistentVolumeClaim doit être lié à un PersistentVolume avant de pouvoir être utilisé par une charge de travail consommatrice, telle qu'un pod, puis sauvegardé par Sauvegarde pour GKE. Si PersistentVolumeClaim reste à l'état Pending, cela signifie qu'aucun PersistentVolume approprié n'est disponible, ou qu'il ne peut pas être provisionné ni lié, ce qui entraîne l'échec de l'opération de sauvegarde. Une raison courante pour laquelle un PersistentVolumeClaim reste non lié est lorsque son StorageClass associé utilise un mode de liaison WaitForFirstConsumer, mais qu'aucun pod ni aucune autre charge de travail n'essaie encore de consommer le PersistentVolumeClaim.

Pour résoudre cette erreur, suivez les instructions de dépannage ci-dessous :

  1. Pour vérifier l'état de tous les PersistentVolumeClaims du cluster et identifier les PersistentVolumeClaim non liés, exécutez la commande kubectl get pvc :

    kubectl get pvc --all-namespaces | grep `Pending`
    
  2. Après avoir identifié le PersistentVolumeClaim qui n'est pas lié à un PersistentVolume, récupérez des informations sur le PersistentVolumeClaim non lié en exécutant la commande kubectl describe pvc :

    kubectl describe pvc PVC_NAME -n NAMESPACE_NAME
    

    Remplacez les éléments suivants :

    • PVC_NAME : nom de l'PersistentVolumeClaim dont la sauvegarde a échoué.

    • NAMESPACE_NAME : nom de votre espace de noms dans lequel réside PersistentVolumeClaim.

    Une fois la description affichée, utilisez les champs Status et Events pour déterminer si le PersistentVolumeClaim est lié à un PersistentVolume. Si vous ne parvenez toujours pas à déterminer pourquoi PersistentVolumeClaim n'est pas lié à un PersistentVolume ou si vous ne parvenez pas à résoudre le problème identifié, vous pouvez activer le mode permissif dans votre forfait de sauvegarde. Pour savoir comment activer le mode permissif, consultez Activer le mode permissif sur un plan de sauvegarde.

Étapes suivantes