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

Обновление 3.20.0 до 3.21.0

Для обновления необходимо использовать актуальный комплект поставки системы.

  1. Установите SSH-соединение с сервером.

    ssh <user-name>@<your-server>
    
  2. Перейдите в директорию, указанную при установке AppSec.Track (рекомендуемая директория — /opt/appsec-track/).

    cd /opt/appsec-track
    
  3. Остановите и удалите контейнеры AppSec.Track, выполнив команду:

    sudo docker-compose down
    
  4. При обновлении без скачивания дистрибутива необходимо обновить скрипт ./entrypoint/entrypoint.sh. Новый скрипт, который необходимо использовать в этом случае:

    #!/bin/sh
    set -eu
    
    LDAP_TRUSTSTORE="/track/cacerts"
    LDAP_CERT_DIR="/track/ldap/certs"
    DEFAULT_LDAP_STORE_PASS="changeit"
    LDAP_STORE_PASS="${ldap_store_pass:-$DEFAULT_LDAP_STORE_PASS}"
    
    cp "$JAVA_HOME/lib/security/cacerts" "$LDAP_TRUSTSTORE"
    chmod 640 "$LDAP_TRUSTSTORE"
    
    if [ "$LDAP_STORE_PASS" != "$DEFAULT_LDAP_STORE_PASS" ]; then
        keytool -storepasswd \
            -new "$LDAP_STORE_PASS" \
            -keystore "$LDAP_TRUSTSTORE" \
            -storepass "$DEFAULT_LDAP_STORE_PASS" \
            -noprompt
    fi
    
    if [ -d "$LDAP_CERT_DIR" ] && [ "$(find "$LDAP_CERT_DIR" -type f \( -iname '*.crt' -o -iname '*.pem' \) -print -quit)" ]; then
        echo "Установка дополнительных сертификатов в Java"
        for CERT in "$LDAP_CERT_DIR"/*.crt "$LDAP_CERT_DIR"/*.pem; do
            [ -f "$CERT" ] || continue
            ALIAS=$(echo "$CERT" | tr -dc '[:alnum:]')
            echo "Добавление сертификата $CERT (alias=$ALIAS)..."
            if keytool -importcert -file "$CERT" -keystore "$LDAP_TRUSTSTORE" -storepass "$LDAP_STORE_PASS" -alias "$ALIAS" -noprompt; then
                echo " -> Сертификат успешно добавлен"
            else
                echo " -> Ошибка при добавлении сертификата"
            fi
        done
    else
        echo "Сертификатов для установки не обнаружено"
    fi
    
    if [ -z "`find \"/track/tls/certs\" -mindepth 1 -exec echo notempty \; -quit`" ]; then
        echo "Cертификатов для терминирования tls не обнаружено или терминирование не включено"
    else
        echo "Загружаю сертификат для терминирования tls"
        openssl pkcs12 -export -in /track/tls/certs/fullchain.pem -inkey /track/tls/certs/privkey.pem -passout pass:${pksc_store_pass} > /track/server.p12
        keytool -importkeystore -srckeystore /track/server.p12 -destkeystore server.jks -srcstoretype pkcs12 -srcstorepass ${pksc_store_pass} -deststorepass ${jks_store_pass}
    fi
    
    java -Djavax.net.ssl.trustStore=$LDAP_TRUSTSTORE \
         -Djavax.net.ssl.trustStorePassword=$LDAP_STORE_PASS \
         -jar /track/track.jar --spring.config.location=/track/config/application-prod.yml
    
  5. Загрузите образы в Docker. Предусмотрена возможность загрузки образов как из репозитория registry.appsec.global, так и из дистрибутива.

    1. Авторизуйтесь в репозитории registry.appsec.global.

      sudo docker login registry.appsec.global -u <user-name>
      
    2. Загрузите образы.

      sudo docker pull registry.appsec.global/appsec-track/track-backend:3.21.0
      sudo docker pull registry.appsec.global/appsec-track/track-frontend:3.21.0
      sudo docker pull registry.appsec.global/appsec-track/track-db:3.21.0
      sudo docker pull registry.appsec.global/appsec-track/track-redis:3.21.0
      sudo docker pull registry.appsec.global/appsec-track/track-scanner:3.21.0
      
    1. Скопируйте Docker-образы на сервер.

      scp home/<user-name>/track-backend-3.21.0.tar root@<your-server>:/home/<user-name>
      scp home/<user-name>/track-frontend-3.21.0.tar root@<your-server>:/home/<user-name>
      scp home/<user-name>/track-db-3.21.0.tar root@<your-server>:/home/<user-name>
      scp home/<user-name>/track-redis-3.21.0.tar root@<your-server>:/home/<user-name>
      scp home/<user-name>/track-scanner-3.21.0.tar root@<your-server>:/home/<user-name>
      
    2. Загрузите образы.

      sudo docker load --input /home/<user-name>/track-backend-3.21.0.tar
      sudo docker load --input /home/<user-name>/track-frontend-3.21.0.tar
      sudo docker load --input /home/<user-name>/track-db-3.21.0.tar
      sudo docker load --input /home/<user-name>/track-redis-3.21.0.tar
      sudo docker load --input /home/<user-name>/track-scanner-3.21.0.tar
      

    Примечание

    <user-name> — имя пользователя;
    <your-server> — URL или IP сервера.

  6. Для проверки результатов предыдущих шагов выполните следующую команду:

    sudo docker images
    

    Необходимо убедиться, что в списке Docker-контейнеров присутствуют track-backend, track-frontend, track-db, track-redis и track-scanner, а также проверить версию каждого контейнера.

    REPOSITIRY                                          TAG
    registry.appsec.global/appsec-track/track-backend:3.21.0
    registry.appsec.global/appsec-track/track-frontend:3.21.0
    registry.appsec.global/appsec-track/track-db:3.21.0
    registry.appsec.global/appsec-track/track-redis:3.21.0
    registry.appsec.global/appsec-track/track-scanner:3.21.0
    
  7. Отредактируйте файл переменных окружения .env, указав в переменных backend_image, frontend_image, db_image, redis_image и scanner_image новые версии образов, полученные на предыдущем шаге, например:

    Редактирование файла .env

    Для отображения файлов, имена которых начинаются точкой, например .env, рекомендуется использовать команду:

    ls -la
    

    Для редактирования можно воспользоваться редактором nano:

    sudo nano .env
    
    .env
    # Images
    backend_image=registry.appsec.global/appsec-track/track-backend:3.21.0
    frontend_image=registry.appsec.global/appsec-track/track-frontend:3.21.0
    db_image=registry.appsec.global/appsec-track/track-db:3.21.0
    redis_image=registry.appsec.global/appsec-track/track-redis:3.21.0
    scanner_image=registry.appsec.global/appsec-track/track-scanner:3.21.0
    
  8. Запустите контейнеры AppSec.Track.

    sudo docker-compose up -d
    

    Система перезагрузится и будет готова к использованию.

  9. Перейдите в пользовательский интерфейс AppSec.Track по адресу хоста (например, http://<AppSec.Track_IP_address>:8070/). Логин и пароль пользователя после обновления останутся прежними.