Откат настраивается в виде конвейера, включающего задачи, которые возвращают развертывание в предыдущее стабильное состояние после сбоя конвейера развертывания. Чтобы выполнить откат в случае сбоя, необходимо добавить конвейер отката к задачам или этапам.

Пользователи с разными ролями могут выполнять откат по разным причинам.

  • Релиз-инженерам нужно получать от службы Code Stream подтверждения того, что выпуск успешно проходит все проверки. Эта информация помогает им понять, можно ли продолжать работу с этим выпуском или же нужно выполнить откат. Возможные причины для отката включают сбои при выполнении задач, отказ при прохождении проверки на удобство использования и эксплуатации, превышение пороговых значений показателей.
  • Владельцам среды требуется возможность повторить развертывание предыдущего выпуска, чтобы оперативно восстановить работоспособное состояние среды.
  • Владельцам среды требуется возможность отката развертывания в параллельные идентичные среды (Blue-Green) для сведения к минимуму простоев, связанных с неудачными выпусками.

При создании конвейера непрерывного предоставления на основе смарт-шаблона конвейера с выбранным параметром отката задача отката автоматически добавляется в задачи данного конвейера. В данном примере с помощью смарт-шаблона конвейера задается откат развертывания приложения в кластере Kubernetes, где используется модель динамического развертывания. Смарт-шаблон конвейера позволяет создать конвейер развертывания и один конвейер отката либо несколько.

  • В конвейере развертывания происходит откат при неудачном выполнении задач «Обновление развертывания» или «Проверка развертывания».
  • В конвейере отката происходит обновление развертывания с использованием более раннего образа.

Можно также вручную создать конвейер отката на основе пустого шаблона. Необходимо распланировать процесс отката, прежде чем создавать конвейер. Дополнительные сведения об откате см. в разделе Планирование отката в Code Stream.

Необходимые условия

  • Проверьте, являетесь ли вы участником проекта в Code Stream. Если нет, попросите администратора Code Stream добавить вас в проект в качестве участника. См. раздел Добавление проекта в Code Stream.
  • Настройте кластеры Kubernetes, в которых конвейер будет выполнять развертывание приложения. Настройте один кластер как кластер разработки, а другой — как производственный кластер.
  • Убедитесь в наличии настроенного реестра Docker.
  • Задайте проект, объединяющий все ваши рабочие объекты, включая конвейер, конечные точки и панели управления.
  • Ознакомьтесь со смарт-шаблоном непрерывного предоставления, как описано в подразделе о непрерывном предоставлении в разделе Планирование собственной сборки по модели непрерывной интеграции и непрерывной доставки в Code Stream перед использованием смарт-шаблона конвейера, например:
    • Создайте конечные точки разработки и производственной среды Kubernetes, которые будут развертывать образ приложения в кластерах Kubernetes.
    • Подготовьте файл YAML Kubernetes, который создает пространство имен, службу и развертывание. Если необходимо загрузить образ из частного репозитория, файл YAML должен содержать раздел с секретом конфигурации Docker.

Процедура

  1. Выберите пункт Конвейеры > Новый конвейер > Смарт-шаблон > Непрерывное предоставление.
  2. Введите информацию в смарт-шаблон конвейера.
    1. а. Выберите проект.
    2. б. Введите имя конвейера, например RollingUpgrade-Example.
    3. в. Выберите среды для приложения. Чтобы добавить откат в развертывание, необходимо выбрать среду Произв..
    4. г. Нажмите Выбрать , выберите файл YAML Kubernetes и нажмите Процесс.
      В смарт-шаблоне конвейера отображаются доступные службы и среды развертывания.
    5. д. Выберите службу, которую конвейер будет использовать для развертывания.
    6. е. Выберите конечные точки кластера для среды разработки и производственной среды.
    7. ё. В качестве источника образа выберите Входные данные среды выполнения конвейера.
    8. ж. В качестве модели развертывания выберите Динамическое обновление.
    9. з. Нажмите Откат.
    10. и. Укажите URL-адрес для проверки работоспособности.
    При создании конвейера отката необходимо ввести сведения, выбрать службу, развертывание и модель развертывания, а также установить флажок Откат.
  3. Чтобы создать конвейер с именем RollbackUpgrade-Example, нажмите Создать.

    Отображается конвейер с именем RollbackUpgrade-Example и появляется значок отката для задач, которые могут выполнять откат на этапе разработки и на этапе производства.

    В конвейере отката для задач, в которых может выполняться откат, отображается значок отката.

  4. Закройте конвейер.

    На странице «Конвейеры» появляются созданный конвейер, а также новый конвейер для каждого этапа в этом конвейере.

    • RollingUpgrade-Example. Code Stream по умолчанию деактивирует созданный конвейер. Это гарантирует просмотр конвейера перед запуском.
    • RollingUpgrade-Example_Dev_Rollback. Сбой задач на этапе разработки, таких как Создание службы, Создание секретного элемента, Создание развертывания и Проверка развертывания, запускают этот конвейер отката разработки. Чтобы гарантировать выполнение отката задач разработки, Code Stream по умолчанию активирует конвейер отката для разработки.
    • RollingUpgrade-Example_Prod_Rollback. Сбой задач на этапе производства, таких как Этап развертывания 1, Этап проверки 1, Развертывание этапа выпуска, Завершение этапа выпуска и Проверка этапа выпуска, запускает этот конвейер отката для производственной среды. Чтобы гарантировать откат производственных задач, Code Stream по умолчанию активирует конвейер отката для производственной среды.
    Code Stream создает конвейеры отката для этапов и активирует их.
  5. Включите и запустите созданный конвейер.
    При запуске цикла выполнения Code Stream запрашивает входные параметры. Укажите образ и отметьте используемую конечную точку в репозитории Docker.
  6. На странице «Выполняемые элементы» выберите пункт Действия > Просмотр выполнения и просмотрите выполнение конвейера.

    Конвейер переходит в состояние ВЫПОЛНЯЕТСЯ и поочередно выполняет задачи этапа разработки. Если конвейеру не удается выполнить задачу на этапе разработки, запускается конвейер с именем RollingUpgrade-Example_Dev_Rollback, который выполняет откат развертывания, и состояние конвейера меняется на ОТКАТ.

    Конвейер отката выполняет откат развертывания и возвращает конвейер в предыдущее стабильное состояние.

    После отката на странице «Выполняемые элементы» отображаются два цикла выполнения конвейера RollingUpgrade-Example.

    • Для созданного конвейера выполнен откат и отображается состояние ВЫПОЛНЕН_ОТКАТ.
    • Конвейер отката для разработки, который запустил и выполнил откат, отображает состояние ЗАВЕРШЕНО.

    Результаты отката отображаются на вкладке Выполняемые элементы, а в комментариях указывается точка запуска отката.

Результаты

Поздравляем! Вы успешно настроили конвейер с откатом и просмотрели выполнение отката службой Code Stream при сбое конвейера.