Установка драйверов и настройка SSL в Fincomtech Analytics (Docker)
Для того чтобы Fincomtech Analytics мог взаимодействовать с внешними базами данных, необходимо наличие соответствующих Python-драйверов. В базовую сборку включены только основные коннекторы. Кроме того, при работе с управляемыми базами данных (Managed Databases) в российских облаках (Cloud.ru, Yandex Cloud) требуется настройка SSL-сертификатов.
1. Установка драйвера (Docker)
Установка пакета должна быть перманентной, чтобы он сохранялся при перезапуске контейнеров. Для этого в Fincomtech Analytics используется механизм локальных зависимостей.
Порядок действий:
- Определите необходимый PyPI-пакет (например, mysqlclient для MySQL, psycopg2 для PostgreSQL или clickhouse-connect для ClickHouse).
- Создайте файл requirements-local.txt в подкаталоге docker (рядом с docker-compose.yml).
- Добавьте название библиотеки в файл:
bashecho "mysqlclient" >> ./docker/requirements-local.txt
- Примените изменения.
- Для стандартного образа: Перезапустите контейнеры.
bashdocker compose -f docker-compose-non-dev.yml up -d
- Для кастомного образа: Пересоберите с флагом обновления.
bashdocker compose build --force-rm docker compose up -d
- Для стандартного образа: Перезапустите контейнеры.
2. Специфика подключения к облакам РФ (Cloud.ru, Yandex Cloud)
Управляемые базы данных в Cloud.ru (Evolution) и Yandex Cloud по умолчанию требуют защищенного SSL-соединения с использованием их собственных корневых сертификатов (Root CA). Без этого подключение будет отклонено с ошибкой верификации.
Шаг 1: Получение сертификата
- Yandex Cloud: Скачайте корневой сертификат root.crt (или CA.pem) по официальной ссылке из документации или через консоль.
- Cloud.ru: В консоли управления выберите свой инстанс БД, перейдите в раздел информации о подключении и скачайте SSL-сертификат.
Шаг 2: Проброс сертификата в контейнер
Чтобы Fincomtech Analytics увидел файл сертификата, его нужно "пробросить" внутрь Docker-контейнера.
- Создайте папку certs в корне вашего проекта и положите туда скачанный файл (назовем его root.crt).
- Откройте файл docker-compose-non-dev.yml (или тот, который вы используете для запуска).
- Найдите сервис superset (или x-superset-image) и добавьте в раздел volumes новую строку:
textvolumes: - ./docker:/app/docker - ./certs:/app/certs:ro # <-- Добавьте эту строку
Это смонтирует локальную папку сертификатов в путь /app/certs внутри контейнера.
Перезапустите контейнеры для применения настройки томов: docker compose -f ... up -d.
3. Настройка строки подключения (Connection String)
Теперь при создании подключения в интерфейсе Fincomtech Analytics нужно указать путь к сертификату.
Вариант А: PostgreSQL (Yandex Cloud / Cloud.ru)
В поле SQLALCHEMY URI добавьте параметры SSL в конец строки:
textpostgresql://user:password@c-c9q...rw.rw.yp-c.yandex.net:6432/db_name?sslmode=verify-full&sslrootcert=/app/certs/root.crt
Где /app/certs/root.crt — это путь внутри контейнера, который мы настроили на шаге 2.
Вариант Б: MySQL
Для MySQL параметры часто задаются через JSON-конфигурацию.
- Введите базовый URI: mysql://user:password@host:port/db_name
- Перейдите на вкладку Advanced -> Security.
- В поле Secure Extra (или Engine Parameters) вставьте JSON:
json{
"ssl": {
"ca": "/app/certs/root.crt",
"check_hostname": false
}
}
Вариант В: ClickHouse
Для clickhouse-connect:
textclickhouse+native://user:password@host:port/default?secure=true&ca_certs=/app/certs/root.crt
4. Диагностика
Если подключение не проходит:
- Проверьте файл: Зайдите в контейнер docker exec -it <id> bash и выполните ls -la /app/certs/, чтобы убедиться, что файл доступен.
- Тест через curl: Попробуйте внутри контейнера проверить доступность порта облачной БД: curl -v telnet://<host>:<port>. Если соединения нет — проверьте настройки Security Groups (Групп безопасности) в консоли облачного провайдера.