Resolva problemas de erros de autorização na Cópia de segurança do GKE

Esta página descreve os erros de autorização que pode encontrar quando usa o Backup for GKE, aspetos a ter em conta quando realiza a ação e como resolver o erro.

Erro 100010101: não foi possível fazer uma cópia de segurança de PersistentVolumeClaim. Falta a associação de IAM para o projeto do inquilino

O erro 100010101 ocorre quando uma tentativa de fazer uma cópia de segurança de um PersistentVolumeClaim falha devido a uma associação de gestão de identidades e acessos em falta para o seu projeto de inquilino, o que resulta numa mensagem de erro a indicar Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project.

A Cópia de segurança do GKE cria instantâneos do disco persistente do cluster do GKE. As capturas de ecrã residem no seu projeto Cloud de Confiance by S3NS , também conhecido como projeto do consumidor, e Cloud de Confiance by S3NS cria-as num projeto de inquilino que gere. O projeto de inquilino existe na organização google.com separadamente da sua própria organização.

O agente de serviço no projeto do inquilino requer autorizações específicas para usar a chave de encriptação gerida pelo cliente (CMEK) que encripta o disco persistente referenciado pelo PersistentVolumeClaim do cluster. Esta autorização encripta e desencripta os dados de instantâneos. Se o agente do serviço service-TENANT_PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com não tiver a função roles/cloudkms.cryptoKeyEncrypterDecrypter na CMEK do disco, a operação de cópia de segurança falha.

Para resolver este erro, siga estas instruções:

  1. Verifique se tem autorizações de IAM suficientes para modificar as políticas de IAM na chave do Serviço de gestão de chaves na nuvem na Cloud de Confiance consolaroles/cloudkms.admin, como roles/cloudkms.admin ou roles/owner.

  2. Localize o agente de serviço do Compute Engine do projeto de inquilino através do valor TENANT_PROJECT_NUMBER que se encontra na mensagem status reason da operação de cópia de segurança com falha. Por exemplo, service-TENANT_PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com.

  3. Localize as seguintes informações da CMEK usadas para o seu disco persistente encriptado:

    • Nome da chave: o nome da sua chave de encriptação.

    • Conjunto de chaves: o nome do conjunto de chaves onde a sua chave reside.

    • Localização: a Cloud de Confiance by S3NS localização onde a chave se encontra. Por exemplo, global ou us-central1.

  4. Para conceder ao agente de serviço do Compute Engine do projeto de inquilino a função roles/cloudkms.cryptoKeyEncrypterDecrypter na sua CMEK, execute o comando gcloud kms keys add-iam-policy-binding através da CLI Google Cloud:

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

    Substitua o seguinte:

    • KEY_NAME: o nome da sua chave de encriptação.

    • KEY_RING: o nome do conjunto de chaves.

    • LOCATION: a Cloud de Confiance by S3NS localização da sua chave. Por exemplo, global ou us-central1.

    • TENANT_PROJECT_NUMBER: o número do projeto de inquilino que obteve na mensagem status reason da sua operação de cópia de segurança com falha.

    Se o comando for bem-sucedido, o resultado tem o seguinte aspeto:

    - members:
    - serviceAccount:service-987654321098@compute-system.s3ns-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Teste novamente a operação de cópia de segurança. Se a operação continuar sem êxito, contacte o apoio técnico ao cliente da nuvem para receber assistência adicional.

Erro 100010104: falha ao fazer uma cópia de segurança de PersistentVolumeClaim: violação da restrição da política da organização ao criar o instantâneo

O erro 100010104 ocorre quando uma tentativa de fazer uma cópia de segurança de um PersistentVolumeClaim falha devido a uma violação de restrição da política da organização durante a criação do instantâneo, o que resulta numa mensagem de erro a indicar Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot.

A Cópia de segurança do GKE cria instantâneos do disco persistente do cluster do GKE. Os instantâneos residem no seu Cloud de Confiance by S3NS projeto, também conhecido como projeto do consumidor, e são criados num projeto de inquilino que é gerido pela Cloud de Confiance by S3NS. O projeto de inquilino existe na organização google.com separadamente da sua própria organização.

A política da sua organização determina onde pode criar recursos de armazenamento. O erro Constraint constraints/compute.storageResourceUseRestrictions violated significa que um recurso ou uma captura de ecrã está a violar a política por ter sido criado num projeto de inquilino que não faz parte da sua estrutura organizacional permitida. Uma vez que o projeto de inquilino está na organização da Google, está fora da política definida, o que leva à falha da cópia de segurança.

Para resolver este erro, siga estas instruções:

  1. Localize a política da organização que implementa a restrição constraints/compute.storageResourceUseRestrictions. Para mais informações sobre como ver as políticas da organização através da Cloud de Confiance consola, consulte o artigo Ver políticas da organização.

  2. Modifique a política constraints/compute.storageResourceUseRestrictions para incluir a pasta do projeto do inquilino folders/77620796932 usada pelo Backup for GKE na respetiva lista de autorizações.

  3. Guarde as alterações à política depois de adicionar a pasta à lista de autorizações.

  4. Teste novamente a operação de cópia de segurança após a atualização e a propagação da política da organização, o que normalmente demora alguns minutos. A cópia de segurança deve prosseguir sem violar as restrições de utilização dos recursos de armazenamento. Se a operação continuar a não ser bem-sucedida, contacte o apoio ao cliente do Google Cloud para receber assistência adicional.

Erro 100010106: falha ao fazer uma cópia de segurança de PersistentVolumeClaim: falta a associação do IAM para o agente do serviço de cópia de segurança do GKE

O erro 100010106 ocorre quando uma tentativa de fazer uma cópia de segurança de um PersistentVolumeClaim falha devido a uma associação da gestão de identidades e acessos em falta para o seu agente do serviço Backup for GKE, o que resulta numa mensagem de erro a indicar Failed to backup PVC - Missing IAM binding for Backup for GKE service agent.

A Cópia de segurança para o GKE requer autorizações para usar a chave de encriptação gerida pelo cliente (CMEK) do BackupPlan para encriptar e desencriptar volumes de discos persistentes. Quando o agente do serviço de cópia de segurança do GKE não tem a função roles/cloudkms.cryptoKeyEncrypterDecrypter na sua BackupPlan CMEK, as operações de cópia de segurança falham.

Para resolver este erro, siga estas instruções:

  1. Identifique o agente do serviço de cópia de segurança para GKE gerido pela Google específico do seu projeto. Por exemplo, service-PROJECT_NUMBER@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com. Pode encontrar o número do projeto através dos seguintes métodos:

    • Use o Cloud de Confiance by S3NS painel de controlo do projeto na Cloud de Confiance consola.

    • Execute o comando gcloud projects describe através da CLI do Google Cloud:

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

      Substitua PROJECT_ID pelo nome exclusivo do seu projeto.

  2. Identifique os seguintes detalhes da CMEK:

    • Nome da chave: o nome da sua chave de encriptação.

    • Conjunto de chaves: o nome do conjunto de chaves onde a sua chave reside.

    • Localização: a Cloud de Confiance by S3NS localização onde a sua CMEK está localizada.BackupPlan Por exemplo, global ou us-central1.

  3. Para conceder ao agente de serviço da Cópia de segurança do GKE a função roles/cloudkms.cryptoKeyEncrypterDecrypter na sua CMEK, use a CLI Google Cloud para executar o comando 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.s3ns-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Substitua o seguinte:

    • KEY_NAME: o nome da sua chave de encriptação.

    • KEY_RING: o nome do conjunto de chaves.

    • LOCATION: a Cloud de Confiance by S3NS localização da sua chave. Por exemplo, global ou us-central1.

    • PROJECT_NUMBER: o número do seu Cloud de Confiance by S3NS projeto.

  4. Verifique se tem as autorizações da gestão de identidade e de acesso necessárias na chave do Serviço de gestão de chaves na nuvem. Por exemplo, roles/cloudkms.admin ou roles/owner.

  5. Verifique se tem as autorizações concedidas. No resultado do comando gcloud kms keys add-iam-policy-binding anterior, procure uma entrada semelhante à seguinte:

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Teste novamente a operação de cópia de segurança depois de conceder as autorizações necessárias. Se a operação não for concluída com êxito, contacte o apoio ao cliente do Google Cloud para receber assistência adicional.

Erro 100010107: falha na cópia de segurança de PersistentVolumeClaim – Falta associação de IAM – conta de serviço do agente (KCP)

O erro 100010107ocorre quando tenta realizar uma operação de cópia de segurança para o GKE e o agente de serviço do cluster do Google Kubernetes Engine não tem acesso à sua chave de encriptação gerida pelo cliente (CMEK), o que resulta numa mensagem a indicar Failed to backup PVC - Missing IAM binding - agent service account (KCP).

O agente de serviço do cluster do Google Kubernetes Engine, normalmente no formato de service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com, é essencial para que o seu cluster do GKE interaja com os serviços Cloud de Confiance by S3NS. Quando o seu plano de cópia de segurança usa uma chave de encriptação gerida pelo cliente (CMEK). Este agente do serviço precisa de autorizações para encriptar e desencriptar os seus dados de cópia de segurança através da sua CMEK. Se o plano de cópia de segurança não tiver a função roles/cloudkms.cryptoKeyEncrypterDecrypter na sua CMEK, as operações de cópia de segurança iniciadas a partir do cluster falham com um erro permission denied.

Para resolver este erro, use as seguintes instruções de resolução de problemas:

  1. Verifique se tem as autorizações corretas para modificar as políticas de IAM na chave do Serviço de gestão de chaves na nuvem. Por exemplo, cloudkms.admin ou roles/owner.

  2. Identifique o agente de serviço do cluster do Google Kubernetes Engine. Este agente de serviço é criado e gerido automaticamente pela Google para os seus clusters do GKE. Cloud de Confiance by S3NS Por exemplo, service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com. Precisa do número do projeto para criar a conta de serviço completa. Pode encontrar o número do projeto através de um dos seguintes métodos:

    • Use o Cloud de Confiance by S3NS painel de controlo do projeto na Cloud de Confiance consola.

    • Execute o comando gcloud projects describe através da CLI do Google Cloud:

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

      Substitua PROJECT_ID pelo ID do seu projeto.

  3. Localize as seguintes informações da CMEK:

    • Nome da chave: o nome da sua chave de encriptação.

    • Conjunto de chaves: o nome do conjunto de chaves onde a sua chave reside.

    • Localização: a Cloud de Confiance by S3NS localização onde a chave se encontra. Por exemplo, global ou us-central1.

  4. Conceda a função de roles/cloudkms.cryptoKeyEncrypterDecrypter ao nível do CMEK. O agente de serviço do Google Kubernetes Engine precisa de autorizações na sua chave de encriptação. Para conceder a função roles/cloudkms.cryptoKeyEncrypterDecrypter na sua CMEK, use a CLI gcloud para executar o comando 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.s3ns-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Substitua o seguinte:

    • KEY_NAME: o nome da sua chave de encriptação.

    • KEY_RING: o nome do conjunto de chaves.

    • LOCATION: a Cloud de Confiance by S3NS localização da sua chave. Por exemplo, global ou us-central1.

    • PROJECT_NUMBER: o nome do projeto.

    O resultado é semelhante ao seguinte:

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.s3ns-system.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Tente novamente a operação de cópia de segurança do GKE. Se a operação continuar a falhar, contacte o apoio técnico do Google Cloud para receber assistência adicional.

Erro 100020101: falha na cópia de segurança de PersistentVolumeClaim – PersistentVolumeClaim associado a um tipo de PersistentVolume não suportado

O erro 100020101 ocorre quando uma tentativa de fazer uma cópia de segurança de um PersistentVolumeClaim falha porque o PersistentVolumeClaim está associado a um tipo de PersistentVolume não suportado. O erro resulta na seguinte mensagem de erro: PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.

Este erro ocorre quando a sua operação de cópia de segurança do GKE encontra um PersistentVolumeClaim associado a um PersistentVolume que usa um tipo de volume não suportado para a cópia de segurança de dados pelo Backup for GKE. A cópia de segurança para o GKE suporta principalmente a criação de cópias de segurança de dados de volumes de discos persistentes. Se um PersistentVolumeClaim estiver associado a um PersistentVolume que não seja um disco persistente, a operação de cópia de segurança falha para os dados do PersistentVolumeClaim.

Para resolver este erro, use as seguintes instruções de resolução de problemas:

  1. Apresente uma lista de todos os PersistentVolumeClaims e PersistentVolumes associados a eles executando o comando kubectl get pvc. Reveja esta lista para identificar os PersistentVolumes que são suportados por tipos de volumes não suportados.

    kubectl get pvc --all-namespaces -o wide
    
  2. Determine o tipo de volume do PersistentVolume que é suportado por um tipo de volume não suportado pela cópia de segurança para o GKE executando o comando kubectl describe pv:

    kubectl describe pv PERSISTENT_VOLUME_NAME
    

    Substitua o seguinte:

    PERSISTENT_VOLUME_NAME: o nome de PersistentVolume que tem um tipo de volume não suportado indicado como coluna VOLUME na saída do passo anterior.

    Na saída, use os campos Source e Driver para obter detalhes do aprovisionador de volume:

    • Para Persistent Disks suportados: o resultado é semelhante a Source.Driver: pd.csi.storage.gke.io ou Source.Type:GCEPersistentDisk.

    • Para tipos não suportados que estão a causar o erro: a saída seria um controlador de disco não persistente, por exemplo, Source.Driver:filestore.csi.storage.gke.io.

  3. Use um dos seguintes métodos para resolver o erro:

    • Migre para um volume de disco persistente: recomendamos este método para fazer cópias de segurança completas dos dados. Se precisar de fazer uma cópia de segurança dos dados de volume reais, tem de usar um disco persistente, o que envolve a migração dos dados do tipo de volume não suportado para um novo volume CSI de disco persistente. Para receber assistência com a migração de um volume do disco persistente, contacte o Cloud Customer Care.

    • Ative o modo permissivo na Cópia de segurança para GKE: recomendamos este método se não for necessária uma cópia de segurança de dados para volumes não suportados. Se a migração de dados não for viável ou necessária, por exemplo, se o volume tiver uma cópia de segurança de um serviço externo e planear voltar a anexá-lo durante a operação de restauro, pode configurar o plano de cópia de segurança do Backup for GKE para permitir que a cópia de segurança continue no modo permissivo. Para mais informações sobre como ativar o modo permissivo, consulte o artigo Ative o modo permissivo num plano de yedekleme.

  4. Tente novamente a operação de cópia de segurança do GKE. Com base no método que escolheu para resolver o erro, a operação de cópia de segurança para GKE tem o seguinte comportamento:

    • Se migrou para um volume de disco persistente, a cópia de segurança deve ser bem-sucedida para o volume, incluindo os respetivos dados.

    • Se ativou o modo permissivo, a operação de cópia de segurança deve ser bem-sucedida, mas não é feita uma cópia de segurança dos dados dos volumes não suportados.

Se a operação continuar a falhar, contacte o apoio ao cliente do Google Cloud para receber mais assistência.

Erro 100020104: falha ao fazer uma cópia de segurança de PersistentVolumeClaim – PersistentVolumeClaim não associado a um PersistentVolume

O erro 100020104 ocorre quando uma tentativa de fazer uma cópia de segurança de um PersistentVolumeClaim falha porque o PersistentVolumeClaim não está associado a um PersistentVolume. O erro resulta na seguinte mensagem de erro: Failed to backup PVC - PVC Not Bound to a Persistent Volume.

Este erro ocorre quando a operação de cópia de segurança do Backup for GKE tenta fazer uma cópia de segurança de um PersistentVolumeClaim que não está associado com êxito a um PersistentVolume. Um PersistentVolumeClaim tem de estar associado a um PersistentVolume antes de poder ser usado por uma carga de trabalho de consumo, como um pod, e, posteriormente, ter uma cópia de segurança feita pelo Backup for GKE. Se o PersistentVolumeClaim permanecer num estado Pending, significa que não está disponível um PersistentVolume adequado ou que não é possível aprovisioná-lo nem associá-lo, o que leva à falha da operação de cópia de segurança. Um motivo comum para um PersistentVolumeClaim permanecer não associado é quando o respetivo StorageClass usa um modo de associação WaitForFirstConsumer, mas nenhum pod ou outra carga de trabalho está ainda a tentar consumir o PersistentVolumeClaim.

Para resolver este erro, use as seguintes instruções de resolução de problemas:

  1. Para verificar o estado de todos os PersistentVolumeClaims no cluster e identificar o PersistentVolumeClaim não associado, execute o comando kubectl get pvc:

    kubectl get pvc --all-namespaces | grep `Pending`
    
  2. Depois de identificar o PersistentVolumeClaim que não está associado a um PersistentVolume, obtenha informações sobre o PersistentVolumeClaim não associado executando o comando kubectl describe pvc:

    kubectl describe pvc PVC_NAME -n NAMESPACE_NAME
    

    Substitua o seguinte:

    • PVC_NAME: o nome do PersistentVolumeClaim para o qual ocorreu uma falha de cópia de segurança.

    • NAMESPACE_NAME: o nome do seu espaço de nomes onde reside o PersistentVolumeClaim.

    Depois de a descrição ser apresentada, use os campos Status e Events para determinar se o PersistentVolumeClaim está associado a um PersistentVolume. Se ainda não conseguir determinar por que motivo o PersistentVolumeClaim não está associado a um PersistentVolume ou não conseguir resolver o problema identificado, pode ativar o modo permissivo no seu plano de contingência. Para mais informações sobre como ativar o modo permissivo, consulte o artigo Ative o modo permissivo num plano de cópia de segurança.

O que se segue?