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

Oбновление 1.10 до 2.0

AppSec.Hub (UI/Core)

  1. Укажите новые версии образов в файле .env.

    hub_core_version=2.0
    hub_ui_version=2.0
    hub_air_version=2.0
    hub_db_version=2.0
    

    Примечание

    Пример docker-compose.yml для AppSec.Hub можно посмотреть в «Приложении 9».

  2. Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию, /opt/apphub), выполните следующую команду.

    docker-compose pull
    
  3. После загрузки образов запустите систему.

    docker-compose up -d
    

AppSec.Hub Engine (Jenkins)

Для обновления AppSec.Hub Engine (Jenkins) до версии 2.0 необходимо выполнить ряд следующих действий:

  1. Укажите новые версии образов в файле .env.

    jenkins_master=2.0.1
    jenkins_node=2.0.1
    
  2. Полный пример настройки Jenkins с помощью docker-compose.yml можно взять в «Приложении 10».

  3. Для активации автоматического импорта самоподписанных сертификатов в контейнеры необходимо выполнить следующие действия.

    • Создать папку certs. Для этого в папке, указанной при установке (по умолчанию, /opt/apphub), выполните следующую команду.

      mkdir -p certs
      
    • Сохранить в certs ВСЕ корневые и доменные сертификаты с расширением .crt и назначить необходимые разрешения.

      sudo chmod 755 -R certs
      
    • Импортировать папку certs в контейнеры node-all и jenkins (через docker-compose.yml).

      volumes:
          - ./certs:/tmp/certs
      
  4. Для активации автоматического импорта самоподисанных сертификатов docker registry необходимо выполнить следующие действия.

    • Создать папку docker-certs. Для этого в папке, указанной при установке (по умолчанию, /opt/apphub), выполните следующую команду.

      mkdir -p docker-certs
      
    • Сохранить ВСЕ корневые и доменные сертификаты в ней и импортировать в контейнер docker-in-docker (через docker-compose.yml).

      volumes:
          - ./docker-certs:/etc/docker/certs.d
      
  5. Контейнеры jenkins и node-all теперь запускаются от непривилегированного пользователя. Для корректной работы необходимо выполнить команду:

    chown 1000:1000 -R jenkins_home
    chown 1000:1000 -R fortify
    
  6. Для Jenkins master ноды необходимо удалить директорию plugins с данными неиспользуемых плагинов.

    rm -rf jenkins_home/plugins
    
  7. Для контейнера node-all необходимо задать необходимые права, пользователя и группу.

    sudo chown 2000:2000 -R jenkins-slave-all
    sudo chmod 600 ssh-pub-keys-all/authorized_keys
    sudo chown 2000:2000 -R ssh-pub-keys-all
    
  8. Для корректного работы Jenkins в контейнер jenkins необходимо добавить следующие переменные окружения (полное описание переменных окружения находится в «Приложении 11»):

    environment:
        - JENKINS_URL=http://jenkins.company.com
        - JENKINS_ADMIN_USER=admin
        - JENKINS_ADMIN_PASSWORD=<some-password>
    
  9. Для улучшения работы утилиты cdxgen в контейнер Jenkins можно добавить следующие переменные окружения (полное описание переменных окружения находится в «Приложении 11»).

    environment:
        - gradle_dependency_task=dependencies
        - fetch_license=true
        - maven_home=/opt/maven
        - gradle_home=/opt/gradle
        - github_token=
        - gradle_args=
        - mvn_args=
        - cdxgen_npm_url=https://registry.npmjs.org/
        - cdxgen_maven_central_url=https://repo1.maven.org/maven2/
        - cdxgen_android_maven=https://maven.google.com/
        - cdxgen_pypi_url=https://pypi.org/pypi/
        - cdxgen_go_url=https://pkg.go.dev/
        - cdxgen_nuget_url=https://api.nuget.org/v3/registration3/
    
  10. Для корректной работы docker внутри контейнеров jenkins и node-all (без импорта Docker-сокета) был добавлен контейнер docker-in-docker:

    docker-in-docker:
        image: 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:ro
        environment:
            - DOCKER_TLS_CERTDIR=
        networks:
            - network
        pids_limit: 100
        restart: on-failure:5
        cpu_shares: 512
        deploy:
        resources:
            limits:
                memory: 512M
    
  11. Для корректной работы контейнера docker-in-docker необходимо выполнить следующие команды.

    sudo mkdir /sys/fs/cgroup/systemd
    sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
    
  12. Необходимо связать контейнеры jenkins, node-all и docker-in-docker.

    environment:
        - DOCKER_HOST=tcp://docker-in-docker:2375
    
  13. Для повышения безопасности контейнеров в файл docker-compose.yml в описание сервисов были добавлены следующие атрибуты:

    • Для Jenkins:

      user: 1000:1000
      pids_limit: 100
      security_opt:
          - no-new-privileges
      restart: on-failure:5
      cpu_shares: 1024
      deploy:
      resources:
          limits:
              memory: 2048M
      
    • Для node-all:

      user: 2000:2000
      restart: on-failure:5
      cpu_shares: 2048
      deploy:
          resources:
              limits:
                  memory: 3072M
      
    • Для docker-in-docker:

      pids_limit: 100
      security_opt:
          - no-new-privileges
      restart: on-failure:5
      cpu_shares: 512
      deploy:
      resources:
          limits:
              memory: 512M
      
К началу