Modificar recursos durante la restauración (obsoleto)

En esta página se describe cómo modificar los recursos de Kubernetes durante el proceso de restauración.

Información general

Hay varios motivos por los que puede que quieras modificar los recursos de Kubernetes como parte del proceso de restauración. Por ejemplo:

  • Puede que quieras aprovisionar PVCs con otro aprovisionador de almacenamiento (por ejemplo, pasar del controlador integrado de Kubernetes al controlador de CSI).

  • Puede que quieras restaurar un espacio de nombres con otro nombre.

  • Puede que quieras cambiar el número de réplicas de un Deployment o un StatefulSet.

Backup for GKE ofrece un mecanismo para hacerlo llamado reglas de sustitución, que puedes definir de forma opcional como parte de un RestorePlan.

Una regla de sustitución es un conjunto de criterios de coincidencia especificados junto con un valor de campo de sustitución. Puedes usar reglas de sustitución en el proceso de restauración de la siguiente manera:

  1. En primer lugar, Copia de seguridad de GKE calcula el conjunto de recursos que se van a restaurar en función de los parámetros de ámbito de la configuración de restauración (por ejemplo, espacios de nombres, grupos o tipos).

  2. Backup for GKE evalúa cada recurso seleccionado para la restauración en función de la lista ordenada de reglas de sustitución. Si una regla coincide con el recurso, este se actualiza con el valor del campo sustituido. Todos los recursos se comparan con todas las reglas, y es posible que se realicen varias sustituciones en el mismo recurso.

  3. Una vez que se han evaluado todas las reglas, la función de copia de seguridad de GKE crea el conjunto de recursos resultante en el clúster de destino.

Parámetros de las reglas de sustitución

Para definir una regla de sustitución, debe proporcionar los siguientes parámetros:

Parámetro Obligatorio Descripción
targetNamespaces opcional Se trata de una lista de espacios de nombres. Para que un recurso coincida con esta regla, debe ser un recurso con espacio de nombres y tener uno de los espacios de nombres indicados:
  • Si no se proporciona ningún valor para este parámetro, se incluirán todos los recursos (todos los recursos con espacio de nombres y con ámbito de clúster).
  • Si se proporciona una cadena vacía (""), solo se buscarán recursos con ámbito de clúster. En la Google Cloud consola, puedes marcar Excluir recursos con espacio de nombres para definir la lista como una sola cadena vacía.
targetGroupKinds opcional Esta es una lista de tuplas de grupo o tipo de recursos de Kubernetes:
  • Si no se proporciona ningún valor para este parámetro, se incluirán todos los recursos (sin restricciones basadas en el grupo o el tipo).
  • Si se proporciona uno o varios grupos o tipos, los recursos deben coincidir con uno de ellos para que se cumpla la regla.
targetJsonPath obligatorio Es una expresión JSONPath que se compara con los recursos. Tenga en cuenta que esta regla no solo coincide con el recurso, sino también con un atributo específico del recurso.
originalValuePattern opcional Se trata de una expresión regular que se compara con el valor actual del atributo. Si no se proporciona, el atributo siempre coincidirá.
newValue obligatorio Este es el nuevo valor que se debe usar para el valor del atributo coincidente.

Para obtener más información sobre cómo definir reglas de sustitución en la consola Google Cloud , consulta Planificar un conjunto de restauraciones.

Para definir reglas de sustitución con gcloud CLI, cree un archivo que contenga una matriz YAML de substitutionRules e incluya el parámetro --substitution-rules-file= en el comando gcloud beta container backup-restore restore-plans create.

Ejemplos de reglas de sustitución

Los siguientes ejemplos se proporcionan en el formato YAML que usa la CLI de gcloud.

Cambiar StorageClass

En este ejemplo, cambiamos la StorageClass de todos los recursos PersistentVolumeClaim restaurados de standard a premium-rwo:

substitutionRules:
- targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo

Clonar espacio de nombres

En este ejemplo, clonamos un espacio de nombres de alfa a beta. Para ello, creamos un espacio de nombres "beta" y restauramos todos los recursos de "alfa" en el nuevo espacio de nombres "beta". Ten en cuenta que este ejemplo requiere dos reglas de sustitución: una para el propio espacio de nombres y otra para los recursos del espacio de nombres.

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta

Cambiar StorageClass y el número de réplicas en un espacio de nombres clonado

En este ejemplo, clonamos un espacio de nombres y, a continuación, aplicamos una serie de cambios a los recursos del nuevo espacio de nombres:

  • Cambiar el StorageClass de los PVCs de standard a premium-rwo

  • Cambiar el número de réplicas de las implementaciones de 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'