Gitlab переезд в докер контейнер.

В данной статье подробно разберем пример переезда GitLab с omnibus-установки в docker-установку с сохранением всех данных — репозиториев, мерджей, комментариев, артефактов и билдов (если такие есть). Давайте разберемся!

Итак, имеем неактуальную omnibus-установку GitLab из пакета gitlab-ce_10.6.4-ce.0_amd64.deb, например на debian7 это последняя версия из пакетов. Хотим получить актуальную версию (11.2.1-ce.0), установленную в docker-контейнере, для простоты обновления в будущем.

Сначала делаем резервную копию omnibus-установки GitLab:

Для создания копии без одного из этих компоненетов

  • db (database)
  • uploads (attachments)
  • repositories (Git repositories data)
  • builds (CI job output logs)
  • artifacts (CI job artifacts)
  • lfs (LFS objects)
  • registry (Container Registry images)
  • pages (Pages content)

например без registry

По умолчанию резервная копия будет создана в каталоге /var/opt/gitlab/backups.

При создании резервных копий Gitlab бекапятся все git-репозитории, загруженные файлы и база данных. SSH-ключи не бекапятся, следует помнить об этом!

Далее очень важный момент — если вы не хотите чтобы ваши ci-variables поломалась и выдавали 500 при доступе к ним то надо сделать еще их экспорт с помощью скрипта. Читаем тут.

Сам скрипт сохранения переменных. Его надо выполнить на старом гите.

Потом делай upgrade и перенос. Затем делаем восстановление, предварительно чикнув их в базе(ci-variables).
В докере с гитом

делаем

Скрипт восстановления

Из docker-образа устанавливаем GitLab той же версии, что и в omnibus-установке. Сделаем все красиво через docker-compose. Допустим у нас была версия 10.6.4 и не может она больше обновляться по разным причинам — например из-за РКН, или у вас старая дебиан на которую нельзя накатить обновления.
Создадим необходимые директории.

Запускаем gitlab. Обращаем внимание на версию gitlab указанную в docker-compose файле — она должна быть той версии, что и omnibus установка.

Теперь копируем созданный ранее бэкап из /var/opt/gitlab/backups/ в докер контейнер gitlab по такому же пути /var/log/gitlab.
В данном случаем

Опционально: изменим права доступа и владельца файла с бекапом внутри контейнера, на случай если он скопировался неправильно:

После восстановления проверим возможность логина в браузере, если все работает, то идем дальше.

Останавливаем и удаляем docker-контейнер с GitLab:

Правим docker-compose. Изменим версию gitlab на последнюю.

Делаем pull

Запускаем gitlab.

Ну а теперь запускаемся с новой версией и ждем пока пройдет процесс обновления. Наблюдаеть за ним можно так:

 docker service logs -f --tail 100  $(docker service ls | grep gitlab_gitlab | awk '{print $1}')

Posted in git

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.