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'