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:
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.).
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.
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:
|
targetGroupKinds | columna |
Esta es una lista de tuplas de categorías y grupos de recursos de Kubernetes:
|
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
apremium-rwo
Cambia el recuento de réplicas en 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'