Modifique recursos durante o restauro (descontinuado)


Esta página descreve como fazer modificações aos recursos do Kubernetes durante o processo de restauro.

Vista geral

Existem vários motivos pelos quais pode querer modificar os recursos do Kubernetes como parte do processo de restauro. Por exemplo:

  • Pode querer aprovisionar PVCs com um aprovisionador de armazenamento diferente (por exemplo, mudar do controlador interno do Kubernetes para o controlador CSI).

  • Pode querer restaurar um espaço de nomes com um nome diferente.

  • Pode querer alterar a quantidade de réplicas numa implementação ou num StatefulSet.

A Cópia de segurança do GKE oferece um mecanismo para o fazer denominado regras de substituição, que pode definir opcionalmente como parte de uma RestorePlan.

Uma regra de substituição é um conjunto de critérios de correspondência especificados juntamente com um valor do campo de substituição. Pode usar regras de substituição no processo de restauro da seguinte forma:

  1. Primeiro, o Backup for GKE calcula o conjunto de recursos a restaurar com base nos parâmetros de âmbito na configuração de restauro (por exemplo: espaços de nomes, grupo/tipos, etc.)

  2. O Backup for GKE avalia cada recurso selecionado para restauro em função da lista ordenada de regras de substituição. Se uma regra corresponder ao recurso, o recurso é atualizado com o valor do campo substituído. Todos os recursos são comparados com todas as regras, e o mesmo recurso pode ter várias substituições realizadas.

  3. Depois de todas as regras terem sido avaliadas, o Backup for GKE cria o conjunto de recursos resultante no cluster de destino.

Parâmetros de regras de substituição

Para definir uma regra de substituição, fornece os seguintes parâmetros:

Parâmetro Obrigatório Descrição
targetNamespaces opcional Esta é uma lista de espaços de nomes. Para que um recurso corresponda a esta regra, tem de ser um recurso com espaço de nomes e ter um dos espaços de nomes indicados:
  • Se não for fornecido nada para este parâmetro, todos os recursos vão corresponder (todos os recursos com espaço de nomes e âmbito de cluster).
  • Se for fornecida uma string vazia (""), só vai corresponder a recursos com âmbito de cluster. Na Google Cloud consola, pode selecionar Excluir recursos com espaço de nomes para definir a lista como uma única string vazia.
targetGroupKinds opcional Esta é uma lista de tuplos de grupo/tipo de recursos do Kubernetes:
  • Se não for fornecido nada para este parâmetro, todos os recursos vão corresponder (sem restrições com base no grupo/tipo).
  • Se for fornecido um ou mais grupos/tipos, os recursos têm de corresponder a um deles para corresponderem à regra.
targetJsonPath obrigatório Esta é uma expressão JSONPath que é comparada com os recursos. Tenha em atenção que esta regra não só corresponde ao recurso, como também corresponde a um atributo específico no recurso.
originalValuePattern opcional Esta é uma expressão regular que é comparada com o valor atual do atributo. Se não for fornecido, o atributo vai corresponder sempre.
newValue obrigatório Este é o novo valor a usar para o valor do atributo correspondente.

Para saber como definir regras de substituição na Google Cloud consola, consulte o artigo Planeie um conjunto de restauros.

Para definir regras de substituição através da CLI gcloud, crie um ficheiro que contenha uma matriz YAML de substitutionRules e inclua o parâmetro --substitution-rules-file= no comando gcloud beta container backup-restore restore-plans create.

Exemplos de regras de substituição

Os exemplos seguintes são fornecidos no formato YAML usado pela CLI gcloud.

Altere a StorageClass

Neste exemplo, alteramos a StorageClass em todos os recursos PersistentVolumeClaim restaurados de standard para premium-rwo:

substitutionRules:
- targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo

Clonar espaço de nomes

Neste exemplo, clonamos um espaço de nomes de alfa para beta, criando um novo espaço de nomes "beta" e restaurando todos os recursos de "alfa" para o novo espaço de nomes "beta". Tenha em atenção que este exemplo requer duas regras de substituição: uma para o próprio espaço de nomes e outra para os recursos no espaço de nomes.

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta

Altere a StorageClass e a contagem de réplicas num espaço de nomes clonado

Neste exemplo, clonamos um espaço de nomes e, em seguida, aplicamos um conjunto de alterações aos recursos no novo espaço de nomes:

  • Altere a StorageClass nos PVCs de standard para premium-rwo

  • Alterar a quantidade de réplicas nas implementações de 7 para 3

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - beta
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo
- targetNamespaces:
  - beta
  targetGroupKinds:
  - resourceGroup: apps
    resourceKind: Deployment
  targetJsonPath: "{$.spec.replicas}"
  originalValuePattern: '7'
  newValue: '3'