Cette page explique comment modifier des ressources Kubernetes pendant le processus de restauration.
Présentation
Plusieurs raisons peuvent vous pousser à modifier des ressources Kubernetes dans le cadre du processus de restauration. Exemple :
Vous souhaitez provisionner des PVC à l'aide d'un autre approvisionneur de stockage (par exemple, passer du pilote "in-tree" de Kubernetes au pilote CSI).
Vous souhaitez restaurer un espace de noms sous un autre nom.
Vous souhaitez modifier le nombre d'instances répliquées dans une installation exécutée en tant que Deployment ou StatefulSet.
La Sauvegarde pour GKE fournit pour ce faire un mécanisme, appelé règles de substitution, que vous pouvez éventuellement définir dans le cadre d'un RestorePlan
.
Une règle de substitution est un ensemble de critères de correspondance, associés à une valeur de champ de remplacement. Vous pouvez utiliser des règles de substitution dans le processus de restauration comme suit :
Tout d'abord, Sauvegarde pour GKE calcule l'ensemble des ressources à restaurer, en fonction des paramètres de champ d'application figurant dans la configuration de restauration (par exemple, les espaces de noms, les groupes/genres, etc.).
La fonctionnalité Sauvegarde pour GKE évalue chaque ressource sélectionnée pour la restauration, en la soumettant à la liste numérotée des règles de substitution. Si une règle correspond à la ressource, la ressource est mise à jour avec la valeur de champ substituée. Toutes les ressources sont mises en correspondance avec toutes les règles, et une même ressource peut potentiellement se voir appliquer plusieurs substitutions.
Une fois toutes les règles évaluées, Sauvegarde pour GKE crée l'ensemble de ressources résultant dans le cluster cible.
Paramètres des règles de substitution
Pour définir une règle de substitution, vous devez fournir les paramètres suivants :
Paramètre | Obligatoire | Description |
---|---|---|
targetNamespaces | facultatif |
Il s'agit d'une liste d'espaces de noms. Pour qu'une ressource corresponde à cette règle, il doit s'agir d'une ressource associée à un espace de noms, et celui-ci doit correspondre à l'un des espaces de noms donnés :
|
targetGroupKinds | facultatif |
Il s'agit d'une liste des tuples de genre/groupe de ressources Kubernetes :
|
targetJsonPath | obligatoire | Il s'agit d'une expression JSONPath mise en correspondance avec les ressources. Notez que cette règle définit une correspondance non seulement avec la ressource, mais également avec un attribut spécifique de la ressource. |
originalValuePattern | facultatif | Il s'agit d'une expression régulière mise en correspondance avec la valeur actuelle de l'attribut. Si ce paramètre n'est pas spécifié, l'attribut va toujours correspondre. |
newValue | obligatoire | Il s'agit de la nouvelle valeur à utiliser pour la valeur d'attribut mise en correspondance. |
Pour en savoir plus sur la définition des règles de substitution dans la console Google Cloud, consultez la page Planifier un ensemble de restaurations.
Pour définir des règles de substitution via gcloud CLI, créez un fichier contenant un tableau YAML de règles de substitution et incluez le paramètre --substitution-rules-file=
à la commande gcloud beta container backup-restore restore-plans create
.
Exemples de règles de substitution
Les exemples suivants sont fournis au format YAML, utilisé par gcloud CLI.
Modifier la ressource StorageClass
Dans cet exemple, nous modifions la ressource StorageClass de toutes les ressources PersistentVolumeClaim restaurées, en la faisant passer de standard
à premium-rwo
:
substitutionRules:
- targetGroupKinds:
- resourceGroup: ''
resourceKind: PersistentVolumeClaim
targetJsonPath: "{..storageClassName}"
originalValuePattern: standard
newValue: premium-rwo
Cloner un espace de noms
Dans cet exemple, nous clonons un espace de noms de sa version alpha vers sa version bêta : il s'agit de créer un espace de noms "beta" et de restaurer toutes les ressources de la version "alpha" dans le nouvel espace de noms "beta". Notez que cet exemple nécessite deux règles de substitution : une pour l'espace de noms lui-même et une pour les ressources qu'il contient.
substitutionRules:
- targetNamespaces:
- ''
targetGroupKinds:
- resourceGroup: ''
resourceKind: Namespace
targetJsonPath: "{.metadata.name}"
originalValuePattern: alpha
newValue: beta
- targetNamespaces:
- alpha
targetJsonPath: "{.metadata.namespace}"
originalValuePattern: alpha
newValue: beta
Modifier la ressource StorageClass et le nombre d'instances répliquées dans un espace de noms cloné
Dans cet exemple, nous clonons un espace de noms, puis appliquons un ensemble de modifications aux ressources du nouvel espace de noms :
Modifiez la ressource StorageClass sur les PVC de
standard
enpremium-rwo
.Modifiez le nombre d'instances répliquées sur les déploiements de
7
en3
.
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'