Обновление ПО 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.
Внимание !
Для работы 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, необходимо будет сделать полный перенос данных!
-
С помощью утилиты
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
-
Подключите ключевую пару и текущий файл
key.pem
к контейнеру с ПО GitFlicПодключите к контейнерам gitflic-server файлы сертификатов в директорию /opt/gitflic/cert
# docker-compose.yaml ... services: name: gitflic-server ... volumes: ... - ./key.pem:/opt/gitflic/cert/key.pem - ./private_key.pem:/opt/gitflic/cert/private_key.pem - ./public_key.pem:/opt/gitflic/cert/public_key.pem ...
3.1. Создайте volume gitflic_certs
docker volume create gitflic_cert
3.2. Получите адрес точки монтирования volume в файловой системе
docker volume inspect gitflic_cert | grep Mountpoint
3.3. Скопируйте в данный volume ключевую пару и текущий файл key.pem, подключенный к контейнеру
Docker Engine:
cp private_key.pem public_key.pem key.pem /var/lib/docker/volumes/gitflic_cert/_data
Docker Desktop:
docker run --rm -v gitflic_cert:/root -v "$PWD":/host ubuntu cp /host/private_key.pem /host/public_key.pem /host/key.pem /root/
3.1. Создайте volume'ы для хранения данных postgres, redis , gitflic, elasticsearch
for v in gitflic_data gitflic_cert gitflic_log gitflic_etc pg_data redis_data elastic_data; do docker volume create "$v" done
3.2. Скопируйте рабочие директории img, repo, cicd, releases, registry в volume gitflic_data
3.3. Скопируйте файл application.properties в volume gitflic_etc
3.4. Скопируйте Содержимое папки postgres/data в volume pg_data
3.5. Скопируйте содержимое папки redis/data в volume redis_data
3.6. Скопируйте файлы key.pem, private_key.pem, public_key.pem в volume gitflic_cert
3.7. Отредактируйте файл .env в соответствии с вашими данными.
-
Установите образ ПО GitFlic
4.1. Загрузите из личного кабинета образ с gitflic-enterprise (docker/images/gitflic-server-ee.tar)
4.2. Импортируйте образ в вашу систему
docker load -i gitflic-server-ee.tar
4.3. В файле
.env
укажите установленный образ в переменнойGITFLIC_IMAGE
# .env ... GITFLIC_IMAGE=gitflic-server-ee:<актуальный тег> ...
В случае использования стороннего
docker-compose.yaml
, отредактируйте его, указав в качестве образа для контейнера gitflic - образ из репозитория gitflicimage: registry.gitflic.ru/company/gitflic/gitflic-server-ce:<актуальный тег>
Изменения после успешного обновления GitFlic до версии 4.x.x
После успешного обновления GitFlic до версии 4.x.x обращаем ваше внимание на измененную схему настройки SAML и LDAP подключений в панели администратора.
Обновление конфигурации LDAP с 3.х.х до 4.х.х версии
В версии 4.0.0 в конфигурацию LDAP добавлен новый обязательный атрибут — UID пользователя
- уникальный и неизменяемый идентификатор.
При обновлении до версии 4.0.0 поле UID пользователя
автоматически будет заполнено первым значением из поля LDAP-атрибут для логина пользователя
.
ВНИМАНИЕ Для корректной работы системы необходимо вручную указать UID пользователя
как атрибут,
содержащий глобально уникальный идентификатор (например, objectGUID
, entryUUID
и т.п.). Более подробно о подключении можете ознакомиться в этой инструкции
Обновление конфигурации 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
...