Planejar um conjunto de restaurações


Nesta página, descrevemos como criar um plano de restauração do Backup para o GKE, que é usado para restaurar backups no Google Kubernetes Engine (GKE).

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 administradores usem essas configurações. Esses usuários 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 regras de transformaçã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.

Antes de começar

Planeje um conjunto de backups.

Funções exigidas

Para receber as permissões necessárias para criar e gerenciar um plano de restauração, peça ao administrador para conceder a você o Administrador de restauração do Backup para GKE (roles/gkebackup.restoreAdmin), que é um subconjunto do papel do IAM de Administrador do Backup para GKE (roles/gkebackup.admin) no seu projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Criar um plano de restauração

Crie um plano de restauração para backups usando a Google Cloud CLI ou o Console do Google Cloud.

gcloud

Para criar um plano de restauração, execute o seguinte comando:

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE \
    --all-namespaces \
    --cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY \
    --cluster-resource-scope-selected-group-kinds=CLUSTER_RESOURCE_SCOPE \
    --volume-data-restore-policy=VOLUME_DATA_RESTORE_POLICY

Substitua:

  • RESTORE_PLAN: o nome do plano de restauração que você quer criar;
  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • LOCATION: a região do Compute do recurso, por exemplo, us-central1; Consulte Sobre locais de recursos. O local precisa ser a mesma região em que o cluster de destino está localizado.
  • BACKUP_PLAN: a origem dos backups que podem ser restaurados com esse plano de restauração.
    • projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME
  • CLUSTER: o nome do cluster de destino em que você quer restaurar o backup:

    • Clusters regionais: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
    • Clusters zonais: projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
  • NAMESPACED_RESOURCE_RESTORE_MODE: define como lidar com conflitos de tempo de restauração para recursos com namespace. Os recursos com namespace sempre são restaurados nos grupos, seja por namespace ou por ProtectedApplication. Use uma destas opções:

    • delete-and-restore: quando o cluster de destino contém o mesmo grupo de recursos segmentados para restauração no cluster, o grupo atual de recursos é excluído antes que os novos recursos sejam restaurados.
    • fail-on-conflict: se já houver grupos de recursos destinados à restauração de um backup no cluster de destino, a restauração falhará.
  • --all-namespaces: restaura todos os recursos com namespace no backup. Como alternativa, especifique:

    • --excluded-namespaces com uma lista de namespaces como NAMESPACE1,NAMESPACE2,... para restaurar todos os namespaces, exceto os que estão na lista.
    • --selected-applications com uma lista de ProtectedApplications como NAMESPACE1/APP1,NAMESPACE2/APP2,... para restaurar.
    • --selected-namespaces com uma lista de namespaces como NAMESPACE1,NAMESPACE2,... a ser restaurada.
    • --no-namespaces: não restaura os recursos com namespace no backup. Essa opção não pode ser especificada com --cluster-resource-scope-no-group-kinds.

    Especifique uma dessas opções ao criar um plano de restauração.

  • CLUSTER_RESOURCE_CONFLICT_POLICY: define como lidar com conflitos de tempo de restauração para recursos de cluster selecionados. Use uma destas opções:

    • use-existing-version: se os recursos que estão sendo restaurados já existirem no cluster de destino, o Backup para GKE manterá os recursos atuais.

    • use-backup-version: se os recursos que estão sendo restaurados já existirem no cluster de destino, o Backup para GKE substituirá os recursos atuais pelos novos recursos do backup.

  • --cluster-resource-scope-selected-group-kinds: (opcional) restaura recursos de cluster com tipos de grupo selecionados no formato Group/Kind. CLUSTER_RESOURCE_SCOPE define GroupKinds de recursos de cluster a serem restaurados. Por exemplo, apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass.

    Como alternativa, especifique:

    • cluster-resource-scope-all-group-kinds para selecionar todos os tipos de grupo de recursos do cluster a serem restaurados.
    • cluster-resource-scope-excluded-group-kinds com uma lista de tipos de grupos de recursos de clusters para restaurar todos os tipos de grupos de recursos de clusters, exceto os da lista.
    • cluster-resource-scope-no-group-kinds. Essa opção não pode ser especificada com --no-namespaces.

    Não especificar nenhuma dessas opções não vai restaurar nenhum recurso do cluster.

  • VOLUME_DATA_RESTORE_POLICY: defina como os dados são preenchidos para volumes restaurados. Use uma destas opções:

    • restore-volume-data-from-backup: novos PVs serão restaurados usando os dados de backup de volume correspondentes no Backup.

    • reuse-volume-handle-from-backup: os PVs serão pré-provisionados usando o gerenciador de volume do PV original no Backup.

    • no-volume-data-restoration: os PVs não serão restaurados. A restauração restaura somente os PVCs selecionados e espera que o driver de armazenamento correspondente provisione dinamicamente PVs em branco ou os vincule a PVs pré-provisionados criados fora de banda.

Para ver a lista completa de opções, consulte a documentação do gcloud beta container backup-restore restore-plans create.

Criar um RestorePlan para todos os namespaces

O comando a seguir cria um RestorePlan para restaurar todos os namespaces e recursos do cluster:

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=fail-on-conflict \
    --all-namespaces \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-all-group-kinds \
    --volume-data-restore-policy=restore-volume-data-from-backup

Criar um RestorePlan para reverter um namespace

O comando a seguir cria um RestorePlan para reverter o namespace my-ns do backup:

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=delete-and-restore \
    --selected-namespaces=my-ns \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-selected-group-kinds=apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass \
    --volume-data-restore-policy=restore-volume-data-from-backup

Crie um RestorePlan para reverter ProtectedApplication para reconectar volumes originais

O comando a seguir cria um RestorePlan para reverter o my-ns/my-app do ProtectedApplication para reconectar volumes originais:

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=delete-and-restore \
    --selected-applications=my-ns/my-app \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-no-group-kinds \
    --volume-data-restore-policy=reuse-volume-handle-from-backup

Criar um RestorePlan para restaurar apenas recursos do cluster

O comando a seguir cria um RestorePlan para restaurar todos os recursos do cluster:

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=fail-on-conflict \
    --no-namespaces \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-all-group-kinds

Console

Use as instruções a seguir para criar um plano de restauração no console do Google Cloud:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. No menu de navegação, clique em Backup para o GKE.

  3. Clique em Criar um plano de restauração.

  4. Na seção Nomear seu plano e escolher um cluster, faça o seguinte e clique em Próximo:

    1. Insira o nome do plano de restauração e uma descrição opcional.
    2. Escolha um plano de backup para um cluster existente que corresponda aos backups que você quer restaurar.
    3. Escolha o cluster de destino em que você quer restaurar o backup.
  5. Na seção Escolher recursos com namespace, conclua o comando a seguir e clique em Avançar:

    1. Escolha os namespaces a serem restaurados:

      • Clique em Todos os recursos com namespace para restaurar todos os recursos com namespace no backup.
        1. Clique em Adicionar namespaces na seção "Exceptions" para excluir qualquer namespace no backup.
      • Clique em Recursos com namespace selecionados para especificar os namespaces no backup a ser restaurado.
      • Clique em Aplicativos protegidos selecionados para adicionar recursos especificando o namespace e o nome do aplicativo.
      • Clique em Sem recursos com namespace para não restaurar nenhum recurso com namespace.
    2. Escolha como lidar com conflitos se qualquer recurso com namespace for selecionado:

      • 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.
      • 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 e clique em Próxima:

      • Clique em Provisionar novos volumes e restaurar dados de volume do backup para restaurar dados de volume do backup em um novo disco permanente.
      • 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.
      • 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 os itens a seguir e clique em Avançar:

    1. Escolha os tipos de grupos que você quer restaurar:

      • Clique em Todos os recursos com escopo de cluster para restaurar todos os recursos com escopo de cluster no backup.
        1. Clique em Adicionar groupkinds na seção "Exceções" para excluir qualquer recurso com escopo de cluster no backup.
      • Clique em Recursos com escopo de cluster selecionado para especificar os recursos com escopo de cluster no backup a serem restaurados. apiextensions.k8s.io/CustomResourceDefinition e storage.k8s.io/StorageClass são selecionados por padrão. Clique em Adicionar groupkind para adicionar mais recursos com escopo de cluster.
      • Clique em Nenhum recurso com escopo de cluster para optar por não restaurar nenhum recurso de cluster.
    2. Escolha como lidar com conflitos se qualquer recurso com escopo de cluster for selecionado:

      • Clique em Manter recursos no cluster de destino para pular um recurso se ele já existir no cluster de destino.
      • 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 transformação, faça o seguinte e clique em Próximo:

    1. Clique em Adicionar regra e digite uma descrição opcional.
    2. Se você quiser restringir as regras de transformação a recursos que correspondam a condições específicas, faça o seguinte na seção Especificar condições e ações do recurso:
      1. Clique em Condição de namespaces e digite uma lista de namespaces para corresponder aos recursos deles.
      2. Clique em Condição de groupKind e digite o tipo do grupo de APIs. Em seguida, digite o tipo do objeto. Isso faz a correspondência de um grupo de APIs com recursos desses tipos.
      3. Clique em Condição do caminho JSON e digite o caminho JSON que identifica os campos nos recursos correspondentes a que a transformação se aplica.
      4. Digite o novo valor que substitui o valor atual dos atributos correspondentes ou marque a caixa de seleção Substituir valores específicos (usando uma expressão regular). Em seguida, digite o padrão para comparar com o valor atual desses recursos.
    3. Clique em Salvar.
  8. Confira os detalhes do plano de restauração e clique em Criar plano.

Ver um plano de restauração

É possível visualizar um plano de restauração e os detalhes dele usando a gcloud CLI ou o console do Google Cloud.

gcloud

Para listar todos os planos de restauração no projeto e no local, execute este comando:

gcloud beta container backup-restore restore-plans list \
    --project=PROJECT_ID \
    --location=LOCATION

Somente para comandos list, é possível fornecer - como o valor de qualquer parâmetro, exceto PROJECT_ID. O valor - atua como um caractere curinga. Se você não especificar uma opção de linha de comando ou definir uma property, o valor - será o padrão para qualquer parâmetro.

Para ver a lista completa de opções, consulte a documentação do gcloud beta container backup-restore restore-plans list.

Para ver os detalhes de um plano de restauração, execute o seguinte comando:

gcloud beta container backup-restore restore-plans describe RESTORE_PLAN \
     --project=PROJECT_ID \
     --location=LOCATION

Console

Use as instruções a seguir para ver um plano de restauração e os detalhes dele no console do Google Cloud:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. No menu de navegação, clique em Backup para o GKE.

  3. Clique na guia Restaurar planos.

  4. Expanda o plano de backup e clique no nome do plano de restauração.

  5. Clique na guia Detalhes para ver os detalhes.

Atualizar um plano de restauração

Atualize um plano de restauração e os detalhes dele usando a CLI gcloud.

gcloud

Para atualizar um plano de restauração, por exemplo, adicionando uma nova descrição, execute o seguinte comando:

gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --description=DESCRIPTION

Para ver a lista completa de opções, consulte a documentação do gcloud beta container backup-restore restore-plans update.

Console

Use as instruções a seguir para atualizar um plano de restauração no console do Google Cloud:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. No menu de navegação, clique em Backup para o GKE.

  3. Clique na guia Restaurar planos.

  4. Clique no nome do plano de restauração.

  5. Clique na guia Detalhes.

  6. Clique em Editar para editar uma seção do plano e clique em Salvar alterações.

Excluir um plano de restauração

É possível excluir um plano de restauração usando a CLI gcloud ou o Console do Google Cloud. A exclusão de um plano de restauração também exclui os planos filhos.

gcloud

Para excluir um plano de restauração, execute o seguinte comando:

gcloud beta container backup-restore restore-plans delete RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION

Para ver a lista completa de opções, consulte a documentação do gcloud beta container backup-restore restore-plans delete.

Console

Use as instruções a seguir para excluir um plano de restauração no console do Google Cloud:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. No menu de navegação, clique em Backup para o GKE.

  3. Clique na guia Restaurar planos.

  4. Expanda o cluster e clique no nome do plano.

  5. Clique em Excluir plano.

  6. Digite o nome do plano de restauração e clique em Excluir plano de restauração na caixa de diálogo de confirmação.

A seguir