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:
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).
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.
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:
|
targetGroupKinds | opcional |
Esta es una lista de tuplas de grupo o tipo de recursos de Kubernetes:
|
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
apremium-rwo
Cambiar el número de réplicas de las implementaciones de
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'