Подготовка#
Создание ТУЗ и необходимые права для них#
Для разворачивания и функционирования программного компонента потребуются одна или несколько ТУЗ:
Для разворачивания компонента через deploy pipeline Доменный ТУЗ: да Необходимые права:
Доступ в среду оркестрации
Доступ в BitBucket для клонирования скриптов разворачивания
Доступ к Nexus для загрузки разворачиваемого дистрибутива
Доступ в Docker registry для загрузки образов сервисов
Для проверки пользователей в ActiveDirectory через LDAP: Доменный ТУЗ: да Необходимые права: права на доступ в LDAP ActiveDirectory для проверки пользователей
Для автоматического запуска миграции в СУБД: Доменный ТУЗ: да Необходимые права:
Доступ к PostgreSQL
Роль ТУЗ в ролевой модели PostgreSQL должна быть «as_admin»
Создание проектной области Jenkins#
Для создания deploy и service pipeline в Jenkins необходимо создать отдельное пространство или переиспользовать существующее.
Настройка BitBucket#
Создать в BitBucket 3 репозитория:
{код компонента}mailbridge_common{стенд} - предназначения для хранения глобальных значений стендозависимых параметров.
{код компонента}mailbridge_mail{стенд} - предназначен для автоматической миграции набора стендозависимых параметров из устанавливаемого дистрибутива компонента.
{код компонента}mailbridge_pipeline{стенд} - предназначен для локального хранения скриптов разворачивания deploy pipeline. где код компонента - любой префикс компонента, стенд - любой суффикс, например, буквенный код стенда. У всех репозиториев коды компонентов и стенды должны быть одинаковы.
Например:
ci02606786_mailbridge_common_dev
ci02606786_mailbridge_mail_dev
ci02606786_mailbridge_pipeline_dev
Примечание: После миграции скриптов автоматизированного deploy по пути {код компонента}mailbridge_pipeline{стенд}/src/ru/sbrf/devops/pipeline/PipelineUtils.groovy появляется следующая логика
if (configEnv.scriptsCustom && (script.env.ENVIR ==~ /dev.*/ || script.env.ENVIR ==~ /mmv.*/)) {
что говорит о том, что {стенд} должен содержать суффиксы dev или mmv, например {стенд} = dev_lt иначе job не выполнит миграцию.
Для ТУЗ DevOps предоставить права на push в ветку master в каждый созданный репозиторий.
В каждый созданный репозиторий сделать первоначальный commit, например, файла .gitignore в корень репозитория со следующим содержимым
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
Создание Service Account / Выпуск токенов для подключения к среде оркестрации#
Для подключения к среде оркестрации необходимо:
Создать сервисную учетную запись в среде оркестрации (ServiceAccount)
apiVersion: v1
kind: ServiceAccount
metadata:
name: {название_аккаунта}
automountServiceAccountToken: false
Создать RoleBinding в выбранном namespace c типом ServiceAccount, Subject Name название_аккаунта и Role admin (или другой необходимой с достаточными правами)
Создать секрет с типом kubernetes.io/service-account-token
kind: Secret
apiVersion: v1
metadata:
name: test-token
annotations:
kubernetes.io/service-account.name: {название_аккаунта}
kubernetes.io/service-account.uid: {uid_аккаунта}
type: kubernetes.io/service-account-token
Получить токен из созданного секрета User Management → ServiceAccounts → {название service аккаунта} → {token} → Reveal values → token
Добавление учетных данных в Jenkins Credentials plugin#
С помощью утилиты ssh-keygen сгенерировать ssh ключи с длиной 4096 бит для подключения к BitBucket.
** Генерация SSH ключей **
ssh-keygen -t rsa -b 4096
Содержимое файла с открытой частью ключа id_rsa.pub разместить в BitBucket.
Создать запись в Jenkins Credentials с типом SSH Username with private key, в которую разместить закрытую часть ключа из файла id_rsa.
Создать запись в Jenkins Credentials с типом Username with password, в которую разместить логин и пароль ТУЗ DevOps.
Создать запись в Jenkins Credentials с типом Secret text, в которую разместить пароль для файла _passwords.conf
Создать запись в Jenkins Credentials с типом Secret text, в которую разместить токен для подключения к среде оркестрации (см. п. 3.1.5. Выпуск токенов для подключения к среде окрестрации).
Подготовка СУБД#
Для настройки СУБД необходимо осуществить следующие подготовительные процедуры:
Создать табличные пространства:
emc_cfg_data
mail_ts_data
mail_ts_idx
mail_ts_lob
Создать базу данных с именем emcdb и владельцем as_admin.
Создать в базе данных схемы с именами emc_cfg, mail_crypto, mail_audit, mail_sudir и владельцем as_admin.
Установить расширение pg_cron для поддержки выполнения задач по расписанию.
Настроить pg_cron следующим образом:
Конфигурация PostgreSQL для pg_cron
cron.database_name = 'emcdb'
shared_preload_libraries = 'pg_cron'
В консоли базы данных прописать команду:
Создание extension для pg_cron и выдача гранта на схему cron
CREATE EXTENSION pg_cron;
GRANT USAGE ON SCHEMA cron TO as_admin;
Настроить pg_cron на периодический вызов процедур
create_daily_partitionsиdrop_daily_partitionsдля схемemc_cfgиmail_crypto
Подготовка хранилища файлов#
Для отправки писем с вложениями необходимо осуществить следующие подготовительные процедуры:
Получить учетные данные для подключения к серверу хранилища файлов S3 CEPH: Access key id, Secret access key, host, порт, UserID.
Создать в хранилище собственный bucket для дальнейшего использования.
Если в процессе эксплуатации компонента будут использованы сторонние bucket, то для UserID необходимы права WRITE или FULL_CONTROL на этот bucket, права добавляются в список Access Control List (ACL).
Подготовка подключения к Apache Kafka#
Для подключения к серверам Apache Kafka необходимы адреса серверов, порты для подключения, клиентский сертификат, а также названия topics, из которых компонент будет получать запросы и размещать ответы.
Параметры подключения к LDAP#
С целью аутентификации пользователей для дальнейшей авторизации в консоли управления Адаптера Exchange используется система для обеспечения централизованной идентификации LDAP. Настройки подключения к LDAP указываются в конфигурационном файле микросервиса mail-back.
Ниже приведен пример части конфигурации микросервиса mail-back для взаимодействия с LDAP:
spring:
ldap:
username: 'LDAP_USERNAME'
password: 'LDAP_PASSWORD'
base: 'DC=sigma,DC=sbrf,DC=ru'
urls: 'ldap://ldap_host:ldap_port'
ignorePartialResultException: true
Настройка интеграции с LOGA#
Настройка интеграции с Единый Аудит#
Настройка интеграции с Единый Аудит