Обновление ПО GitFlic с 3.х.х до 4.х.х версии
Внимание !
Если вы используете версию GitFlic 2.x.x, то выполните шаги из инструкции по переходу с версии 2.x.x до 3.x.x прежде, чем выполнять шаги из этой инструкции
Внимание !
Перед обновлением ПО GitFlic до версии 4.0.0, сделайте резервные копии:
- баз данных Postgresql и Redis/Keydb
- статических данных. Директории img, repo, cicd, registry, releases
- ключей для ssh сервера. Файл /opt/gitflic/key.pem
Общие сведения
В рамках релиза 4.0.0 мы сделали ряд необходимых изменений в GitFlic для корректной работы сервиса, эти изменения блокируют обратную совместимость. Данная статья призвана решить проблемы перехода со старой версии 3.x.x на новую версию 4.х.х.
В том случае если у вас возникнут сложности с обновлением, то вы можете написать на нашу почту support@gitflic.ru
, обозначив свою проблему
Что изменилось?
- Изменена схема работы с RSA-ключами, необходимыми для подписей пакетов и авторизационных токенов.
Добавлены обязательные параметры
gitflic.vault.cert.publicKey
иgitflic.vault.cert.privateKey
- Для LDAP-подключений добавлен новый обязательный параметр
UID пользователя
, идентифицирующий пользователя. - Изменена схема работы подписей SAML подключений.
- В рамках CI/CD GitFlic агенты по умолчанию выполняют задачу в одном контексте (ранее выполнение задачи происходило в разных контекстах)
- Из стандартных пакетов убраны манифесты для k8s. На смену им пришли Helm Charts
- Изменен подход к установке и запуску ПО в Docker Containers
Обновление ПО GitFlic
-
С помощью утилиты keys-retriever.jar, извлеките ключевую пару из текущей инсталляции ПО GitFlic и сохраните её на файловую систему:
Для импортирования существующих ключей RSA нужно запустить:
java -jar keys-retriever.jar /path/to/application.properties
Укажите application.properties, которые используются в работе с основным приложением GitFlic. Ключи
private_key.pem
иpublic_key.pem
будут экспортированы в директорию, из которой запускается утилита.
Внимание !
Для работы keys-retriever.jar у пользователя должен быть доступ на запись.
Необходимо прописать путь до этих ключей в application.properties (gitflic.vault.cert.publicKey=path/to/public_key.pem и gitflic.vault.cert.privateKey=path/to/private_key.pem)
-
Остановите ПО GitFlic и отредактируйте файл application.properties инстансов GitFlic, добавив следующую информацию:
application.properties
gitflic.vault.cert.publicKey=#Путь до публичного ключа public_key.pem gitflic.vault.cert.privateKey=#Путь до приватного ключа private_key.pem
-
Замените исполняемый файл gitflic.jar на новый из комплекта поставки 4.0.0 и запустите ПО GitFlic
Изменения в docker compose
-
В новой версии
docker-compose.yaml
был изменен подход к хранению данных. Вместо прямой связки ФС с контейнерами, используются volume'ы предоставляемые docker engine. Во избежание дальнейших проблем, рекомендуется создать и перемести данные ПО в соответствующие volume. В противном случае, перед запуском, отредактируйте ваш файл docker-compose.yaml в соответствии с требуемыми изменениями -
В случае использования
docker-compose.yaml
из комплекта поставки ПО GitFlic, необходимо будет сделать полный перенос данных!
Внимание
В случае использования версии enterprise установите образ ПО GitFlic версии 4.х.х в вашу docker систему
-
Загрузите из личного кабинета образ с gitflic-enterprise (docker/images/gitflic-server-ee.tar)
-
Импортируйте образ в вашу систему
docker load -i gitflic-server-ee_<version>.tar
-
В файле
.env
укажите установленный образ в переменнойGITFLIC_IMAGE
# .env ... GITFLIC_IMAGE=gitflic-server-ee:<актуальный тег> ...
-
С помощью утилиты
keys-retriever
, извлеките ключевую пару из текущей инсталляции ПО GitFlic и сохраните её на файловую систему:Для импортирования существующих ключей RSA нужно:
-
Сделать команду docker pull:
docker pull registry.gitflic.ru/project/gitflic/keys-retriever/keys-retriever:1.0.0
-
Достать ключи из поднятого контейнера:
Ключи private_key.pem и public_key.pem будут импортированы в директорию откуда запускалась команда docker cp.CONTAINER_ID=$(docker run -d --env-file ./ENV --network gitflic_network registry.gitflic.ru/project/gitflic/keys-retriever/keys-retriever:1.0.0) && docker logs -f $CONTAINER_ID docker cp $CONTAINER_ID:/opt/key-retriever/private_key.pem ./private_key.pem docker cp $CONTAINER_ID:/opt/key-retriever/public_key.pem ./public_key.pem docker rm $CONTAINER_ID
-
-
Остановите ПО GitFlic версии 3.х.х
-
Создайте volume gitflic_certs
docker volume create gitflic_cert
-
Скопируйте в данный volume ключевую пару и текущий файл key.pem, подключенный к контейнеру
sudo cp private_key.pem public_key.pem key.pem $(docker volume inspect gitflic_cert -f '{{.Mountpoint}}')
docker run --rm -v gitflic_cert:/root -v "$PWD":/host ubuntu cp /host/private_key.pem /host/public_key.pem /host/key.pem /root/
-
Запустите ПО Gitflic версии 4.х.х для инициализации окружения и создания необходимых контейнеров. Дождитесь запуска приложения, после чего остановите запущенное ПО. При успшном запуске ПО в логе будет строка содержащая
Started OnPremiseApplication
илиStarted EnterpriseApplication
в зависимости от версии ПО.docker compose up --attach gitflic
-
Найдите в системе созданные volumes с соотвестующим префиксом. При использовании
docker compose
без параметра-p
, в качестве префикса будет добалено имя текущей директории.docker volume ls -q | grep -e gitflic_data -e pg_data
# Пример вывода команды docker volume ls -q | grep -e gitflic_data -e pg_data docker_gitflic_data docker_pg_data
- Том gitflic_data отвечает за хранение данных ПО gitflic
- Том pg_data отвечает за хранение данных БД postgres
-
Перейдите в директорию с версией 3.х.х и скопируйте содержимое папки docker/gitflic/data в volume
_gitflic_data. cp -rT <Путь по директории с распакованных архивом ПО Gitflic>/docker/gitflic/data/* $(docker volume inspect <prefix>_gitflic_data -f '{{.Mountpoint}}')
-
Перейдите в директорию с версией 3.х.х и скопируйте cодержимое папки docker/postgres/data в volume
_pg_data cp -rT <Путь до директории с распакованных архивом ПО Gitflic>/docker/postgres/data $(docker volume inspect <prefix>_pg_data -f '{{.Mountpoint}}')
-
Запустите ПО Gitflic версии 4.х.х и проверьте корректность перенесенных данных.
Описание новых томов и данных
- Том
gitflic_data
отвечает за хранение данных ПО gitflic - Том
gitflic_etc
отвечает за хранение настроек ПО gitflic - Том
gitflic_cert
отвечает за хранение сертификатов ПО gitflic - Том
pg_data
отвечает за хранение данных БД postgres - Том
redis_data
отвечает за хранение данных БД redis - Файл
.env
является основным файлом подключаемым по умолчанию - Файл
external.env
является дополнительным и служит для переопределения данных. Отвечает за подключения к базам данных, настройке почты и работы сelasticsearch
. Файл может быть пустым или закоментированным, но обязательно должен присуствовать в директории вместе сdocker-compose.yaml
- Параметр
TRANSPORT_URL
был убран из .env. В него подставляются данные из перменной BASE_URL - Параметр
TRANSPORT_SSH
, используется только при первичной инициализации ПО Gitflic и служит для установки корректного отображения ссылок дляSSH
. При необходимости его можно переопределить в веб интерфейсе ПО Gitflic - Если необходимо добавить дополнительные параметры в gitflic-server, необходимо создать файл c расширением
.properties
(напримерs3.properties
) и поместить его в volumegitflic_etc
. Изменения будут применены автоматически после перезапуска ПО Gitflic. Не рекомендуется вносить изменения в файлapplication.properties
Изменения после успешного обновления GitFlic до версии 4.x.x
После успешного обновления GitFlic до версии 4.x.x обращаем ваше внимание на измененную схему настройки SAML и LDAP подключений в панели администратора.
Обновление конфигурации LDAP с 3.х.х до 4.х.х версии
В версии 4.0.0 в конфигурацию LDAP добавлен новый обязательный атрибут — UID пользователя
- уникальный и неизменяемый идентификатор.
При обновлении до версии 4.0.0 поле UID пользователя
автоматически будет заполнено первым значением из поля LDAP-атрибут для логина пользователя
.
ВНИМАНИЕ Для корректной работы системы необходимо вручную указать UID пользователя
как атрибут,
содержащий глобально уникальный идентификатор (например, uid
, employeeNumber
, sAMAccountName
и т.п.). Более подробно о подключении можете ознакомиться в этой инструкции
Обновление конфигурации SAML с 3.х.х до 4.х.х версии
В версии 4.0.0 изменен процесс проверки подписи SAML-IDP.
Начиная с версии 4.0.0 появилась возможность включать или выключать проверку подписи IDP используя опцию Проверять сертификат метаданных
.
По умолчанию эта опция отключена. В рамках проверки подписи начиная с версии 4.0.0 сверяется SHA1 отпечаток подписи в составе SAML-ответа с SHA1 отпечатком,
хранящимся в настройках SAML-подключения. При первом запуске GitFlic после обновления будет вычислен SHA1 отпечаток (хэш) x509 сертификата,
указанного в настройках подключения. ВНИМАНИЕ Если вы активируете опцию Проверять сертификат метаданных
- перед сохранением изменений убедитесь что заполнено поле SHA1 хэш сертификата
.
Более подробно о подключении SAML-SSO можете ознакомиться в этой инструкции
Обновление агентов GitFlic Runner
Информация
С версии 4.0.0 GitFlic CI/CD агенты производят выполнение задачи в одном контексте, что может привести к некорректному поведению конвейеров, которые были написаны ранее.
Для того чтобы включить старое поведение (выполнение задачи в разных контекстах) необходимо добавить параметр runner.enableExecScriptsInSession=false в application.properties самого агента, после чего перезапустить его.
# application.properties
...
runner.enableExecScriptsInSession=false
...