Modifica recursos durante el restablecimiento (obsoleto)


En esta página, se describe cómo realizar modificaciones en los recursos de Kubernetes durante el proceso de restablecimiento.

Descripción general

Hay varias razones por las que tal vez quieras modificar los recursos de Kubernetes como parte del proceso de restablecimiento. Por ejemplo:

  • Recomendamos aprovisionar PVC con un aprovisionador de almacenamiento diferente (por ejemplo, pasar del controlador de árbol de Kubernetes al controlador de CSI).

  • Es posible que quieras restablecer un espacio de nombres con un nombre diferente.

  • Te recomendamos cambiar un recuento de réplicas en una implementación o un StatefulSet.

La copia de seguridad para GKE proporciona un mecanismo llamado reglas de sustitución que, de manera opcional, puedes definir como parte de RestorePlan.

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

  1. En primer lugar, la copia de seguridad de GKE calcula el conjunto de recursos que se deben restablecer, en función de los parámetros de permiso en la configuración de restablecimiento (por ejemplo, espacios de nombres, grupos o tipos, etc.).

  2. Copia de seguridad para GKE evalúa cada recurso seleccionado y restablecer con 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 el mismo recurso tenga varias sustituciones realizadas en él.

  3. Después de evaluar todas las reglas, las copias de seguridad para GKE crean el conjunto resultante de recursos en el clúster de destino.

Parámetros de regla de sustitución

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

Parámetro Obligatorio Descripción
targetNamespaces columna Esta es 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 dados:
  • Si no se proporciona nada para este parámetro, todos los recursos coincidirán (todos los recursos con espacio de nombres y con permisos de clúster).
  • Si se proporciona una string vacía (""), solo coincidirá con los recursos con alcance de clúster. En la consola de Google Cloud, puedes marcar Excluir recursos con espacio de nombres para configurar la lista en una sola string vacía.
targetGroupKinds columna Esta es una lista de tuplas de categorías y grupos de recursos de Kubernetes:
  • Si no se proporciona nada en este parámetro, todos los recursos coincidirán (sin restricciones según el grupo o tipo).
  • Si se proporcionan uno o más grupos o tipos, los recursos deben coincidir con uno de ellos para que coincida con la regla.
targetJsonPath required Esta es una expresión JSONPath que se compara con los recursos. Ten en cuenta que esta regla no solo coincide con el recurso, sino que también coincide con un atributo específico en el recurso.
originalValuePattern columna Esta es una expresión regular que coincide con el valor actual del atributo. Si no se proporciona, el atributo siempre coincidirá.
newValue required Este es el valor nuevo que se usará para el valor del atributo coincidente.

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

Para definir reglas de sustitución con la gcloud CLI, crea un archivo que contenga un array YAML de substitutionRules y, luego, incluye 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 gcloud CLI.

Cambia StorageClass

En este ejemplo, cambiamos el StorageClass en todos los recursos restablecidos de PersistentVolumeClaim 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, lo que crea un nuevo espacio de nombres "Beta" y restablece todos los recursos de "Alfa" al nuevo espacio de nombres "Beta". Ten en cuenta que este ejemplo requiere dos reglas de sustitución: una para el espacio de nombres en sí y otra para los recursos dentro 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

Cambia el recuento de StorageClass y réplicas en un espacio de nombres clonado

En este ejemplo, clonamos un espacio de nombres y, luego, aplicamos un conjunto de cambios a los recursos en el espacio de nombres nuevo:

  • Cambia el StorageClass en PVC de standard a premium-rwo

  • Cambia el recuento de réplicas en 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'