Перейти к содержанию

Обновление ПО 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

  1. С помощью утилиты 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)

  1. Остановите ПО GitFlic и отредактируйте файл application.properties инстансов Gitflic, добавив следующую информацию:

    application.properties

    gitflic.vault.cert.publicKey=#Путь до публичного ключа public_key.pem
    gitflic.vault.cert.privateKey=#Путь до приватного ключа private_key.pem
    
  2. Замените исполняемый файл gitflic.jar на новый из комплекта поставки 4.0.0 и запустите ПО Gitflic

Изменения в docker compose

В новой версии docker-compose.yaml был изменен подход к хранению данных. Вместо прямой связки ФС с контейнерами, используются volume'ы предоставляемые docker engine. Во избежание дальнейших проблем, рекомендуется создать и перемести данные ПО в соответствующие volume. В противном случае, перед запуском, отредактируйте ваш файл docker-compose.yaml в соответствиии с требуемыми изменениями

Внимание !

В случае использования docker-compose.yaml из комплекта поставки ПО GitFlic, необходимо будет сделать полный перенос данных!

  1. С помощью утилиты keys-retriever, извлеките ключевую пару из текущей инсталляции ПО Gitflic и сохраните её на файловую систему:

    Для импортирования существующих ключей RSA нужно:

    1. Сделать команду docker pull:

       docker pull registry.gitflic.ru/project/gitflic/keys-retriever/keys-retriever:1.0.0
      

    2. Достать ключи из поднятого контейнера:

       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
      
      Ключи private_key.pem и public_key.pem будут импортированы в директорию откуда запускалась команда docker cp.

  2. Остановите ПО GitFlic

  3. Подключите ключевую пару и текущий файл 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 в соответствии с вашими данными.

  4. Установите образ ПО 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 - образ из репозитория gitflic

    image: 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
...