Обновление 2025.1.2 до 2025.1.3
Обновление AppSec.Hub (UI/Core) в Kubernetes
Примечание
Версия Helm-чарта Appsec.Hub: 0.2.7.
-
Скачайте новый Helm-чарт.
helm pull helm pull oci://registry.appsec.global/appsechub/hub-helm/appsechub --version 0.2.7
-
Извлеките файлы из архива.
tar -xvf tar -xvf appsechub-0.2.7.tgz && cd appsechub
-
Сравните два файла values.yaml (текущий и новый из архива) для выявления изменений.
diff -y --suppress-common-lines /path/to/actual/values.yaml /path/to/new/values.yaml
-
Заполните новый файл values.yaml вашими значениями, в соответствии с требованиями вашей среды.
-
Обновите развертывание.
helm upgrade --install appsechub . --namespace "appsechub" --create-namespace -f values.yaml
Список изменений в Helm-чарте Appsec.Hub
-
Переработан модуль
hub-engine
, добавлена возможность использования какhub-engine
ноды, так и агента сканированияhub-pipline-agent
, не требующего установки Jenkins. -
Добавлены модули
hub-pipeline
,rabbitmq
,hub-pipline-agent
.
Обновление AppSec.Hub (UI/Core) в Docker
Обновление при установке AppSec.Hub и Jenkins на одном хосте
-
Остановите AppSec.Hub.
cd /opt/apphub sudo docker-compose down
-
Добавьте в конец файла config/hub-core/app.properties следующую строку (см. «Приложение 4. Конфигурационный файл app.properties»).
hub.osa.issues.import.cron.expression=${osa.issues.import.cron.expression:0 0 5 * * *}
-
В конфигурационном файле /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env») укажите новые версии образов:
hub_core_version=2025.1.3 hub_ui_version=2025.1.3 hub_air_version=2025.1.3 hub_db_version=2025.1.3 hub_gateway_version=2025.1.3 hub_issue_rule_version=2025.1.3 hub_issue_version=2025.1.3 hub_sso_version=2025.1.3 hub_metrics_version=2025.1.3 hub_metrics_bridge_version=2025.1.3
И добавьте строки для версий образов новых микросервисов:
hub_pipeline_version=2025.1.3 rabbitmq_version=3.13-management-alpine hub_pipeline_agent_version=2025.1.3
-
Добавьте следующие строки в конец файла /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env»), указав переменные и значения параметров в соответствии с вашим окружением:
# Директория для хранения архивов сканов для hub-pipeline-agent ARCHIVE_FOLDER=/app/archive_folder # Директория для временного хранения файлов сканов SCANS_FOLDER=/app/scans_folder # Переменные для регистрации микросервисов hub-pipeline-agent и hub-pipeline на consul # Если у вас этот блок определен выше - пропустите CONSUL_HOST=http://consul CONSUL_PORT="8500" CONSUL_TOKEN="changeit" # Ключ для шифрования логинов и паролей для микросервисов AppSec.Hub # Должен совпадать с ключом hub-core ENCRYPTION_KEY="changeit" # Используется для шифрования траффика между контейнерами # В данный момент в бета-режиме GRPC_USE_TLS=false # Количество блоков с переменными GRPC_ADDRESS, GRPC_ID, GRPC_NAME, GRPC_PORT и GRPC_TAGS - по количеству пайплайн-агентов, # под каждый агент должен быть создан свой блок # GRPC_PORT для каждого контейнера уникальный (50052, 50053, 50054, etc.) GRPC_ADDRESS=hub-pipeline-agent-1 GRPC_ID=hub-pipeline-agent-1 GRPC_NAME=hub-pipeline-agent-1 GRPC_PORT="50052" GRPC_TAGS=["hub-pipeline-agent-1", "grpc-service"] # Настройки логирования hub-pipeline-agent LOG_LEVEL=INFO # Имя, хост и порт для hub-pipeline PIPELINE_SERVICE_NAME=grpc-pipeline-50053 PIPELINE_SERVICE_HOST=hub-pipeline PIPELINE_SERVICE_PORT=50053 # Переменные для подключения hub-pipeline-agent и hub-pipeline к rabbitmq RABBITMQ_MANAGEMENT_PORT="15672" RABBITMQ_HOST=rabbitmq RABBITMQ_AMQP_PORT=5672 RABBITMQ_PASSWORD="changeit" RABBITMQ_PORT="5672" RABBITMQ_ROUTING_KEY=super RABBITMQ_USERNAME=user RABBITMQ_USER=user # Используется для шифрования траффика hub-pipeline # В данный момент в бета-режиме USE_GRPC_SECURITY=false GRPC_AUTHORITY=<адрес хоста(url), на котором установлены пайплайн-агенты>
-
В конфигурационном файле docker-compose.yml для AppSec.Hub (см. «Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub») добавьте выделенную строку для сервиса hub-issue и измените предыдущие строки, связанные с
consul
:hub-issue: image: registry.appsec.global/appsechub/hub-issue:${hub_issue_version} container_name: hub-issue environment: - TZ=Europe/Moscow - CONSUL_HOST=${CONSUL_HOST} - CONSUL_PORT=${CONSUL_PORT} - CONSUL_TOKEN=${CONSUL_TOKEN} - DB_URL=jdbc:postgresql://${pgsql_url}/${hub_db_name} - HUBAPP_USERNAME=hubapp - HUBAPP_PASSWORD=${hub_app_password} - ENCRYPT_KEY=${ENCRYPTION_KEY}
-
В конфигурационном файле docker-compose.yml для AppSec.Hub (см. «Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub») добавьте следующие сервисы:
rabbitmq: image: registry.appsec.global/public/rabbitmq:${rabbitmq_version} container_name: rabbitmq environment: - RABBITMQ_DEFAULT_USER=${RABBITMQ_USERNAME} - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD} networks: - net-hub volumes: - ./rabbit:/var/lib/rabbitmq ports: - 15672:15672 - 5672:5672 restart: on-failure:5 security_opt: - no-new-privileges cpu_shares: 1024 deploy: resources: limits: memory: 300M hub-pipeline: image: registry.appsec.global/appsechub/hub-pipeline:${hub_pipeline_version} container_name: hub-pipeline environment: - PG_USER=postgres - PGPASSWORD=${pgsql_admin_password} - PG_URL=${pgsql_url} - HUB_URL=${HUB_URL} - TZ=Europe/Moscow - CONSUL_HOST=${CONSUL_HOST} - CONSUL_PORT=${CONSUL_PORT} - CONSUL_TOKEN=${CONSUL_TOKEN} - DB_URL=jdbc:postgresql://${pgsql_url}/pipeline_db - HUBAPP_USERNAME=hubapp - HUBAPP_PASSWORD=${hub_app_password} - RABBITMQ_HOST=${RABBITMQ_HOST} - RABBITMQ_AMQP_PORT=${RABBITMQ_AMQP_PORT} - RABBITMQ_USERNAME=${RABBITMQ_USERNAME} - RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD} - USE_GRPC_SECURITY=${USE_GRPC_SECURITY} - GRPC_AUTHORITY=${GRPC_AUTHORITY} cpu_shares: 768 deploy: resources: limits: memory: 1000M pids: 400 hub-pipelne-agent-1: image: registry.appsec.global/appsechub/hub-pipeline-agent:${hub_pipeline_agent_version} container_name: hub-pipeline-agent-1 networks: - net-hub user: 2000:2000 environment: - LOG_LEVEL=${LOG_LEVEL} - ENCRYPTION_KEY=${ENCRYPTION_KEY} - SCANS_FOLDER=${SCANS_FOLDER} - ARCHIVE_FOLDER=${ARCHIVE_FOLDER} - RABBITMQ__HOST=${RABBITMQ_HOST} - RABBITMQ__PORT=${RABBITMQ_PORT} - RABBITMQ_MANAGEMENT_PORT=${RABBITMQ_MANAGEMENT_PORT} - RABBITMQ__USER=${RABBITMQ_USER} - RABBITMQ__PASSWORD=${RABBITMQ_PASSWORD} - RABBITMQ__ROUTING_KEY=${RABBITMQ_ROUTING_KEY} - CONSUL__HOST=${CONSUL_HOST} - CONSUL__PORT=${CONSUL_PORT} - CONSUL__TOKEN=${CONSUL_TOKEN} - GRPC__ID=${GRPC_ID} - GRPC__NAME=${GRPC_NAME} - GRPC__TAGS=${GRPC_TAGS} - GRPC__PORT=${GRPC_PORT} - GRPC__ADDRESS=${GRPC_ADDRESS} - GRPC__USE_TLS=${GRPC_USE_TLS} - LANG=en_US.utf-8 - DOCKER_HOST=tcp://docker-in-docker:2375 # Переменные для доступа к hub-pipeline - PIPELINE_SERVICE_NAME=${PIPELINE_SERVICE_NAME} - PIPELINE_SERVICE_HOST=${PIPELINE_SERVICE_HOST} - PIPELINE_SERVICE_PORT=${PIPELINE_SERVICE_PORT} volumes: - ./ssh-pub-keys-all:/home/ubuntu/.ssh - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone - ./certs:/tmp/certs restart: on-failure:5 cpu_shares: 2048 deploy: resources: limits: memory: 3072M docker-in-docker: image: registry.appsec.global/public/sfs-docker:19.03.3-dind container_name: docker-in-docker privileged: true volumes: - ./docker-certs:/etc/docker/certs.d - /sys/fs/cgroup:/sys/fs/cgroup environment: - DOCKER_TLS_CERTDIR= networks: - net-hub pids_limit: 100 restart: on-failure:5 cpu_shares: 512 deploy: resources: limits: memory: 512M pids: 100
Файл docker-compose.yml должен содержать количество сервисов
hub-pipelne-agent
по количеству пайплайн-агентов, под каждый агент должен быть создан свой сервис. Пример фрагмента файла docker-compose.yml для конфигурации с использованием двух пайплайн-агентов:... # Для hub-pipelne-agent-1: - GRPC__ID=${GRPC_ID_1} - GRPC__NAME=${GRPC_NAME_1} - GRPC__TAGS=${GRPC_TAGS_1} - GRPC__PORT=${GRPC_PORT_1} - GRPC__ADDRESS=${GRPC_ADDRESS_1} ... # Для hub-pipelne-agent-2: - GRPC__ID=${GRPC_ID_2} - GRPC__NAME=${GRPC_NAME_2} - GRPC__TAGS=${GRPC_TAGS_2} - GRPC__PORT=${GRPC_PORT_2} - GRPC__ADDRESS=${GRPC_ADDRESS_2} ...
-
Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию — /opt/apphub), выполните следующую команду.
docker-compose pull
-
После загрузки образов запустите систему.
docker-compose up -d
Обновление при установке AppSec.Hub и Jenkins на разных хостах
Важно!
При установке AppSec.Hub и Jenkins на разных хостах сервис `hub-pipelne-agent` при установке должен быть установлен на отдельной ноде.
-
Остановите AppSec.Hub.
cd /opt/apphub sudo docker-compose down
-
Добавьте в конец файла config/hub-core/app.properties следующую строку (см. «Приложение 4. Конфигурационный файл app.properties»).
hub.osa.issues.import.cron.expression=${osa.issues.import.cron.expression:0 0 5 * * *}
-
В конфигурационном файле /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env») укажите новые версии образов:
hub_core_version=2025.1.3 hub_ui_version=2025.1.3 hub_air_version=2025.1.3 hub_db_version=2025.1.3 hub_gateway_version=2025.1.3 hub_issue_rule_version=2025.1.3 hub_issue_version=2025.1.3 hub_sso_version=2025.1.3 hub_metrics_version=2025.1.3 hub_metrics_bridge_version=2025.1.3
И добавьте строки:
hub_pipeline_version=2025.1.3 rabbitmq_version=3.13-management-alpine
-
Выполните последовательность шагов, описанных в разделе «Настройка пайплайн-агентов на удаленном хосте с безопасным соединением TLS».
-
Выполните последовательность шагов, описанных в разделе «Настройка SSL-соединения для доступа в hub-pipeline».
-
Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию — /opt/apphub), выполните следующую команду.
docker-compose pull
-
После загрузки образов запустите систему.
docker-compose up -d
Oбновление AppSec.Hub Engine (Jenkins)
Важно!
Начиная с версии 2024.4.1, если планируется использование инструментов PT Application Inspector или CodeScoring, необходимо подготовить Docker-образ по инструкции, приведенной в разделе «Добавление в Docker-образ hub-engine агентов Johnny и PT AISA».
-
Остановите Jenkins.
cd /opt/jenkins sudo docker-compose down
-
Укажите новые версии образов в файле .env.
hub_engine_manager_version=2025.1.3 hub_engine_version=2025.1.3
-
Загрузите новые версии контейнеров.
docker-compose pull
-
После загрузки образов запустите систему.
docker-compose up -d