Questa pagina descrive come apportare modifiche alle risorse Kubernetes durante il processo di ripristino.
Panoramica
Esistono diversi motivi per cui potrebbe essere utile modificare le risorse Kubernetes parte del processo di ripristino. Ad esempio:
Ti consigliamo di eseguire il provisioning dei PVC utilizzando un provisioning storage diverso (ad esempio, passare dal driver in-tree di Kubernetes al driver CSI).
Ti consigliamo di ripristinare uno spazio dei nomi con un nome diverso.
Potrebbe essere utile modificare il conteggio delle repliche in un oggetto Deployment o StatefulSet.
A questo scopo, Backup per GKE offre un meccanismo chiamato regole di sostituzione,
che puoi facoltativamente definire come parte di una RestorePlan
.
Una regola di sostituzione è un insieme di criteri di corrispondenza specificati insieme a valore del campo sostitutivo. Puoi utilizzare le regole di sostituzione nel processo di ripristino come segue:
Innanzitutto, Backup per GKE calcola l'insieme di risorse da ripristinare in base ai parametri di ambito nella configurazione del ripristino (ad esempio, spazi dei nomi, gruppi/tipi e così via).
Backup per GKE valuta ogni risorsa selezionata per il ripristino in base all'elenco ordinato delle regole di sostituzione. Se una regola corrisponde alla risorsa, risorsa viene aggiornata con il valore del campo sostituito. Tutte le risorse sono viene confrontata con tutte le regole e la stessa risorsa potrebbe avere su di esso sono state eseguite più sostituzioni.
Dopo aver valutato tutte le regole, Backup for GKE crea il insieme risultante di risorse nel cluster di destinazione.
Parametri delle regole di sostituzione
Per definire una regola di sostituzione, devi fornire i seguenti parametri:
Parametro | Obbligatorio | Descrizione |
---|---|---|
targetNamespaces | facoltativo |
Questo è un elenco di spazi dei nomi. Affinché una risorsa corrisponda a questa regola, deve essere
una risorsa con spazio dei nomi e avere uno degli spazi dei nomi specificati:
|
targetGroupKinds | facoltativo |
Questo è un elenco di tuple di tipo/gruppo di risorse Kubernetes:
|
targetJsonPath | di provisioning. | Si tratta di un'espressione JSONPath che viene associata alle risorse. Tieni presente che questa regola non corrisponde solo alla risorsa, ma anche a un attributo specifico al suo interno. |
originalValuePattern | facoltativo | Si tratta di un'espressione regolare che viene confrontata con il valore corrente dell'attributo. Se non viene fornito, l'attributo corrisponderà sempre. |
newValue | di provisioning. | Questo è il nuovo valore da utilizzare per il valore dell'attributo corrispondente. |
Per scoprire di più sulla definizione delle regole di sostituzione nella console Google Cloud, consulta Pianificare un insieme di ripristini.
Per definire le regole di sostituzione utilizzando gcloud CLI, crea un file
contenente un array YAML di substitutionRules e include
--substitution-rules-file=
al parametro
gcloud beta container backup-restore restore-plans create
.
Esempi di regole di sostituzione
I seguenti esempi sono forniti nel formato YAML utilizzato con gcloud CLI.
Modifica StorageClass
In questo esempio, modifichiamo la classe di archiviazione in tutte le risorse PersistentVolumeClaim ripristinate da standard
a premium-rwo
:
substitutionRules:
- targetGroupKinds:
- resourceGroup: ''
resourceKind: PersistentVolumeClaim
targetJsonPath: "{..storageClassName}"
originalValuePattern: standard
newValue: premium-rwo
Clona spazio dei nomi
In questo esempio, cloniamo uno spazio dei nomi da alpha a beta, creando un nuovo spazio dei nomi "beta" e ripristinando tutte le risorse da "alpha" nel nuovo spazio dei nomi "beta". Tieni presente che questi esempi richiedono due regole di sostituzione: una per lo spazio dei nomi stesso e una per le risorse all'interno dello spazio dei nomi.
substitutionRules:
- targetNamespaces:
- ''
targetGroupKinds:
- resourceGroup: ''
resourceKind: Namespace
targetJsonPath: "{.metadata.name}"
originalValuePattern: alpha
newValue: beta
- targetNamespaces:
- alpha
targetJsonPath: "{.metadata.namespace}"
originalValuePattern: alpha
newValue: beta
Modificare StorageClass e il numero di repliche in uno spazio dei nomi clonato
In questo esempio, cloniamo uno spazio dei nomi e poi applichiamo un insieme di modifiche alle risorse nel nuovo spazio dei nomi:
Modifica StorageClass sui PVC da
standard
apremium-rwo
Cambia il numero di repliche sui deployment da
7
a3
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'