Planejar um conjunto de restaurações

Nesta página, descrevemos como criar, editar e excluir um plano de restauração no Google Distributed Cloud (GDC) isolado.

Os planos de restauração são cenários de restauração pré-configurados para uma linha correspondente de backups. Os planos de restauração podem atribuir permissões para que os usuários com a função Criador de backup usem essas configurações.

Os criadores de backup podem restaurar um backup de maneira rápida e independente quando ocorre um incidente. Por exemplo, os dados permanentes podem ser corrompidos por uma atualização de software em um aplicativo implantado, colocando o namespace do aplicativo em um estado inválido, o que requer uma restauração.

Durante a restauração, você tem a opção de aplicar um conjunto de regras de substituição, que são usadas para corresponder a um conjunto de recursos e substituir o valor atual de um atributo nesses recursos por um novo valor. Por exemplo, uma regra de substituição pode mudar o namespace dos recursos em backup durante a restauração para migrar uma carga de trabalho de um namespace para outro.

Antes de começar

Para criar um plano de restauração, você precisa ter o seguinte:

  • O papel necessário de identidade e acesso:

    • Administrador de backup de cluster de usuário: gerencia recursos de backup, como planos de backup e restauração em clusters de usuário. Peça ao administrador do IAM da organização para conceder a você o papel de administrador de backup do cluster de usuário (user-cluster-backup-admin). Para mais informações, consulte Definições de papéis.
    • Se você for um operador de aplicativos, peça ao administrador com privilégios de administrador de backup do cluster de usuário para criar um plano de restauração.

Criar um plano de restauração

Crie um plano de restauração usando o console do GDC ou a API.

Console

  1. Faça login no console do GDC.
  2. No menu de navegação, clique em Backup para clusters.
  3. Clique em Criar plano de restauração.
  4. Na seção Noções básicas do plano de restauração, siga estas etapas e clique em Próxima:
    1. Em Nome do plano de restauração, insira o nome do plano.
    2. (Opcional) Em Descrição do plano de restauração, insira uma descrição para o plano.
    3. Na lista Cluster de origem, escolha o cluster de origem para o plano de restauração.
    4. Na lista Projeto, escolha o projeto para o plano de restauração.
    5. Selecione o projeto anexado ao cluster de origem.
    6. No campo Plano de backup, escolha um plano de backup para um cluster existente que corresponda aos backups que você quer restaurar.
    7. No campo Cluster de destino, escolha o cluster em que você quer restaurar o backup.
  5. Na seção Escolher recursos com namespace, conclua as etapas a seguir e clique em Avançar:
    1. Escolha os namespaces a serem restaurados:
      1. Clique em Todos os recursos com namespace para restaurar todos os recursos com namespace no backup.
      2. Clique em Recursos com namespace selecionados para especificar os namespaces no backup a ser restaurado.
        1. Clique em Editar namespaces do cluster e em Adicionar namespace do cluster para inserir um namespace.
      3. Clique em Aplicativos protegidos selecionados para adicionar recursos especificando o namespace e o nome do aplicativo.
    2. Escolha como lidar com conflitos:
      1. Clique em Falha em caso de conflito (não destrutivo) para falhar na restauração se já houver namespaces destinados à restauração de um backup no cluster de destino.
      2. Clique em Reverter (destrutivo) para excluir os namespaces atuais antes de restaurar os novos namespaces, se já houver namespaces destinados à restauração a partir de um backup no cluster de destino.
    3. Escolha como restaurar dados de volume:
      1. Clique em Provisionar novos volumes e restaurar dados de volume do backup para restaurar dados de volume do backup em um novo disco permanente.
      2. Clique em Não restaurar dados de volume para provisionar um novo volume permanente. Se o cluster de destino contiver um volume permanente não vinculado que atenda aos requisitos de PersistentVolumeClaim, o cluster estará vinculado ao volume.
      3. Clique em Reutilizar os volumes atuais que contêm os dados para não restaurar dados de backup de volume. Qualquer PersistentVolumeClaims está vinculada a volumes que fazem referência aos discos permanentes atuais.
  6. Opcional: na seção Escolher recursos com escopo de cluster, conclua as etapas a seguir e clique em Próxima:
    1. Clique em Não restaurar recursos com escopo de cluster para deixar a versão atual do recurso intacta.
    2. Clique em Restaurar recursos com escopo de cluster por GroupKind para restaurar esses recursos.
      1. Clique em Editar GroupKinds para adicionar mais recursos com escopo de cluster. Insira o Grupo de API e o Tipo de objeto para corresponder aos recursos desses tipos.
    3. Clique em Preservar recursos atuais para criar recursos se eles não existirem no cluster de destino.
    4. Clique em Substituir recursos no cluster de destino para excluir um recurso se ele já existir no cluster de destino e restaurar a cópia do backup.
  7. Opcional: na seção Adicionar regras de substituição, siga estas etapas e clique em Próximo:
    1. Clique em Adicionar nova regra.
    2. Na caixa Namespaces do cluster, digite uma lista de namespaces para corresponder aos recursos deles.
    3. Para adicionar GroupKinds, clique em Adicionar GroupKind e insira o grupo de API e o tipo de objeto para corresponder aos recursos desses tipos.
    4. No campo Caminho JSON, digite o caminho JSON que identifica os campos nos recursos correspondentes a que a substituição se aplica.
    5. No campo Padrão de valor original, digite o padrão original para comparar com o novo valor.
    6. No campo Novo valor, digite o novo valor que vai substituir o valor atual dos atributos correspondentes.
    7. Clique em Salvar.
  8. Clique em Criar.

API

Crie um recurso personalizado ClusterRestorePlan para planejar restaurações de um ClusterBackupPlan atual. O ClusterRestorePlan atribui o conjunto exato de recursos e namespaces que um criador de backup tem permissão para restaurar. Confira um exemplo de ClusterRestorePlan:

apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
  name: restoreplan-sample
  namespace:  PROJECT_NAME
spec:
  targetCluster:
    targetClusterType: UserCluster
    targetClusterName:
      kind: "Cluster"
      name: "user-vm-1"
  description: "restores test clusters"
  clusterBackupPlanName: "backupplan-sample"
  clusterRestoreConfig:
    volumeDataRestorePolicy: RestoreVolumeDataFromBackup
    clusterResourceConflictPolicy: UseBackupVersion
    namespacedResourceRestoreMode: DeleteAndRestore
    namespacedResourceRestoreScope:
      selectedNamespaces:
        namespaces: ["nginx-2"]
    clusterBackupRepositoryRef: "backup-repository"
    substitutionRules:
      - newValue: "newhippo"
        originValuePattern: game-config-2
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - nginx-2
      - newValue: "hippo"
        originValuePattern: game-config
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - nginx-2

Substitua PROJECT_NAME pelo nome do projeto do GDC.

Este exemplo usa os seguintes valores:


Valor

Atributo

Descrição
clusterBackupPlanName O nome do ClusterBackupPlan a ser restaurado. O ClusterBackupPlan precisa estar no mesmo namespace que o ClusterRestorePlan.
targetClusterName Nome do cluster de origem em um projeto ao qual este plano está associado.
description Uma descrição fornecida pelo usuário para a finalidade do ClusterRestorePlan.
clusterRestoreConfig Configuração para o processo de restauração.
clusterBackupRepositoryRef Especifica o repositório para armazenar os recursos Restore. Esse repositório pode ser diferente daquele de onde o backup foi feito. O repositório precisa ser um repositório ReadWrite no cluster.
clusterResourceConflictPolicy Especifica o comportamento para lidar com conflitos de recursos do cluster, como se o recurso já existir no cluster. Especifique uma destas opções:
  • UseExistingVersion: não substitui recursos existentes durante um conflito.
  • UseBackupVersion: exclui e recria recursos de cluster existentes durante o conflito. Essa é uma opção perigosa que pode causar perda de dados não intencional se usada incorretamente. Por exemplo, excluir uma definição de recurso personalizado faz com que o Kubernetes exclua todos os recursos personalizados desse tipo.
volumeDataRestorePolicy Especifique uma destas opções:
  • NoVolumeDataRestoration: PVs/PVCs não são restaurados.
  • RestoreVolumeDataFromBackup: novos PVs e PVCs são criados com base no backup.
  • ReuseVolumeHandleFromBackup: cria novos PVs, mas tenta restaurar os PVCs usando os PVs originais. Destinado a restaurar para o mesmo cluster de onde o backup foi feito.
namespacedResourceRestoreMode Lida com a situação em que os conjuntos de recursos com namespace que estão sendo restaurados já existem no cluster de destino. Especifique uma destas opções:
  • DeleteAndRestore: quando recursos de nível superior conflitantes, como Namespaces ou ProtectedApplications, são encontrados, o primeiro aciona uma exclusão do recurso conflitante e de todos os recursos referenciados antes de restaurar os recursos do Backup. Use esse modo apenas quando você pretende reverter parte de um cluster para um estado anterior.
  • FailOnConflict: se recursos conflitantes de nível superior, como Namespace ou ProtectedApplication, forem encontrados no início ou durante o processo de restauração, o Restore vai falhar.
  • MergeSkipOnConflict: se recursos conflitantes forem encontrados durante o processo de restauração, esse modo vai pular a restauração dos recursos conflitantes do backup e continuar restaurando outros recursos que não estão no cluster.
  • MergeReplaceOnConflict: se recursos conflitantes forem encontrados durante o processo de restauração, esse modo vai substituir os recursos conflitantes do backup e continuar restaurando outros recursos que não estão no cluster.
namespacedResourceRestoreScope Especifica quais Namespaces ou ProtectedApplications são permitidos para restauração.
  • selectedApplications associa um aplicativo protegido a essa restauração.
  • selectedNamespaces associa um namespace a essa restauração.
substitutionRules Regras para substituir valores nos recursos do Kubernetes com backup durante a restauração. Uma lista vazia significa que não haverá substituição. As regras de substituição são aplicadas em sequência na ordem definida. Essa ordem é importante, já que as mudanças feitas por uma regra podem afetar a lógica de correspondência da regra subsequente.

Depois que um ClusterRestorePlan é criado, os usuários com a função de criador de backup podem restaurar backups manualmente.

Ver um plano de restauração

Para ver um plano de restauração usando o console do GDC:

  1. Faça login no console do GDC.
  2. No menu de navegação, clique em Backup para clusters.
  3. Clique em Selecionar projeto para escolher uma organização ou um projeto, dependendo da sua função:
    1. Administrador de backup de cluster de usuário: selecione uma organização para conferir todos os planos de restauração em uma organização ou selecione um projeto para conferir todos os planos de restauração em um projeto.
    2. Criador de backup: selecione um projeto para conferir todos os planos de restauração nele.
  4. Clique na guia Restaurar planos.
  5. Clique em um plano de restauração na lista para ver os detalhes.

Editar um plano de restauração

Se o repositório de backup associado ao plano de restauração que você quer editar tiver um valor no campo Cluster vinculado(somente leitura) quando o plano de restauração for criado, ele será criado duas vezes. O plano de restauração é propagado para os clusters de leitura/gravação e somente leitura.

Ao editar o plano de restauração de um repositório de backup que tem clusters de leitura/gravação e somente leitura definidos, edite o plano de restauração que tem o TARGET CLUSTER definido como o cluster de leitura/gravação.

Edite um plano de restauração usando o console do GDC:

  1. Faça login no console do GDC.
  2. No menu de navegação, clique em Backup para clusters.
  3. Clique em Selecionar projeto para escolher uma organização ou um projeto, dependendo da sua função:
    1. Administrador de backup de cluster de usuário: selecione uma organização para conferir todos os planos de restauração em uma organização ou selecione um projeto para conferir todos os planos de restauração em um projeto.
    2. Criador de backup: selecione um projeto para conferir todos os planos de restauração nele.
  4. Clique na guia Restaurar planos.
  5. Clique no nome do plano de restauração que você quer editar.
  6. Clique na guia Configuração do plano para ver os campos que podem ser modificados.
  7. Clique no ícone Editar ao lado de Recursos com namespace para editar esse recurso:

    1. Na seção Escolher recursos com namespace, selecione quais recursos com namespace no backup você quer restaurar:

      1. Selecione Todos os recursos com namespace para restaurar todos os recursos com namespace no backup.
      2. Selecione Recursos com namespace selecionados para restaurar recursos dos namespaces selecionados no backup:

        1. Selecione Editar namespaces do cluster para escolher o namespace do cluster.
        2. No campo Namespace do cluster 1, insira o nome do namespace.
        3. Clique no botão Salvar.
      3. Selecione Aplicativos protegidos selecionados para restaurar recursos dos aplicativos protegidos selecionados no backup:

        1. Selecione Editar aplicativos protegidos para escolher o namespace e o aplicativo protegido.
        2. No campo Namespace 1, insira o nome do namespace.
        3. No campo Aplicativo protegido 1, insira o nome do aplicativo protegido.
        4. Clique no botão Salvar.
  8. Clique no ícone Editar ao lado de Recursos no escopo do cluster para editar esse recurso:

    1. Opcional: na seção Escolher recursos com escopo de cluster, selecione os recursos com escopo de cluster a serem restaurados especificando os grupos de API e GroupKinds e decida como os conflitos devem ser resolvidos:

      1. Selecione Não restaurar recursos com escopo de cluster para remover esses recursos do processo de restauração.
      2. Selecione Restaurar recursos com escopo de cluster por GroupKind para restaurar os recursos pelo GroupKind especificado:

      3. Para especificar um GroupKind, clique no botão Editar GroupKind.

      4. Clique no botão Add GroupKind.

      5. Digite o nome do GroupKind.

      6. Clique no botão Salvar.

    2. Na seção Tratamento de conflitos, determine qual ação será tomada se o recurso já existir no cluster de destino:

      1. Selecione Preservar recursos atuais para criar recursos se eles ainda não existirem no cluster.
      2. Selecione Substituir recursos atuais para excluir os recursos encontrados e substituir pelo recurso restaurado.
    3. Clique no botão Salvar para confirmar as mudanças.

  9. Na seção Regras de substituição, clique no botão Adicionar nova regra:

    1. No campo Namespaces do cluster, insira o nome do namespace do cluster em que essa regra de substituição será aplicada.
    2. Clique no botão Adicionar GroupKind para aplicar essa regra a um determinado objeto GroupKind.
    3. No campo Caminho JSON, insira o caminho para o atributo do recurso que você quer substituir, no formato JSON.
    4. No campo Padrão do valor original, insira uma expressão regular que corresponda ao valor original do atributo.
    5. No campo Novo valor, insira o valor que será substituído no campo de destino. Se esse campo estiver em branco, o campo de destino será removido do recurso.
    6. Clique no botão Salvar para concluir a criação da nova regra de substituição.
  10. Na seção Regras de substituição, clique no ícone Editar para mudar uma regra de substituição.

  11. Na seção Regras de substituição, clique no ícone Excluir para remover uma regra de substituição.

Excluir um plano de restauração

O RestorePlans pode ser excluído pelo console do GDC ou excluindo o recurso diretamente do servidor da API Kubernetes. Isso limpa todos os artefatos RestorePlan associados do armazenamento de objetos.

Console

  1. Faça login no console do GDC.
  2. No menu de navegação, clique em Backup para clusters.
  3. Clique em Selecionar projeto para escolher uma organização ou um projeto, dependendo da sua função:
    1. Administrador de backup do cluster de usuário: selecione uma organização para conferir todos os planos de restauração em uma organização ou selecione um projeto para conferir todos os planos de restauração em um projeto.
    2. Criador de backup: selecione um projeto para conferir todos os planos de restauração dele.
  4. Clique na guia Restaurar planos.
  5. Clique no nome do plano de restauração que você quer excluir.
  6. Clique no botão Excluir.
  7. Digite o nome do plano de restauração no campo.
  8. Clique no botão Excluir para confirmar a exclusão do plano de recuperação.

API

Exclua o recurso do plano de restauração:

kubectl delete clusterRestoreplan RESTORE_PLAN_NAME -n NAMESPACE

Substitua:

  • RESTORE_PLAN_NAME: o nome do plano de restauração.
  • NAMESPACE: o namespace que contém o plano de restauração.

A seguir