Установка Velero

Velero — это клиент-серверная утилита для резервного копирования и восстановления ресурсов кластера Kubernetes.

Установка

  1. Убедитесь, что:

  2. Убедитесь, что вы можете подключиться к кластеру с помощью kubectl.

  3. Установите OpenStack CLI, если он еще не установлен. Убедитесь, что вы можете авторизоваться в облаке с его помощью.

  4. Создайте hotbox-бакет для хранения резервных копий в сервисе VK Object Storage.

  5. Создайте аккаунт в сервисе VK Object Storage.

    Выведенные идентификатор ключа и секрет сохраните в файл s3_creds:

    [default]aws_access_key_id=<ИДЕНТИФИКАТОР_КЛЮЧА_ACCESS_KEY_ID>aws_secret_access_key=<СЕКРЕТНЫЙ_КЛЮЧ_SECRET_KEY>
  6. Определите, какая версия Velero совместима с версией кластера Kubernetes, в который нужно установить Velero.

  7. Загрузите нужную версию клиента Velero.

  8. Определите версию плагина AWS, соответствующую используемой версии Velero.

  9. Добавьте путь до клиента в переменную среды окружения:

    • Path для Windows.
    • PATH для Linux/macOS.
  10. Установите серверную часть Velero в кластер Kubernetes. В команде укажите имя бакета, созданного для Velero, и путь к файлу s3_creds с данными аккаунта:

    velero install \--plugins \  velero/velero-plugin-for-aws:v1.8.2,registry.infra.mail.ru:5010/velero/velero-plugin-mcs:v1.13.1 \--provider aws \--bucket <ИМЯ_БАКЕТА_VELERO> \--secret-file <ПУТЬ_К_ФАЙЛУ_S3_CREDS> \--use-volume-snapshots=false \--backup-location-config \  region=ru-msk,s3ForcePathStyle="true",checksumAlgorithm="",s3Url=<ДОМЕН>

    Здесь <ДОМЕН> — домен сервиса VK Object Storage, соответствующий региону аккаунта:

    • https://hb.ru-msk.vkcloud-storage.ru — домен региона Москва.
    • https://hb.kz-ast.bizmrg.com — домен региона Казахстан.

    После завершения установки будет выведено сообщение:

    Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status.
  11. Создайте секрет Kubernetes для авторизации серверной части Velero в VK Cloud:

    kubectl -n velero create secret generic openstack-cloud-credentials \  --from-literal OS_PROJECT_ID=$OS_PROJECT_ID \  --from-literal OS_REGION_NAME=$OS_REGION_NAME \  --from-literal OS_IDENTITY_API_VERSION=$OS_IDENTITY_API_VERSION \  --from-literal OS_PASSWORD=$OS_PASSWORD \  --from-literal OS_AUTH_URL=$OS_AUTH_URL \  --from-literal OS_USERNAME=$OS_USERNAME \  --from-literal OS_INTERFACE=$OS_INTERFACE \  --from-literal OS_FILE_OPERATION_TIMEOUT=$OS_FILE_OPERATION_TIMEOUT \  --from-literal OS_DOMAIN_NAME=$OS_USER_DOMAIN_NAME \  -o yaml

    Должна быть выведена похожая информация:

    apiVersion: v1data:  OS_AUTH_URL: ...  OS_DOMAIN_NAME: ...  ...kind: Secretmetadata:  creationTimestamp: ...  name: openstack-cloud-credentials  namespace: velero  resourceVersion: ...  selfLink: ...  uid: ...type: Opaque
  12. Пропатчите развертывание (deployment) Velero в кластере, чтобы:

    • ограничить потребление ресурсов плагинами Velero для AWS и VK Cloud;
    • указать секрет с переменными для авторизации в VK Cloud.

    Чтобы пропатчить развертывание Velero:

    1. Создайте файл с патчем:

    2. Примените патч к развертыванию Velero:

      kubectl patch deployment velero -n velero --patch-file velero-patch.yaml

      Развертывание Velero будет пропатчено и перезапущено.

  13. Задайте для снимков расположение по умолчанию:

    velero snapshot-location create default --provider openstack --config region=ru-msk

Проверка работоспособности

  1. Выполните команду для проверки настроенных плагинов:

    velero plugin get

    В выводе команды должны содержаться следующие плагины:

    NAME                      KIND...                       ...velero.io/aws             VolumeSnapshottervelero.io/openstack       VolumeSnapshotter
  2. Выполните команду для проверки настроенных расположений для резервных копий:

    velero backup-location get

    Должна быть выведена похожая информация:

    NAME      PROVIDER   BUCKET/PREFIX   PHASE       LAST VALIDATED   ACCESS MODE   DEFAULTdefault   aws        ...             Available   ...              ReadWrite     true
  3. Выполните команду для проверки настроенных расположений для снимков (snapshot):

    velero snapshot-location get

    Должна быть выведена похожая информация:

    NAME      PROVIDERdefault   openstack

Удаление

Для удаления Velero выполните команду:

velero uninstall