Asignación de una receta

Puede asignar una receta a las operaciones de copia de seguridad y restauración.

  1. Asigne una receta con un CR de asignación de política de copia de seguridad para las operaciones de copia de seguridad y restauración de la forma siguiente:
    Asignar una receta para operaciones de copia de seguridad
    Puede asignar una receta a una aplicación o aplicaciones especificando la receta en el CR PolicyAssignment para asignarla a una o más aplicaciones. Puede especificar una única receta en un CR PolicyAssignment .
    Para asignar una receta a una aplicación, puede arreglar el CR PolicyAssignment utilizando el ejemplo siguiente:
    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 es el nombre tal como se especifica en el CR PolicyAssignment .
    • RECIPE_NAME es el nombre de la receta tal como se especifica en el CR de receta.
    • RECIPE_NAMESPACE es el espacio de nombres donde se encuentra el CR de receta.
    Asignar una receta para las operaciones de restauración al restaurar al espacio de nombres original
    Durante una operación de restauración, se debe iniciar una receta con la siguiente prioridad:
    • Si hay un CR de receta con el mismo nombre y en el mismo espacio de nombres que el CR de receta que se utilizó durante la operación de copia de seguridad, debe tener prioridad. Puede ser útil en situaciones en las que desee especificar un flujo de trabajo diferente o enganches diferentes durante la restauración.
    • Si no hay ningún CR de receta con el mismo nombre y en el mismo espacio de nombres, se debe ejecutar la receta que se utilizó durante la operación de copia de seguridad. Esta información se almacena como parte de los metadatos de copia de seguridad.
    Asignar una receta para las operaciones de restauración al restaurar a un espacio de nombres diferente
    Si está restaurando en un espacio de nombres alternativo, los espacios de nombres especificados en un enganche no se pueden ejecutar correctamente ya que hacen referencia al espacio de nombres original. Si desea que los enganches se ejecuten en el espacio de nombres alternativo, cambie el CR de receta tal como se menciona en Asignar una receta para las operaciones de restauración al restaurar al espacio de nombres original. De modo que los espacios de nombres de enganche hacen referencia al espacio de nombres alternativo.
  2. Asigne un CR de receta con un CR de aplicación como se indica a continuación:
    Cómo trabajar con CR de aplicación para un único espacio de nombres
    Para las aplicaciones que solo tienen un único espacio de nombres, no hay cambios necesarios en el CR de aplicación para dar soporte a una receta. La receta está asociada con la aplicación, en este caso con el CR PoliyAssignment , tal como se define en Asignar una receta para operaciones de copia de seguridad.
    Cómo trabajar con CR de aplicación para aplicaciones que abarcan varios espacios de nombres
    Si tiene una aplicación que abarca varios espacios de nombres y desea utilizar una receta para la aplicación, debe especificar todos los espacios de nombres incluidos en la aplicación que está en el CR de aplicación.
    • Utilización de sustituciones de variables:
      • Las variables se pueden utilizar para permitir que una única receta se utilice en varias aplicaciones similares. Las variables se definen en el CR de aplicación y se puede definir cualquier número de variables.
        - variables:
           - name: <variable name>
               value: <variable value>
      • Las variables a las que se puede hacer referencia en el CR de receta.
        ${<variable name>}

        Los caracteres válidos para las variables son: a-zA-Z0-9_-

      • Cada grupo se expone automáticamente a las variables siguientes.
        • Espacios de nombres efectivos
          Estos se pueden utilizar dentro de la receta por estos patrones.
          ${GROUP.<groupname>.namespaces} - effective namespaces of group
          ${GROUP.<groupname>.namespace}  - effective namespace of group - single namespace enforced, (runtime) validation error otherwise
      • Las variables solo se pueden utilizar para los campos siguientes:
        • Campo de espacio de nombres de enganches.
        • Dentro de mandatos de ganchos exec.
      Sugerencia: Al crear un CR de receta, coloque el CR de receta en ibm-spectrum-fusion-ns (u otro espacio de nombres común). Durante una operación de restauración, es posible que tenga que cambiar la receta y no desee que la CR de receta esté en el espacio de nombres de la aplicación, ya que es posible que este espacio de nombres no esté disponible durante la restauración.
      Por ejemplo:
      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