# Create Backup Plans

## Create Backup Plans

1. Log in to the T4K **Management Console**.
2. From the left panel menu, click **Backup & Recovery**.
3. Select one of your clusters from the left panel menu, which displays a dropdown menu for you to select from.

   <figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/QspcRgO0Xnqe4zEshlHt/createbackupplan%20(1).png" alt="" width="563"><figcaption><p>Backup Plan Listing</p></figcaption></figure>
4. From this dropdown menu, select **Backup Plans**.
5. From the page displayed, select **Create New**.
6. Choose from the three types of backup plan that may be created:
   * **Application**
   * **Single-namespace**
   * **Multi-namespace**
7. Follow the separate instruction sets for the backup plan types below.

## Backup Plan - Single Namespace

1. The **CREATE NEW BACKUPPLAN Single Namespace** window \*\*\*\* displayed is arranged into two sections. Left section displays the current step. The right section opens to configuration section which is the first step to create a plan.

   <figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/Kz0o2e34IveaHBVIDnMj/createbackupplanform.png" alt="" width="563"><figcaption><p>Create Backup Plan Configuration</p></figcaption></figure>
2. **Namespace -** Choose from the dropdown menu.
3. **Name -** Type a meaningful name for your plan.
4. **Target** - (Mandatory) Target is a storage location where backup/ snapshot will be stored. Select a target from the dropdown.
5. **Encryption Secret** - Choose an encryption secret from the dropdown menu. Which will encrypt backup/snapshot.
6. **Snapshot Policies -** This opens snapshot policies options which schedules the snapshot based on the policy selected.
7. **Snapshot Scheduling Policy -** This dropdown list all the scheduling policies to select from.
8. **Snapshot Retention Policy -** This dropdown list all the retention policies to select from.

<figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/9IQqzUqAIzzpefK7u68b/createbackupplansnapshotpolicy.png" alt="" width="563"><figcaption><p>Create Backup Plan Snapshot Policies</p></figcaption></figure>

9. **Backup Policies -** This opens backup policies options.

<figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/nomquYq2IrOJbz7WqnIM/backuppolicy.png" alt="" width="563"><figcaption><p>Create Backup Plan Backup Policies</p></figcaption></figure>

10. **Scheduling Policy** : **Full Backup** this schedules the backup based on the policy selected, when this plan is part of full backup.
11. **Scheduling Policy : Incremental Backup** this schedules the backup based on the policy selected, when this plan is part of an incremental backup process.
12. **Retention Policy** A retention policy specifies the number of backups to retain for different intervals.Select a retention Policy from the dropdown.

<figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/sWJKXoDAzJ23IV0QfCbx/backupplanadvancednew.png" alt="" width="563"><figcaption><p>Create Backup Plan Advanced Section</p></figcaption></figure>

13. **Retain Helm Apps** - Enable this toggle to retain Helm apps during restore operations for backup.
14. **Skip Image Backup** - This toggle is to skip image Backup as it excludes the backup of container image.
15. **Add Hooks -** To configure the hook by following [**Add Hooks**](https://docs.trilio.io/kubernetes/getting-started/using-trilio/getting-started-with-management-console/navigating-intro/backup-and-recovery/backupplans/create-backup-plans#create-backup-plan-hook-configuration)
16. Click **Next**.
17. The **Step 2: Resource Selector** tab is now displayed. To **include resources**, click **Add Resources**. Included resources will appear under the **Included Resources** list.

    <figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/vEZufCYjEu4yIST4BU46/backupplanresourceselector.png" alt="" width="563"><figcaption><p>Create Backup Plan Resource Selector</p></figcaption></figure>
18. To **exclude resources**, click **Add Resources**. Excluded resources will appear under the **Excluded Resources** list.
19. Click **Next**.

    <figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/Xbpe5NTIUkJ36gCW8s19/createbackupplansnsfinalstep.png" alt="" width="563"><figcaption><p>Create Backup Plan Continuous Restore</p></figcaption></figure>
20. **Step 3: Continuous Restore** (Optional)\
    **Remote TVK Instance** Select a remote TVK instance from the dropdown menu
21. **Continuous Restore Policy** is a dropdown that list all the Continuous Restore Policies, And also provide an option to create a new Continuous Restore Policy by clicking new Continuous Restore Policy link provided at the bottom of the dropdown .
22. **Add new transform**&#x20;
23. **Skip & Create** if Continuous Restore is not required, click on this to skip the step.
24. Click **Create** to create a backup plan with **Continuous Restore.**
25. **The Step 4: Final Step Status Log**

    <figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/s2ss5TSGI8Ftx3Kcrx1D/statuslogpage.png" alt="" width="563"><figcaption><p>Status Log</p></figcaption></figure>

## Backup Plan - Application

1. The first step for **Application Backup Plan** is similar to **Single Namespace Backup Plan.**
2. The **Step 2: Component Details** Step is now displayed. There are three optional sub-tabs to choose from:

{% tabs %}
{% tab title="Operator" %}

* Click **Add Operator** Then type your operator name or ID into the **Operator** text field.\
  ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/u10Wj3WypoAihE1TZSm7/operator1st.png)
* After clicking **Add Operator** type your operator name or ID into the **Operator** text field, And click on Apply.\
  ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/A8FSee7gGnqj02PaGFVR/operator2nd.png)
* After clicking **Apply** the operator will be added. Here there are multiple actions.\\
  1. Click **Add Another** to include an operator.
  2. Use the **Edit icon** to modify the new operator.
  3. Click the **X** icon to remove the operator.
  4. Select **Add Operator Resources** to include resources.
  5. Click\
     ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/G27wFbUIApAqXoobGnU5/operatorfinal.png)
     {% endtab %}

{% tab title="Helm Release" %}

* Click **Add Helm Release**.\
  ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/elJoOSbxzZxT52n6Qfp4/helm.png)
* Then **Select a Helm release** from the dropdown.\
  ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/2LcA3eg6v1OYi7hW8bSF/52.png)
* Click **Apply**
  {% endtab %}

{% tab title="Custom" %}

* Click on **Custom** tab.\
  ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/tQAxwuUsXZyd8vAfZzCb/custom.png)
* To **include resources**, click **Add Resources**. Included resources will appear under the **Included Resources** list.
* To **exclude resources**, click **Add Resources**. Excluded resources will appear under the **Excluded Resources** list.
  {% endtab %}
  {% endtabs %}

3. The **Step 3: Continuous Restore Step** is now displayed. This is same as Backup Plan - Single Namespace.
4. **The Step 4: Final Step Status Log** is same as Single Namespace status log.\\

## Backup Plan - Multi-namespace

The **CREATE MULTI-NAMESPACE BACKUPPLAN** window \*\*\*\* displayed is arranged into two main sections left one shows the steps/progress and right one shows **Global Configuration**. First to display is **Step 1: Global Configuration.**\
\
Provide parameters like:

<div align="left"><figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/xZXPlUfdQI3Y04fNFS5f/multinsglobalconfig.png" alt="" width="563"><figcaption><p>Create Multi-Namespace Backup Plan</p></figcaption></figure></div>

1. **Target** (Mandatory) Target is a storage location where backup/ snapshot will be stored. Select a target from the dropdown.
2. **Encryption Secret** - (Optional) Choose an encryption secret from the dropdown menu. Which will encrypt backup/snapshot.
3. Click **Next**.
4. **Step 2: Resource Selection** resources can be added to the **Included Resources** by clicking **Add Resources.**&#x61;nd/or the **Excluded Resources** list by clicking **Add Resources**. In this example, none are added.\
   ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/ftWrNrJ7AjmjCUIXTnB5/resource.png)
5. Resources can be excluded form the **Excluded Resources** list by clicking **Add Resources**.
6. Click **Next**
7. **Step 3: Namespace Configuration By Namespace** is the first sub-tab of the **Step 3: Namespace Configuration**. On this sub-tab, selected namespace are listed. To add namespace-specific configuration like **hooks**, **exclude resources** and **include resources**, click **Add Configuration** beside the relevant namespace. There is also an option to **Add Namespace** if you wish to do that. This step is optional, so if namespace specific-configurations are not specified, global level configurations will be applied.\
   ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/FQKJiqWPYo6llYXWy2T7/namespaceconfig.png)
8. **Step 3: Namespace Configuration By Namespace Selector** is the second sub-tab of this step. On this sub-tab, you can select **Add Namespace Selector**. This is \*\*\*\* a combination of matching labels and matching expressions and T4K will select the namespaces that match the selected label sets dynamically. This step is optional, so if namespace specific-configurations are not specified, global level configurations will be applied.\
   ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/MEkH3nan7aitq3oAuYR9/resourceSelector.png)
9. Click next.
10. **Step 4: Continuous Restore** (optional) this have two dropdowns first **Remote TVK Instance** which is a dropdown to select the TVK instance. and second **Continuous Restore Policy** dropdown that list all the Continuous Restore Policies. And also provides option to create a new continuous Restore Policy by clicking new continuous Restore Policy link provided at the bottom of the dropdown.

<figure><img src="https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/FRj1q2qhS5CDGAuGRwyy/cont.png" alt="" width="375"><figcaption><p>Create Backup Plan Continuous Restore</p></figcaption></figure>

11. **Skip & Create** if Continuous Restore is not required click on this to skip the step.
12. Click **Create** to create a backup plan with **Continuous Restore.**
13. You are now prompted to name your backup plan. Type a meaningful name into the free text field.\
    ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/FAfiCj5JAzxBhrZ25Xag/mnsfinal.png)
14. Select **Done**.
15. **Step 5: Status Log** is same as Single Namespace status log.

## Create Backup Plan - Hook Configuration

This section explains how to add hooks to a backup plan.\
\
In **Create Backup Plan Step 1: Backup Plan Configuration**, click on the **Advanced** section and then click **Add Hook**.\
![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/Bq2D8yIRJtRWVUYiwZPb/backupplan-add-hook.png)\
1\. **Select a Hook** from the dropdown menu or [create-hook](https://docs.trilio.io/kubernetes/getting-started/using-trilio/getting-started-with-management-console/navigating-intro/backup-and-recovery/hooks/create-hook "mention") using the link provided at the very bottom of the dropdown. Because the **Pre** section in a hook is not mandatory, users are allowed to create hooks without it. However, for Backup and Snapshot operations, a **Pre** section is mandatory. As a result, hooks that do not include a **Pre** section cannot be selected. Additionally, when creating hooks through the Backup Plan flow, a **Pre** section is required.

![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/y4MC5Z2oe3ON0U3FtxS4/addhookfinal.png)

\
2\. TVK provides the capability for selecting the containers within the pods selected by the pod selector.

* Click on **Add label Set** to add a Label Set.
* There will be two sub-tabs: **Match Labels** and **Match Expressions**.

  \
  \
  ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/WKmy2BdJy3CYmKgx5inU/addlabel.png)\\
* **Match Labels:**
  * Select Labels from the dropdown and click **Apply.**
  * The added labels will be listed under the **Added Labels** section.
  * Click **Add** to add label set to the hook.
* Match Expressions:
  * Match expressions include key-operator-value pairs where the value is optional based on the selected operator.\
    ![](https://content.gitbook.com/content/9sDjF5HJP1bf8TtLcgkk/blobs/KfaKKntsC4xbwopFt1xB/addlabelset.png)
  * Click on **Match Expression** sub tab.
  * Select a Key from the **Keys** dropdown.
  * Select an operator from **In**, **Not In**, **Exists**, or **Does Not Exist**.
  * Select a value (only if **In** or **Not In** is selected in the previous step).
  * Click **Apply** to add this to **ADDED LABELS** list.
  * Click **ADD**

3\. **Pod Selection Using Regex:**

* The pod selection can be done by matching a regex Or provide a **Regex.**

4. **Container Name Matching:**

* The expression provided in this field is used to match container names within the pods selected by the pod selector.

Once the user configures the hook, they’re redirected back to the Hooks configuration page, where the newly added hook configuration is visible.

<div><figure><img src="https://1939071994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sDjF5HJP1bf8TtLcgkk%2Fuploads%2Fw7HmV8ICfZ8fQMIJLipu%2Fadded-hook.png?alt=media&#x26;token=883971f7-a9d2-4526-b21f-21c27d4730e0" alt=""><figcaption></figcaption></figure> <figure><img src="https://1939071994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sDjF5HJP1bf8TtLcgkk%2Fuploads%2FXb8EM7nck53HOb1YY5gK%2Fhook-detail.png?alt=media&#x26;token=d6eaf8d0-da88-4dde-b13f-c6da2074de50" alt=""><figcaption></figcaption></figure></div>

1. Quiescing Mode - Controls how hooks are applied to pods.
   1. Sequential -

      Hooks run by priority, one group at a time. TVK waits for the current priority group to finish before starting the next. During unquiesce (post-hook), the execution order is automatically reversed. Use this when components require strict quiesce/unquiesce ordering.
   2. Parallel -

      Hooks are triggered at the same time, regardless of priority. Up to 5 hooks run concurrently. Priority is ignored. Use this when components can be quiesced independently with no ordering constraints.
2. Pod Ready Wait (sec) - The maximum time TVK waits for a pod to reach the Running state before attempting hook execution. If the pod is still initialising (e.g., Pending phase), TVK polls every 5 seconds until the pod is ready or this timeout expires. If the timeout expires, the hook fails.
3. Configured hook - This the configured hook which configure in [Add Hooks](https://docs.trilio.io/kubernetes/getting-started/using-trilio/getting-started-with-management-console/navigating-intro/backup-and-recovery/backupplans/create-backup-plans#create-backup-plan-hook-configuration) . \
   When user click on collapse icon, user can see the configured detail. From that user can edit the same hook or user can remove that hook by clicking on Delete.
4. Add hook - If user want to add new hook configuration, user can configure it by clicking it and can configure same as [Add Hooks](https://docs.trilio.io/kubernetes/getting-started/using-trilio/getting-started-with-management-console/navigating-intro/backup-and-recovery/backupplans/create-backup-plans#create-backup-plan-hook-configuration)&#x20;
