Velero configuration reference for Lokomotive

    Introduction

    Velero helps you back up and restore your Kubernetes cluster resources and persistent volumes.

    Prerequisites

    • A Lokomotive cluster accessible via kubectl deployed.

    Configuration

    Velero on AKS

    In order to use Velero on Azure, you need to have Application (Service Principal) created for it. This service account needs to have access to a storage account with blob storage, where backups will be stored.

    Follow velero-plugin-for-microsoft-azure#setup to set it up.

    Example

    Velero component configuration example:

    # velero.lokocfg
    component "velero" {
    
      #  provider = "azure/openebs/restic"
      #  azure {
      #    # Required arguments.
      #    subscription_id = "9e5ac23c-6df8-44c4-9790-6f6decf96268"
      #    tenant_id       = "78bdc534-b34f-4bda-a6ca-6df52915b0b5"
      #    client_id       = "d44117a8-b69d-437b-9073-e4e3b25e164a"
      #    client_secret   = "c26f9698-a563-409e-87ee-4dcf96007b73"
      #    resource_group  = "my-resource-group"
      #
      #    backup_storage_location {
      #      resource_group  = "my-resource-group"
      #      storage_account = "mybackupstorageaccount"
      #      bucket          = "backupscontainer"
      #    }
      #
      #    # Optional parameters
      #    volume_snapshot_location {
      #      resource_group = "my-resource-group"
      #      api_timeout    = "10m"
      #    }
      #  }
      #
      #  openebs {
      #    credentials = file("cloud-credentails-file")
      #    provider    = "aws"
      #
      #    backup_storage_location {
      #      provider = "aws"
      #      region   = "my-region"
      #      bucket   = "my-bucket"
      #      name     = "my-backup-location"
      #    }
      #
      #    volume_snapshot_location {
      #      bucket   = "my-bucket"
      #      region   = "my-region"
      #      provider = "aws"
      #      name     = "my-snapshot-location"
      #      prefix   = "backup-prefix"
      #      local    = false
      #
      #      openebs_namespace = "openebs"
      #
      #      s3_url = "mybucket.example.com"
      #    }
      #  }
      #
      #  restic {
      #    credentials = file("cloud-credentials-file")
      #
      #    require_volume_annotation = true
      #
      #    backup_storage_location {
      #      provider = "aws"
      #      bucket   = "my-bucket"
      #      name     = "my-backup-location"
      #    }
      #  }
    
      # Optional.
      metrics {
        enabled         = false
        service_monitor = false
      }
    
      namespace = "velero"
    }
    

    Attribute reference

    Table of all the arguments accepted by the component.

    Argument Description Default Type Required
    namespace Namespace to install Velero. “velero” string false
    provider Provider sets which provider block to use for the configuration. Supported values are: azure, openebs and restic. - string true
    metrics Configure Prometheus to scrape Velero metrics. Needs the Prometheus Operator component installed. - object false
    metrics.enabled Adds Prometheus annotations to Velero deployment if enabled. false bool false
    metrics.service_monitor Adds ServiceMonitor resource for Prometheus. Requires metrics.enabled as true. false bool false
    azure Configure Azure provider for Velero. - object false
    azure.subscription_id Azure Subscription ID where client application is created. Can be obtained with az account list. - string true
    azure.tenant_id Azure Tenant ID where your subscription is created. Can be obtained with az account list. - string true
    azure.client_id Azure Application Client ID to perform Azure operations. - string true
    azure.client_secret Azure Application Client secret. - string true
    azure.resource_group Azure resource group, where PVC Disks are created. If this argument is wrong, Velero will fail to create PVC snapshots. - string true
    azure.backup_storage_location Configure backup storage location and metadata. - object true
    azure.backup_storage_location.resource_group Name of the resource group containing the storage account for this backup storage location. - string true
    azure.backup_storage_location.storage_account Name of the storage account for this backup storage location. - string true
    azure.backup_storage_location.bucket Name of the storage container to store backups. - string true
    azure.volume_snapshot_location Configure PVC snapshot location. - object false
    azure.volume_snapshot_location.resource_group Azure Resource Group where snapshots will be stored. Stored in the same resource group as the cluster. string false
    azure.volume_snapshot_location.api_timeout Azure API timeout. “10m” string false
    openebs Configure OpenEBS provider for Velero. - object false
    openebs.credentials Content of cloud provider credentials. - string true
    openebs.provider Cloud provider to use for backup and snapshot storage. Supported values are gcp and aws. - string false
    openebs.backup_storage_location Configure backup storage location. - object true
    openebs.backup_storage_location.region Cloud provider region for storing backups. - string true
    openebs.backup_storage_location.bucket Cloud storage bucket name for storing backups. - string true
    openebs.backup_storage_location.provider Cloud provider name for storing backups. Overrides openebs.provider field for backup storage. - string false
    openebs.backup_storage_location.name Name for backup location object on the cluster. - string false
    openebs.volume_snapshot_location Configure volume snapshot location. - object true
    openebs.volume_snapshot_location.bucket Cloud storage bucket name for storing volume snapshots. - string true
    openebs.volume_snapshot_location.region Cloud provider region for storing snapshots. string true
    openebs.volume_snapshot_location.provider Cloud provider name for storing snapshots. Overrides openebs.provider field for backup storage. - string false
    openebs.volume_snapshot_location.name Name for snapshot location object on the cluster. - string false
    openebs.volume_snapshot_location.prefix Prefix for snapshot names. - string false
    openebs.volume_snapshot_location.local If true, backups won’t be copied to cloud storage. false bool false
    openebs.volume_snapshot_location.openebs_namespace Name of the namespace where OpenEBS runs. - string true
    openebs.volume_snapshot_location.s3_url S3 API URL. - string false
    restic Configure Restic provider for Velero. - object false
    restic.credentials Content of cloud provider credentials. - string true
    restic.require_volume_annotation Backup all pod volumes without having to apply annotation on the pod when using restic. To exclude volumes add the annotation backup.velero.io/backup-volumes-excludes on the pod. false bool false
    restic.backup_storage_location.provider Cloud provider name for storing backups. - string false
    restic.backup_storage_location.bucket Cloud storage bucket name for storing backups. - string true
    restic.backup_storage_location.name Name for backup location object on the cluster. “default” string false
    restic.backup_storage_location.region Cloud provider region for storing snapshots. Required if restic.backup_storage_location.provider = aws. - string false
    restic.tolerations Tolerations that the Restic provider installation daemonset will tolerate. - list(object({key = string, effect = string, operator = string, value = string, toleration_seconds = string })) false

    Applying

    To apply the Velero component:

    lokoctl component apply velero
    

    Post-installation

    For day-to-day tasks, the velero CLI tool is the recommended way to interact with Velero.

    You can find how to install it in the official documentation .

    To learn more on taking backups with Velero, visit Velero#getting-stated

    Deleting

    To destroy the component:

    lokoctl component delete velero --delete-namespace