Planejar um conjunto de restaurações

Neste documento, descrevemos como criar, editar e excluir um plano de restauração no Google Distributed Cloud (GDC) com isolamento físico.

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 o papel de 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 de backup durante a restauração para migrar uma carga de trabalho de um namespace para outro.

Antes de começar

Solicitar papéis do IAM

Para criar um plano de restauração, peça ao administrador do IAM da organização para conceder a você o papel de Administrador de backup do cluster de usuários (user-cluster-backup-admin). Esse papel cria, recebe, lista, monitora, atualiza, corrige e exclui recursos de backup, como planos de backup e planos de restauração em clusters de usuários.

Se você for um operador de aplicativos, peça a um administrador com privilégios de administrador de backup do cluster de usuários 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, conclua as etapas a seguir e clique Próxima:
    1. Em Nome do plano de restauração, insira o nome do plano de restauração.
    2. (Opcional) Em Descrição do plano de restauração , insira uma descrição para o plano de restauração.
    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 atual que corresponda aos backups que você quer restaurar.
    7. No campo Cluster de destino, escolha o cluster de destino em que você quer restaurar o backup.
  5. Na seção Escolher recursos com namespace, conclua as etapas a seguir e clique em Próxima:
    1. Escolha os namespaces a serem restaurados:
      1. 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.
      2. 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 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, conclua as etapas a seguir e clique em Próxima:
    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 aos quais 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 substitui 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: RESTORE_PLAN_NAME
  namespace:  PROJECT_NAME
spec:
  targetCluster:
    targetClusterType: UserCluster
    targetClusterName:
      kind: "Cluster"
      name: CLUSTER_NAME
  description: RESTORE_PLAN_DESCRIPTION
  clusterBackupPlanName: CLUSTER_BACKUP_PLAN_NAME
  clusterRestoreConfig:
    volumeDataRestorePolicy: RestoreVolumeDataFromBackup
    clusterResourceConflictPolicy: UseBackupVersion
    namespacedResourceRestoreMode: DeleteAndRestore
    namespacedResourceRestoreScope:
      selectedNamespaces:
        namespaces: [NAME_SPACE]
    clusterBackupRepositoryRef: CLUSTER_BACKUP_REPOSITORY
    substitutionRules:
      - newValue: NEW_CONFIG_VALUE
        originValuePattern: VALUE_PATTERN
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - NAME_SPACE
      - newValue: NEW_CONFIG_VALUE
        originValuePattern: VALUE_PATTERN
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - NAME_SPACE

Substitua:

  • RESTORE_PLAN_NAME pelo nome do plano de restauração.
  • PROJECT_NAME pelo nome do projeto do GDC.
  • CLUSTER_NAME pelo nome do cluster.

Este exemplo usa os seguintes valores:


Valor

Atributo

Descrição
targetClusterName Nome do cluster de origem em um projeto ao qual esse plano está associado.
description Uma descrição fornecida pelo usuário para a finalidade do ClusterRestorePlan.
clusterBackupPlanName O nome do ClusterBackupPlan a ser restaurado. O ClusterBackupPlan precisa existir no mesmo namespace que o ClusterRestorePlan.
clusterRestoreConfig Configuração para o processo de restauração.
volumeDataRestorePolicy Especifique um destes:
  • NoVolumeDataRestoration: PVs/PVCs não são restaurados.
  • RestoreVolumeDataFromBackup: novos PVs e PVCs são criados a partir do backup.
  • ReuseVolumeHandleFromBackup: cria novos PVs, mas tenta restaurar PVCs usando os PVs originais. Destinado à restauração no mesmo cluster em que o backup foi feito.
clusterResourceConflictPolicy Especifica o comportamento para lidar com conflitos de recursos de cluster, como se o recurso já existe no cluster. Especifique um destes:
  • UseExistingVersion: não substitui os recursos atuais durante o conflito.
  • UseBackupVersion: exclui e recria recursos de cluster atuais durante o conflito. Os recursos com escopo de cluster atuais no cluster de destino serão substituídos pelas versões do backup. Essa é uma opção perigosa que pode causar perda de dados não intencional se usada de maneira inadequada. Por exemplo, a exclusão de uma definição de recurso personalizado faz com que o Kubernetes exclua todos os recursos personalizados desse tipo.
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 um destes:
  • DeleteAndRestore: quando recursos de nível superior conflitantes, como Namespaces ou ProtectedApplications, são encontrados, isso 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 quiser reverter alguma parte de um cluster para um estado anterior.
  • FailOnConflict: se recursos de nível superior conflitantes, como o recurso Namespace ou ProtectedApplication, forem encontrados no início do processo de restauração ou durante o processo de restauração, a Restore 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 aplicativos protegidos a essa restauração.
  • selectedNamespaces contém NAME_SPACE, que especifica o namespace a ser restaurado do backup.
clusterBackupRepositoryRef Especifica o repositório para armazenar os Restore recursos. Esse repositório pode ser diferente do repositório que o backup é de. O repositório precisa ser um ReadWrite repositório no cluster.
substitutionRules Regras para substituir valores nos recursos do Kubernetes com backup durante a restauração. Uma lista vazia significa que nenhuma substituição ocorre. As regras de substituição são aplicadas sequencialmente 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. Cada regra especifica um target, um originValuePattern para corresponder (VALUE_PATTERN) e um newValue (NEW_CONFIG_VALUE) para substituir. O target pode incluir namespaces para definir o escopo da regra (NAME_SPACE).

Depois que um ClusterRestorePlan é criado, os usuários com o papel 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 selecionar uma organização ou um projeto, dependendo do seu papel:
    1. Administrador de backup do cluster de usuários: selecione uma organização para ver todos os planos de restauração em uma organização ou selecione um projeto para ver todos os planos de restauração em um projeto.
    2. Criador de backup: selecione um projeto para ver todos os planos de restauração em um projeto.
  4. Clique na guia Planos de restauração.
  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, é necessário editar o plano de restauração que tem o TARGET CLUSTER definido como o cluster de leitura/gravação.

Para editar 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 selecionar uma organização ou um projeto, dependendo do seu papel:
    1. Administrador de backup do cluster de usuários: selecione uma organização para ver todos os planos de restauração em uma organização ou selecione um projeto para ver todos os planos de restauração em um projeto.
    2. Criador de backup: selecione um projeto para ver todos os planos de restauração em um projeto.
  4. Clique na guia Planos de restauração.
  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 Recursos com namespace selecionados para restaurar recursos dos namespaces selecionados no backup:

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

        1. Selecione Editar aplicativos protegidos para selecionar 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 com escopo de cluster para editar esse recurso:

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

      1. Selecione Não restaurar recursos com escopo de cluster para remover recursos com escopo de cluster 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 Adicionar GroupKind.

      5. Insira o nome do GroupKind.

      6. Clique no botão Salvar.

    2. Na seção Tratamento de conflitos, determine qual ação será realizada 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 todos os recursos encontrados e substituir esse recurso 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 para adicionar uma nova regra de substituição:

    1. No campo Namespaces do cluster, insira o nome do namespace do cluster ao qual 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 de 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 pelo 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 editar uma regra de substituição atual.

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

Excluir um plano de restauração

Os RestorePlans podem ser excluídos 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 selecionar uma organização ou um projeto, dependendo do seu papel:
    1. Administrador de backup do cluster de usuários: selecione uma organização para ver todos os planos de restauração em uma organização ou selecione um projeto para ver todos os planos de restauração em um projeto.
    2. Criador de backup: selecione um projeto para ver todos os planos de restauração em um projeto.
  4. Clique na guia Planos de restauração.
  5. Clique no nome do plano de restauração que você quer excluir.
  6. Clique no botão Excluir.
  7. Insira o nome do plano de restauração no campo.
  8. Clique no botão Excluir para confirmar a exclusão desse plano de restauraçã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