Modificare le risorse durante il ripristino (non più supportato)


Questa pagina descrive come apportare modifiche alle risorse Kubernetes durante il processo di ripristino.

Panoramica

Esistono diversi motivi per cui potresti voler modificare le risorse Kubernetes nell'ambito della procedura di ripristino. Ad esempio:

  • Potresti voler eseguire il provisioning dei PVC utilizzando un altro provisioner di archiviazione (ad esempio, passare dal driver in-tree di Kubernetes al driver CSI).

  • Potresti voler ripristinare uno spazio dei nomi con un nome diverso.

  • Potresti voler modificare il conteggio delle repliche in un deployment o in un StatefulSet.

Backup per GKE fornisce un meccanismo per farlo chiamato regole di sostituzione, che puoi definire facoltativamente nell'ambito di un RestorePlan.

Una regola di sostituzione è un insieme di criteri di corrispondenza specificati insieme a un valore del campo di sostituzione. Puoi utilizzare le regole di sostituzione nella procedura di ripristino nel seguente modo:

  1. Innanzitutto, Backup per GKE calcola l'insieme di risorse da ripristinare in base ai parametri di ambito nella configurazione di ripristino (ad esempio, spazi dei nomi, gruppi/tipi e così via).

  2. Backup per GKE valuta ogni risorsa selezionata per il ripristino in base all'elenco ordinato di regole di sostituzione. Se una regola corrisponde alla risorsa, la risorsa viene aggiornata con il valore del campo sostituito. Tutte le risorse vengono confrontate con tutte le regole e la stessa risorsa potrebbe potenzialmente subire più sostituzioni.

  3. Dopo aver valutato tutte le regole, Backup per GKE crea il set di risorse risultante nel cluster di destinazione.

Parametri delle regole di sostituzione

Per definire una regola di sostituzione, fornisci i seguenti parametri:

Parametro Obbligatorio Descrizione
targetNamespaces facoltativo Si tratta di 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 indicati:
  • Se non viene fornito nulla per questo parametro, tutte le risorse corrisponderanno (tutte le risorse con spazio dei nomi e con ambito cluster).
  • Se viene fornita una stringa vuota (""), verranno trovate corrispondenze solo con le risorse con ambito cluster. Nella console Google Cloud , puoi selezionare Escludi risorse con spazio dei nomi per impostare l'elenco su una singola stringa vuota.
targetGroupKinds facoltativo Questo è un elenco di tuple di gruppo/tipo di risorse Kubernetes:
  • Se non viene fornito nulla per questo parametro, tutte le risorse corrisponderanno (nessuna restrizione in base al gruppo/tipo).
  • Se vengono forniti uno o più gruppi/tipi, le risorse devono corrispondere a uno di questi per corrispondere alla regola.
targetJsonPath di provisioning. Si tratta di un'espressione JSONPath che viene confrontata con le risorse. Tieni presente che questa regola non corrisponde solo alla risorsa, ma anche a un attributo specifico della risorsa.
originalValuePattern facoltativo Si tratta di un'espressione regolare che viene confrontata con il valore attuale 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 includi il parametro --substitution-rules-file= nel comando gcloud beta container backup-restore restore-plans create.

Esempi di regole di sostituzione

Gli esempi seguenti sono forniti nel formato YAML utilizzato da gcloud CLI.

Modifica StorageClass

In questo esempio, modifichiamo StorageClass 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 questo esempio richiede 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 conteggio delle repliche in uno spazio dei nomi clonato

In questo esempio, cloniamo uno spazio dei nomi e poi applichiamo una serie di modifiche alle risorse nel nuovo spazio dei nomi:

  • Modifica StorageClass sugli oggetti PVC da standard a premium-rwo

  • Modifica il numero di repliche nei deployment da 7 a 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'