Настройка S3-хранилищ#

Adapter Exchange поддерживает работу с несколькими S3-хранилищами. Список S3-хранилищ и параметры подключения к ним задаются как стендозависимые параметры, применяемые при инсталляции дистрибутива на стенд. S3-хранилище для почтового ящика задаётся из данного списка администратором в административной панели.

Настройка стендозависимых параметров#

Для настройки списка S3-хранилищ необходимо внести изменения в два конфигурационных файла: mail-files.conf и mail-egress-gateway.istio.all.conf.

mail-files.conf#

В файле mail-files.conf указываются следующие параметры, относящиеся к S3:

  • mail_files.ose.configmap.data.s3.httpclient.maxConnection - максимальное количество соединений для отдельного S3-хранилища;

  • mail_files.ose.configmap.data.s3.httpclient.connectionTimeout - тайм-аут соединения для отдельного S3-хранилища, в миллисекундах;

  • mail_files.ose.configmap.data.s3.httpclient.readTimeout - тайм-аут чтения объектов из отдельного S3-хранилища, в миллисекундах;

  • mail_files.ose.configmap.data.s3.httpclient.writeTimeout - тайм-аут записи объектов в отдельное S3-хранилище, в миллисекундах;

  • mail_files.ose.configmap.data.s3.write.prefix - настройка префиксов, добавляемых к названиям файлов, записываемых в S3-хранилище. Задаётся отдельно для почтового ящика. Данный параметр опционален.

    Пример заполнения:

    mail_files.ose.configmap.data.s3.write.prefix={"test1@sber.ru": "cephKeyPrefix1/","test2@sber.ru": "cephKeyPrefix2/"}
    
  • mail_files.ose.configmap.data.s3.storages - список S3-хранилищ и настроек для подключения к ним. Настройки каждого S3-хранилища отделяются точкой с запятой, каждый параметр в настройках отделяется запятой.

    При инсталляции дистрибутива к данной строке применяется функция split для парсинга параметров, поэтому между разделителями (; и ,) не должно быть пробелов, иначе пробел станет частью параметра.

    Для каждого S3-хранилища указываются следующие 8 параметров строго в заданном порядке:

    • alias S3-хранилища. Можно задать любое значение. Запрещено использовать символ точки и двоеточия;

    • хост S3-хранилища;

    • порт S3-хранилища;

    • регион S3-хранилища;

    • URL-схема подключения к S3-хранилищу. Т.к. для всех S3-хранилищ терминация трафика происходит на Egress, укажите http;

    • базовый путь, относительно которого строится URL для подключения к S3-хранилищу.

    Пример: пускай есть S3-хранилище по хосту s3-host, в котором есть бакет bucket-1 с файлом file1.txt. Если базовый путь задан как /some-path, то Adapter Exchange будет подключаться к S3-хранилищу по следующему URL: http://s3-host/some-path/bucket-1/file1.txt.

    Данный параметр опционален. Если данный параметр не указан, применится значение по умолчанию - / (корневой путь);

    • название ключа в секрете, где хранится access key для данного S3-хранилища;

    • название ключа в секрете, где хранится secret key для данного S3-хранилища.

    Пример заполнения данного параметра для двух S3-хранилищ:

    mail_files.ose.configmap.data.s3.storages=vm-test-sy-docker-143,vm-test-sy-docker-143.vdc11.sy.dev.sbt,8000,us-east-1,http,/,S3_VM_TEST_SY_DOCKER_143_ACCESS_KEY,S3_VM_TEST_SY_DOCKER_143_SECRET_KEY;vm-test-sy-docker-142,vm-test-sy-docker-142.vdc11.sy.dev.sbt,8000,us-east-1,http,/,S3_VM_TEST_SY_DOCKER_142_ACCESS_KEY,S3_VM_TEST_SY_DOCKER_142_SECRET_KEY
    

В этом файле также необходимо заполнить следующий параметр:

mail_files.ose.hostAliases - список хостов и виртуальных IP, добавляемых в файл /etc/hosts пода и необходимых для корректной маршрутизации в Istio. В качестве значения параметра указываются записи: каждая запись состоит из виртуального IP (нужно придумать любой уникальный внутри сети кластера) и хоста S3-хранилища, отделяемых запятой; отдельная запись отделяется точкой с запятой.

Пример заполнения:

mail_files.ose.hostAliases=***.***.***.***,vm-test-sy-docker-143.vdc11.sy.dev.sbt;***.***.***.***,vm-test-sy-docker-142.vdc11.sy.dev.sbt

mail-egress-gateway.istio.all.conf#

В данный файл вносятся параметры, необходимые для настройки маршрутизации трафика к S3-хранилищам в Istio.

Необходимо задать следующий параметр:

mail_egress_gateway.ose.istio.egress.s3.storages - список S3-хранилищ и настроек организации подключения к ним.

Настройки каждого S3-хранилища отделяются точкой с запятой, каждый параметр в настройках отделяется запятой.

При инсталляции дистрибутива к данной строке применяется функция split для парсинга параметров, поэтому между разделителями (; и ,) не должно быть пробелов, иначе пробел станет частью параметра.

Для каждого S3-хранилища указываются следующие 9 параметров строго в заданном порядке:

  • alias S3-хранилища - можно задать любое значение. Запрещено использовать символ точки и двоеточия. Alias должен быть уникальным среди Istio-настроек других S3-хранилищ. При инсталляции дистрибутива поверх старой версии запрещено менять alias, т.к. в таком случае Istio-правила могут продублироваться;

  • хост S3-хранилища;

  • виртуальный IP-адрес (нужно придумать любой уникальный внутри сети кластера);

  • порт Egress, по которому происходит маршрутизация. Должен быть уникальным среди Istio-настроек других внешних хостов;

  • порт S3-хранилища;

  • pkiEngine, используемый для получения TLS-сертификатов. Можно оставить как пустое значение;

  • флаг, нужно ли получать цепочку сертификатов из key-value SecMan. Задаётся значение true или false;

  • alias сертификата - названия файлов, использующихся при TLS, которые монтируются на Egress. Должен быть уникальным среди Istio-настроек других внешних хостов;

  • Common Name сертификата, получаемого с помощью pkiEngine.

Пример заполнения для двух S3-хранилищ:

mail_egress_gateway.ose.istio.egress.s3.storages=ceph-1,vm-test-sy-docker-143.vdc11.sy.dev.sbt,***.***.***.***,2700,8000,DEV_DZO/PKI/fetch/role-ga-secman-mail,false,ceph-1,ceph-client;ceph-2,vm-test-sy-docker-142.vdc11.sy.dev.sbt,***.***.***.***,2701,8000,DEV_DZO/PKI/fetch/role-ga-secman-mail,false,ceph-2,ceph-client

Выбор нужного S3-хранилища для почтового ящика в административной панели#

Для выбора S3-хранилища необходимо зайти в настройки почтового ящика, включить галочку Отправка с вложениями и выбрать из выпадающего списка нужное S3-хранилище.

Если S3-хранилище отсутствует в выпадающем списке, его можно добавить. Для этого нужно выбрать Создать новую запись и указать URL для подключения. В URL указывается схема подключения (http или https), alias S3-хранилища, порт (опционально) и название бакета.

Примечание: после смены S3-хранилища у почтового ящика необходимо, чтобы с почтового ящика в течение нескольких секунд не отправлялись письма. Это нужно для того, чтобы старая настройка S3-хранилища очистилась из кэша.