Установка с помощью Helm
Перед использованием установите менеджер пакетов "Helm" для Kubernetes и сконфигурируйте подключение к кластеру
Шаг 1: Добавьте пакет Helm
Добавьте на локальный компьютер пакет Helm:
helm repo add securitycenter https://gitlab.cybercodereview.ru/api/v4/projects/47/packages/helm/stable
Шаг 2: Обновите репозиторий с чартом
Это позволит получить информацию о последней версии нашего чарта
helm repo update
Шаг 3: Создайте файл values с настройками чарта
Перейдите в вашу рабочую папку, где впоследствии будете изменять некоторые параметры настройки чарта и создайте файл с любым наименованием, а также с расширением .yaml или .yml. Далее в качестве примера будет использоваться values.yaml.
Шаг 4: Задайте переменные настройки чарта
Далее необходимо заполнить файл values.yaml.
global: image: tag: "<актуальный_тег>" configs: configmap: variables: COOKIES_SECURE: "True" DOMAIN: "https://security-center.example.com" secret: variables: DB_HOST: "security-center-postgres" # имя Service в Kubernetes или внешний хост DB_PORT: "5432" DB_NAME: "securitycenter" DB_USER: "user" DB_PASS: "pass" # auditor-rabbitmq - имя Service в Kubernetes или внешний хост AMQP_HOST_STRING: "amqp://user:pass@security-center-rabbitmq:5672" ingress: enabled: true host: "security-center.example.com" class: nginx tls: enabled: true secretName: "<имя секрета>" annotations: labels: {}
Далее необходимо отредактировать values под Ваши нужды.
Тег
Начнем с поля global.image.tag. Чтобы узнать актуальный тег, необходимо перейти в список релизов нашего репозитория. Берем самый верхний тег, например, на скриншоте 2.7.1.
Например:
global: image: tag: "2.7.1"
Webhook для интеграции с Jira
Для настройки Webhook добавьте в файл values.yaml следующие поля:
webhook: ingress: path: "/api/v1/jira-helper/jira-event/<your-webhook>/"
Замените "your-webhook" в значении переменной на предварительно сгенерированный Webhook в Jira.
Домен
Для указания доменного имени Вашего Auditor необходимо отредактировать поле configs.configmap.variables.DOMAIN. Например:
configs: configmap: variables: COOKIES_SECURE: "True" DOMAIN: "https://security-center.example.com"
COOKIES_SECURE: переменная определяет флаг безопасной передачи cookies. Она должна быть установлена в значение True, если вы используете HTTPS.
Укажите в переменной DOMAIN хост, по которому будет доступен Security Center.
Подключение к СУБД PostgreSQL
Для настройки подключения в PostgreSQL необходимо заполнить следующие поля:
configs.configmap.variables.DB_HOST- Это может быть как именем сервиса в kubernetes, так и внешним хостом.configs.configmap.variables.DB_PORT- Порт, на котором PostgreSQL "слушает" подключения.configs.configmap.variables.DB_NAME- Имя базы данных, созданной для Auditor.configs.configmap.variables.DB_USER- Пользователь для базы данных из верхнего пункта.configs.configmap.variables.DB_PASS- Пароль от пользователя из пункта выше.
Значения по умолчанию:
configs: secret: variables: DB_HOST: "security-center-postgres" # имя Service в Kubernetes или внешний хост DB_PORT: "5432" DB_NAME: "auditor" DB_USER: "user" DB_PASS: "pass"
Чтобы поменять значения по-умолчанию(которые принимает сама Postgre), необходимо изменить следующие поля:
postgresql: auth: database: auditor username: user password: pass containerPorts: postgresql: 5432
Подключение к брокеру сообщений RabbitMQ
Данная строчка строится из нескольких частей:
amqp://\ - Не меняем, служебная часть.user\ - Логин для подключения.:\ - Разделитель для пароля и логина.pass\ - Пароль для подключения@\ - Разделитель для данных и хоста.auditor-rabbitmq\ - Либо имя сервиса в Kubernetes, либо внешний хост.:\ - Разделитель между хостом и портом.5672\ - Порт, на котором RabbitMQ "слушает" подключения.Значения по-умолчанию:
configs: secret: variables: AMQP_HOST_STRING: "amqp://user:pass@security-center-rabbitmq:5672" # auditor-rabbitmq - имя Service в Kubernetes или внешний хост
Чтобы поменять значения по-умолчанию(которые принимает именно RabbitMQ), необходимо изменить следующие поля:
rabbitmq: auth: username: user password: pass
Ingress
Ingress-контроллер - компонент Kubernetes, который управляет входящим трафиком для сервисов.
ingress.host- Доменное имя Вашего Auditor.ingress.class- Класс контроллера в Вашем кластере.ingress.tls.enabled- Включение TLS для Вашего Auditor.ingress.tls.secretName- Имя Kubernetes секрета, в котором лежит Ваш сертификат. Если верхнее полеfalse, можно игнорировать данное поле.
Значения по-умолчанию:
ingress: enabled: true host: "security-center.example.com" class: nginx tls: enabled: true secretName: "" ## Имя секрета annotations: labels: {}
Другие настройки
Секреты
При необходимости использования внешних хранилищ секретов необходимо выключить создание секретов при помощи Helm-чарта:
configs: secret: create: false
Шаг 5: Развертывание приложения в кластер Kubernetes
В примере по умолчанию используется установленный ранее ingress controller "nginx" и PostgreSQL и RabbitMQ из Helm-чарта от Bitnami:
helm upgrade --install security-center securitycenter/securitycenter -n security-center --create-namespace -f ./values.yaml
Шаг 6: Создайте пользователя с привилегированными правами
Для создания пользователя с привилегированными правами выполните следующие команды:
kubectl get pods -n <namespace> kubectl exec -it -n <namespace> <security-center-backend_pod> -c backend -- /bin/sh python3 manage.py createsuperuser --username admin
Этот пользователь и пароль позволяют выполнить вход в установленный Security Center
Следующий шаг: Запустите Security Center и добавьте лицензию