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 Google Cloud , também conhecido como projeto do consumidor, e Google Cloud 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.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 do IAM suficientes para modificar as políticas do IAM na chave do Serviço de gestão de chaves na nuvem na Google Cloud 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.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 Google Cloud 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.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 Google Cloud 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.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 ao cliente da Google Cloud 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 Google Cloud projeto, também conhecido como projeto do consumidor, e são criados num projeto de inquilino que é gerido pela Google Cloud. 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 de 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 Google Cloud 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 mais assistência.

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 do Identity and Access Management 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.iam.gserviceaccount.com. Pode encontrar o número do projeto através dos seguintes métodos:

    • Use o Google Cloud painel de controlo do projeto na Google Cloud 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 Google Cloud 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.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 Google Cloud localização da sua chave. Por exemplo, global ou us-central1.

    • PROJECT_NUMBER: o número do seu Google Cloud 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.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 100010107 ocorre quando tenta executar 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 service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, é essencial para que o seu cluster do GKE interaja com os serviços Google Cloud. 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 Cloud Key Management Service. 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. Google Cloud Por exemplo, service-PROJECT_NUMBER@container-engine-robot.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 Google Cloud painel de controlo do projeto na Google Cloud 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 Google Cloud 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.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 Google Cloud 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.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 ao cliente 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?