Affectation d'une recette

Vous pouvez affecter une recette à vos opérations de sauvegarde et de restauration.

  1. Affectez une recette avec une ressource personnalisée d'affectation de stratégie de sauvegarde pour les opérations de sauvegarde et de restauration comme suit:
    Affecter une recette pour les opérations de sauvegarde
    Vous pouvez affecter une recette à une ou plusieurs applications en spécifiant la recette dans la ressource personnalisée PolicyAssignment pour l'affecter à une ou plusieurs applications. Vous pouvez spécifier une seule recette dans une ressource personnalisée PolicyAssignment .
    Pour affecter une recette à une application, vous pouvez corriger la ressource personnalisée PolicyAssignment à l'aide de l'exemple suivant:
    oc -n ibm-spectrum-fusion-ns patch policyassignment POLICY-ASSIGNMENT-NAME --type merge -p '{"spec":{"recipe":{"name":"RECIPE_NAME", "namespace":"RECIPE_NAMESPACE", "apiVersion":"spp-data-protection.isf.ibm.com/v1alpha1"}}}'
    • POLICY_ASSIGNMENT-NAME est le nom spécifié dans la ressource personnalisée PolicyAssignment .
    • RECIPE_NAME est le nom de la recette tel qu'il est spécifié dans la ressource personnalisée de la recette.
    • RECIPE_NAMESPACE est l'espace de nom dans lequel se trouve la ressource personnalisée Recipe.
    Affecter une recette pour les opérations de restauration lors de la restauration dans l'espace de nom d'origine
    Lors d'une opération de restauration, une recette doit être démarrée avec la priorité suivante:
    • S'il existe une ressource personnalisée de recette portant le même nom et se trouvant dans le même espace de nom que la ressource personnalisée de recette utilisée lors de l'opération de sauvegarde, elle doit être prioritaire. Cela peut être utile dans les situations où vous souhaitez spécifier un flux de travaux différent ou des points d'ancrage différents lors de la restauration.
    • S'il n'existe pas de ressource personnalisée de type Recette portant le même nom et se trouvant dans le même espace de nom, la recette utilisée lors de l'opération de sauvegarde doit être exécutée. Ces informations sont stockées dans le cadre des métadonnées de sauvegarde.
    Affectation d'une recette pour les opérations de restauration lors de la restauration dans un autre espace de nom
    Si vous effectuez une restauration dans un autre espace de nom, tous les espaces de nom spécifiés dans un point d'ancrage ne peuvent pas être exécutés correctement car ils font référence à l'espace de nom d'origine. Si vous souhaitez que les points d'ancrage s'exécutent dans l'autre espace de nom, modifiez la ressource personnalisée de la recette comme indiqué dans Affecter une recette pour les opérations de restauration lors de la restauration dans l'espace de nom d'origine. Ainsi, tous les espaces de nom de point d'ancrage font référence à l'espace de nom alternatif.
  2. Affectez une ressource personnalisée de recette avec une ressource personnalisée d'application comme suit:
    Utilisation de ressources personnalisées d'application pour un espace de nom unique
    Pour les applications qui n'ont qu'un seul espace de nom, aucune modification n'est requise dans la ressource personnalisée de l'application pour prendre en charge une recette. La recette est associée à l'application, dans ce cas avec la ressource personnalisée PoliyAssignment , comme défini dans la section Affecter une recette pour les opérations de sauvegarde.
    Utilisation des ressources personnalisées d'application pour les applications qui s'étendent sur plusieurs espaces de nom
    Si vous disposez d'une application qui s'étend sur plusieurs espaces de nom et que vous souhaitez utiliser une recette pour l'application, vous devez spécifier tous les espaces de nom inclus dans l'application qui se trouve dans la ressource personnalisée de l'application.
    • Utilisation de substitutions de variable:
      • Les variables peuvent être utilisées pour permettre l'utilisation d'une seule recette dans plusieurs applications similaires. Les variables sont définies dans la ressource personnalisée de l'application et n'importe quel nombre de variables peut être défini.
        - variables:
           - name: <variable name>
               value: <variable value>
      • Variables pouvant être référencées dans la ressource personnalisée de la recette.
        ${<variable name>}

        Les caractères valides pour les variables sont: a-zA-Z0-9_-

      • Chaque groupe expose automatiquement les variables suivantes.
        • Espaces de nom effectifs
          Ceux-ci peuvent être utilisés dans la recette par ces modèles.
          ${GROUP.<groupname>.namespaces} - effective namespaces of group
          ${GROUP.<groupname>.namespace}  - effective namespace of group - single namespace enforced, (runtime) validation error otherwise
      • Les variables peuvent uniquement être utilisées pour les zones suivantes:
        • Zone d'espace de nom des points d'ancrage.
        • Dans les commandes des points d'ancrage exec.
      Astuce: Lors de la création d'une ressource personnalisée de recette, placez la ressource personnalisée de recette dans le ibm-spectrum-fusion-ns (ou dans un autre espace de nom commun). Lors d'une opération de restauration, vous devrez peut-être modifier la recette et ne voulez pas que la ressource personnalisée de la recette se trouve dans l'espace de nom de l'application, car cet espace de nom risque de ne pas être disponible lors de la restauration.
      Exemple :
      apiVersion: application.isf.ibm.com/v1aplha1
      kind: Application
      metadata:
        name: wp-app1
        namespace: ibm-spectrum-fusion-ns
      spec:
        appType: wordpress
        includedNamespaces: 
          - wordpress
        variables: 
        - name: WORDPRESS_NAMESPACE
          value: wordpress
      ---
      
      apiVersion: spp-data-protection.isf.ibm.com/v1alpha1
      kind: Recipe
      metadata:
        name: wp-recipe
        namespace: wordpress
      spec:
        appType: wordpress
        groups:
          - name: mysql_data
            type: volume
            labelSelector: app=wordpress
          - name: frontend
            type: resource
            labelSelector: tier in (frontend),app=wordpress
          - name: backend
            type: resource
            labelSelector: tier notin (frontend)
        hooks:
        - name: demoexechook
          type: exec
          namespace: ${WORDPRESS_NAMESPACE}
          nameSelector: wordpress-mysql.*
          ops:
          - name: pre
            command: >
              ["/bin/bash", "-c", "echo 'This is pretest' > /tmp/cfg_map_pre.txt"]
            container: mysql
          - name: post
            command: >
              ["/bin/bash", "-c", "echo 'This is posttest' > /tmp/cfg_map_post.txt"]
            container: mysql
        - name: demoscalehook
          type: scale
          namespace: ${WORDPRESS_NAMESPACE}
          selectResource: statefulset
          nameSelector: wordpress$
        workflows:
        - name: backup
          sequence:
          - hook: demoscalehook/down
          - group: frontend
          - group: backend
          - hook: demoexechook/pre
          - group: mysql_data
          - hook: demoexechook/post
          - hook: demoscalehook/up
        - name: restore
          sequence:
          - group: mysql_data
          - group: backend
          - group: frontend