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:
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.)
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.
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:
|
targetGroupKinds | opcional |
Esta é uma lista de tuplos de grupo/tipo de recursos do Kubernetes:
|
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
parapremium-rwo
Alterar a quantidade de réplicas nas implementações de
7
para3
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'