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

Установка в кластере Kubernetes

Совместимые версии ПО

Рекомендуемое ПО Версия рекомендуемого ПО Альтернативное ПО Версия альтернативного ПО
Helm 3 - -
PostgreSQL 16+ Postgres DB (Platform V Pangolin SE) 6.x.x *
MinIO Latest * Ceph Latest *

* Используются стандартные API

Подготовка к установке

Структура дистрибутива

В директории дистрибутива присутствуют следующие основные файлы и подкаталоги:

Имя файла Описание
values.yaml Файл, содержащий значения переменных, требуемых для развертывания. Требуется ручное редактирование параметров перед развертыванием
images/solidpoint-backend.tar Образ контейнера с серверной частью
images/solidpoint-dashboard.tar Образ контейнера с веб-интерфейсом
images/solidpoint-fuchsiad.tar Образ контейнера с сервисом сканирования
chart.yaml Файл метаданных Helm-чарта
templates/ Каталог, в котором содержатся манифесты

Примечания

  • Архивы образов опциональны и не всегда поставляются в дистрибутиве.
  • Если производится обновление предыдущей инсталляции, достаточно переиспользовать ранее созданные параметры в values.yaml для баз данных и для S3-хранилища. Структуры данных и схемы будут автоматически обновлены при запуске новой версии.
  • Структура файла values.yaml может отличаться в разных версиях дистрибутива.

Развертывание баз данных PostgreSQL и S3-хранилища, как правило, производится заранее. При необходимости тестового развертывания, воспользуйтесь инструкцией, в которой для развёртывания используются заранее сформированные манифесты для MinIO и расширения TimescaleDB для PostgreSQL. Не рекомендуется развертывать базы данных в Kubernetes.

Развертывание базы данных для cервиса сканирования

Необходимо развернуть базу данных на основе PostgreSQL для cервиса сканирования со следующим списком параметров, затем занести значения в параметры файла values.yaml:

Параметр values.yaml Описание
FUCHSIAD_POSTGRES_SERVER_URL URL-адрес базы данных cервиса в формате ip:port сканирования
FUCHSIAD_POSTGRES_DB Имя базы данных cервиса сканирования
FUCHSIAD_POSTGRES_USER Имя пользователя для базы данных cервиса сканирования
FUCHSIAD_POSTGRES_PASSWORD Пароль пользователя
FUCHSIAD_POSTGRES_SSL_MODE Регулирует использование протокола SSL для соединения с базой данных

Развертывание базы данных для серверной части

Необходимо развернуть базу данных на основе PostgreSQL для серверной части со следующим списком параметров, затем занести значения в параметры файла values.yaml:

Параметр values.yaml Описание
BACKEND_POSTGRES_SERVER_URL URL-адрес базы данных серверной части в формате ip:port
BACKEND_POSTGRES_DB Имя базы данных серверной части
BACKEND_POSTGRES_USER Имя пользователя для базы данных серверной части
BACKEND_POSTGRES_PASSWORD Пароль пользователя
BACKEND_POSTGRES_SSL_MODE Регулирует использование протокола SSL для соединения с базой данных

Параметры S3-соединения для сервиса сканирования

Предварительное создание бакетов в S3-хранилище не требуется, они автоматически создаются сканером. Значения параметров нужно присвоить соответствующим параметрам файла values.yaml:

Параметр values.yaml Описание
S3_SERVER_URL URL-адрес API S3-интерфейса
S3_ROOT_USER Пользователь S3 с правами на создание bucket
S3_ROOT_PASSWORD Пароль пользователя

Загрузка образов контейнеров в корпоративный реестр образов

  1. Создайте пространство имён

    kubectl create namespace solidpoint
    
  2. Загрузите три образа из архива в среду выполнения контейнеров (Имена образов можно найти в таблице после пункта 6).

    docker load < [имя_образа]
    
  3. Загрузите образы в корпоративный реестр.

    docker push [имя_образа]
    
  4. Если корпоративный реестр доступен только с помощью аутентификации, создайте секрет в пространстве имён, в котором планируется установка приложения, например:

    apiVersion: v1
    kind: Secret
    metadata:
      name: registry
      namespace: solidpoint
    data:
      .dockerconfigjson: [config]
    type: kubernetes.io/dockerconfigjson
    

    Имя данного секрета необходимо внести в файл values.yaml.

    Параметр values.yaml Параметры в поставке. Необходимо сменить на актуальные Описание
    imagePullSecrets Параметры Секрет для доступа к корпоративному реестру
  5. Если загрузка образов планируется из корпоративного реестра поставщика, создайте секрет с данными для аутентификации (Имя пользователя и пароль при необходимости будут поставлены вместе с дистрибутивом).

    kubectl create secret docker-registry registry --docker-server=repo.solidpoint.net --docker-username=USERNAME --docker-password=PASSWORD -n solidpoint
    
  6. Для всех трех образов отредактируйте содержимое файла values.yaml как указано ниже:

    Параметр values.yaml Параметры производителя. Необходимо сменить на актуальные для внутреннего реестра Описание
    dashboard.repository repo.solidlab.ru/solidlab-dast/solidpoint-dashboard Имя образа панели управления
    dashboard.tag 26.1.0 Тег образа панели управления
    backend.repository repo.solidlab.ru/solidlab-dast/solidpoint-backend Имя образа серверной части
    backend.tag 26.1.0 Тег образа серверной части
    fuchsiad.repository repo.solidlab.ru/solidlab-dast/solidpoint-fuchsiad Имя образа сканера
    fuchsiad.tag 26.1.0 Тег образа сканера

Важно

  • В случае предварительной загрузки и получения образов через корпоративный реестр необходимо сменить дефолтные данные поставщика на имя и тег образа, которые содержатся в вашем корпоративном реестре.
  • После загрузки в корпоративный реестр при необходимости можно заменить значения параметров values.yaml на пользовательские.

Установка в кластере Kubernetes

Развертывание с помощью Helm

На данном этапе уже должен быть отредактирован файл values.yaml c актуальными параметрами. Для развертывания на сервере выполните команду:

helm install solidpoint . -f values.yaml -n solidpoint

Доступность из внешней сети

Настройте Ingress для сервиса solidpoint-dast-dashboard, чтобы обеспеченить доступность веб-интерфейса. Для этого в файле values.yaml измените значения указанных ниже полей на пользовательские в зависимости от конфигурации кластера и требований.

Параметр По умолчанию Примеры Описание
dashboard.ingress.enabled false true, false Включает или отключает создание ресурса Ingress. При значении false доступ возможен только через kubectl port-forward
dashboard.ingress.hostname Не задано https://solidpoint.example.com Адрес, по которому будет доступна панель управления. Необходимо указать, если dashboard.ingress.enabled: true
dashboard.ingress.ingressClassName Не задано nginx, traefik Указывает, какой Ingress-контроллер должен обслуживать этот ресурс. Если не указан, используется класс по умолчанию кластера

Переменные окружения

Список всех доступных переменных окружения представлен в таблице ниже.

Имя переменной Значение по умолчанию Описание
FUCHSIAD_POSTGRES_SERVER_URL Не задано Адрес сервера базы данных для сервиса сканирования fuchsiad в формате host:port
FUCHSIAD_POSTGRES_DB Не задано Имя базы данных PostgreSQL для сервиса сканирования fuchsiad
FUCHSIAD_POSTGRES_USER Не задано Имя пользователя PostgreSQL для сервиса сканирования fuchsiad
FUCHSIAD_POSTGRES_PASSWORD Не задано Пароль базы данных PostgreSQL для сервиса сканирования fuchsiad (используется только в первом варианте конфигурации)
FUCHSIAD_POSTGRES_PASSWORD_FILE /tmp/secrets/fuchsiad_db_password Путь к файлу (внутри контейнера), где будет храниться пароль базы данных PostgreSQL для сервиса сканирования fuchsiad (используется только во втором варианте конфигурации)
FUCHSIAD_POSTGRES_SSL_MODE require Регулирует использование протокола SSL для соединения с базой данных PostgreSQL для сервиса сканирования fuchsiad
FUCHSIAD_SOCKET_PORT 7075 Адрес TCP-порта сервиса сканирования fuchsiad
FUCHSIAD_SOCKET_ADDR Вычисляется на основе заданного пространства имен Адрес, по которому другие контейнеры могут взаимодействовать с fuchsiad
FUCHSIAD_CONFIG_DIR /etc/fuchsia Директория, содержащая конфигурационные файлы сервиса сканирования fuchsiad
FUCHSIAD_OMIT_JOB_LOGS false Если имеет значение true, то записи журнала задач сервиса сканирования не передаются на стандартные потоки вывода или ошибок (только сохраняются в S3-совместимое хранилище)
FUCHSIAD_LOGS_FILE /var/log/fuchsia/fuchsiad.log Если значение задано, то записи журнала сервиса сканирования дублируются в указанный файл
FUCHSIAD_CREDENTIALS_FILE /tmp/secrets/fuchsiad Если значение задано, то файл используется как дополнение к конфигурации сервиса сканирования fuchsiad. Необходимо для хранения чувствительной информации отдельно от основной конфиграционной директории, заданной переменной окружения FUCHSIAD_CONFIG_DIR (например, в директории только для чтения)
BACKEND_POSTGRES_SERVER_URL Не задано Адрес сервера базы данных для бэкенда в формате host:port
BACKEND_POSTGRES_DB Не задано Имя базы данных PostgreSQL для серверной части
BACKEND_POSTGRES_USER Не задано Имя пользователя PostgreSQL для серверной части
BACKEND_POSTGRES_PASSWORD Не задано Пароль базы данных PostgreSQL для серверной части (используется только в первом варианте конфигурации)
BACKEND_POSTGRES_PASSWORD_FILE /tmp/secrets/backend_db_password Путь к файлу (внутри контейнера), где будет храниться пароль базы данных PostgreSQL для серверной части (используется только во втором варианте конфигурации)
BACKEND_POSTGRES_SSL_MODE require Регулирует использование протокола SSL для соединения с базой данных PostgreSQL для серверной части
BACKEND_STATE_DIRECTORY /tmp/solidpoint-backend Директория, в которой хранится состояние серверной части
BACKEND_LISTEN_PORT 8085 Адрес TCP-порта серверной части
BACKEND_ADDR Вычисляется на основе заданного пространства имен Адрес, по которому другие контейнеры могут взаимодействовать с серверной частью
BACKEND_LOGS_FILE /var/log/solidpoint/solidpoint-backend.log Если значение задано, то записи журнала серверной части дублируются в указанный файл
BACKEND_DATABASE_URI_FILE /tmp/secrets/backend Если значение задано, то строка подключения к PostgreSQL считывается из файла, путь к которому указан в данной переменной, а не из переменной окружения
S3_SERVER_URL Не задано Адрес сервера S3-совместимого хранилища в формате schema://host:port
S3_ROOT_USER Не задано Ключ доступа пользователя root к S3-совместимому хранилищу (используется только в первом варианте конфигурации)
S3_ROOT_USER_FILE /tmp/secrets/s3_root_user Путь к файлу (внутри контейнера), где будет храниться ключ доступа пользователя root к S3-совместимому хранилищу (используется только во втором варианте конфигурации)
S3_ROOT_PASSWORD Не задано Пароль пользователя root к S3-совместимому хранилищу (используется только в первом варианте конфигурации)
S3_ROOT_PASSWORD_FILE /tmp/secrets/s3_root_password Путь к файлу (внутри контейнера), где будет храниться пароль пользователя root к S3-совместимому хранилищу (используется только во втором варианте конфигурации)
S3_NO_CHECK_CERT true Регулирует игнорирование самозаверенных серверных сертификатов при использовании протоколов SSL/TLS
SCAN_REPORT_GENERATOR_ADDR Вычисляется на основе заданного пространства имен Имя сервиса генерации отчётов, отображаемое во внутренней сети Docker Compose. В процессе развёртывания необходимо изменить на используемый адрес
SCAN_REPORT_GENERATOR_PORT 9090 Порт машины, на которой развёрнут сервис генерации отчётов. В процессе развёртывания необходимо изменить, если используется порт не по умолчанию
SCAN_REPORT_GENERATOR_STATE_DIRECTORY /tmp/solidpoint-scan-report-generator Указывает директорию, в которой хранятся файлы, связанные с отчётами
SCAN_REPORT_GENERATOR_LOGS_FILE Не задано Если значение задано, то записи журнала сервиса генерации отчётов о сканировании дублируются в указанный файл
INTERACTSH_DOMAIN Не задано Домен сконфигурированного interactsh-сервера. Оставьте пустым для использования внутреннего заранее сконфигурированного interactsh-сервера
INTERACTSH_TOKEN Не задано Аутентификационный токен interactsh-сервера.
• Если настроена аутентификация персонального заранее сконфигурированного interactsh-сервера, укажите его аутентификационный токен;
• Если аутентификация не настроена или используется внутренний interactsh-сервер, оставьте пустым
CHANNEL stable Указание канала репозитория deb-пакетов
TOKEN Не задано Токен для доступа к репозиторию deb-пакетов
TZ Europe/Moscow Задаёт временную зону