Nesta página, descrevemos como fazer modificações em recursos do Kubernetes durante o processo de restauração.
Visão geral
Há vários motivos para modificar recursos do Kubernetes como parte do processo de restauração. Por exemplo:
Talvez você precise provisionar PVCs usando um provisionador de armazenamento diferente (por exemplo, migrar do driver na árvore do Kubernetes para o driver CSI).
Talvez você precise restaurar um namespace com um nome diferente.
Talvez você precise alterar uma contagem de réplicas em uma implantação ou StatefulSet.
Para fazer isso, o Backup para GKE fornece um mecanismo chamado de regras de substituição, que podem ser definidas como parte de um RestorePlan
.
Uma regra de substituição é um conjunto de critérios correspondentes especificados com um valor de campo de substituição. É possível usar regras de substituição no processo de restauração da seguinte forma:
Primeiro, o Backup para GKE calcula o conjunto de recursos a serem restaurados, com base nos parâmetros de escopo na configuração de restauração (por exemplo: namespaces, grupos/tipos etc.)
O Backup para GKE avalia cada recurso selecionado para restauração com a lista ordenada de regras de substituição. Se uma regra corresponder ao recurso, o recurso será atualizado com o valor do campo substituído. É feita a correspondência entre todos os recursos e todas as regras, e é possível que o mesmo recurso tenha várias substituições realizadas contra ele.
Depois que todas as regras são avaliadas, o Backup para GKE cria o conjunto resultante de recursos no cluster de destino.
Parâmetros da regra de substituição
Para definir uma regra de substituição, forneça os seguintes parâmetros:
Parâmetro | Obrigatório | Descrição |
---|---|---|
targetNamespaces | opcional |
Essa é uma lista de namespaces. Para que um recurso corresponda a essa regra, ele precisa ser um recurso com namespace e ter um dos namespaces fornecidos:
|
targetGroupKinds | opcional |
Essa é uma lista de tuplas de grupo/tipo de recurso do Kubernetes:
|
targetJsonPath | obrigatório | Essa é uma expressão JSONPath correspondente a recursos. Essa regra não apenas corresponde ao recurso, mas também a um atributo específico no recurso. |
originalValuePattern | opcional | Essa é uma expressão regular correspondente ao valor atual do atributo. Se não for fornecido, o atributo será sempre correspondente. |
newValue | obrigatório | Esse é o novo valor a ser usado para o valor do atributo correspondente. |
Para saber mais sobre como definir regras de substituição no console do Google Cloud, consulte Planejar um conjunto de restaurações.
Para definir regras de substituição pela CLI gcloud, crie um arquivo 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 a seguir são fornecidos no formato YAML usado pela CLI gcloud.
Alterar StorageClass
Neste exemplo, alteramos o 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 namespace
Neste exemplo, clonamos um namespace da versão Alfa para a Beta, criando um novo namespace "beta" e restaurando todos os recursos de "alpha" para o novo namespace "beta". Observe que este exemplo requer duas regras de substituição: uma para o próprio namespace e uma para os recursos contidos nele.
substitutionRules:
- targetNamespaces:
- ''
targetGroupKinds:
- resourceGroup: ''
resourceKind: Namespace
targetJsonPath: "{.metadata.name}"
originalValuePattern: alpha
newValue: beta
- targetNamespaces:
- alpha
targetJsonPath: "{.metadata.namespace}"
originalValuePattern: alpha
newValue: beta
Alterar o StorageClass e a contagem de réplicas em um namespace clonado
Neste exemplo, clonamos um namespace e aplicamos um conjunto de alterações aos recursos do novo namespace:
Altere o StorageClass em PVCs de
standard
parapremium-rwo
Altere a contagem de réplicas em implantaçõ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'