Локальное хранилище MinIO
Пакет tengri-minio устанавливает на тот же сервер локальное объектное хранилище MinIO, совместимое с S3, и настраивает его для Tengri.
На этой странице описано, откуда берутся учетные данные хранилища, как их посмотреть и сменить, что происходит при обновлении и удалении пакета и как разбирать типичные проблемы.
Обзор
Пакет устанавливает сервер minio, клиент minio-client и сервис minio.service, который слушает S3-API на порту 9002 и веб-консоль на порту 9001.
При установке создаются бакеты prostore (данные Tengri) и mimir (метрики), политика prostore и служебная учетная запись public_loader с доступом только к путям Stage/ и iceberg/public/ бакета prostore.
Tengri обращается к хранилищу от имени встроенного пользователя MinIO minioadmin.
Пароль этого пользователя генерируется при установке пакета: случайная строка из 30–40 латинских букв и цифр.
Ни в одном файле пакета и ни в одном выводе установки пароль не появляется.
Где хранятся учетные данные
| Файл | Назначение |
|---|---|
|
Источник учетных данных для сервисов Tengri: |
|
Параметры запуска MinIO: |
|
Настройки Tengri, которые перекрывают |
Сервис minio.service запускается через обертку, которая собирает учетные данные из двух файлов: значение из /etc/default/tengri-minio имеет приоритет, недостающее берется из secrets.env.
Логин и пароль ищутся независимо друг от друга; если логин не задан нигде, используется minioadmin.
Расхождения между файлами обертка отмечает в журнале, не показывая самих значений.
Посмотреть текущие учетные данные:
sudo grep '^TNGRI_S3_' /etc/tengri/secrets.env
|
|
Смена пароля
-
Задайте новые значения в
/etc/default/tengri-minio(минимальная длина пароля MinIO — 8 символов):MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=<новый пароль> -
Скопируйте их в
secrets.envдля сервисов Tengri:sudo tengri-minio-sync-credentialsКоманда только копирует значения из
/etc/default/tengri-minioв/etc/tengri/secrets.env, ничего не генерирует и не перезапускает. Если вtengri.confесть отличающиеся значения, она предупредит об этом. -
Перезапустите сервисы:
sudo systemctl restart minio tengri
Пароль в /etc/default/tengri-minio после этого можно оставить, а можно удалить: secrets.env уже содержит копию, и обертка возьмет пароль оттуда.
Учетная запись public_loader при смене пароля не меняется.
|
|
Обновление с предыдущих версий
При обновлении пакет проверяет, известен ли ему пароль работающего сервера, и сообщает о результате в выводе установки:
-
Пароль ранее не задавался — генерируется новый, записывается в
secrets.env, сервисы MinIO и Tengri перезапускаются. Ничего делать не нужно. -
Пароль задан в
/etc/default/tengri-minio— он копируется вsecrets.env, генерация не выполняется. В выводе появляется сообщениеNOTICE: THE MINIO ROOT CREDENTIALS … WERE COPIED. -
Пароль неизвестен: сервер работает с паролем, которого нет ни в одном из файлов — пакет устанавливается, но
minio.serviceне запустится. В выводе появляется сообщениеWARNING: THE MINIO ROOT PASSWORD IS NOT KNOWN TO THE PACKAGES.
В последнем случае есть два пути:
-
Если пароль известен администратору — задать его в
/etc/default/tengri-minioи выполнить смену пароля. -
Если данные хранилища не нужны — остановить сервис, очистить каталог данных и переустановить пакет; при переустановке будет сгенерирован новый пароль:
sudo systemctl stop minio sudo rm -rf /var/lib/minio/* sudo apt install --reinstall tengri-minio
Диагностика
Причины, по которым minio.service не запускается, обертка записывает в журнал сервиса:
sudo journalctl -u minio -n 50
Ошибка конфигурации завершает сервис с кодом 78, и systemd не перезапускает его автоматически: после исправления файлов сервис нужно запустить вручную командой sudo systemctl restart minio.
| Сообщение в журнале | Что делать |
|---|---|
|
Пароль не задан ни в одном файле. Задайте его в |
|
В указанном файле переменная есть, но значение пустое. Задайте значение или удалите строку. |
|
Верните в файл строку |
|
Значения в файлах расходятся; сервис запускается. Если расходятся |
Проверить, что сервисы Tengri получили те же учетные данные, что и MinIO, можно клиентом от имени пользователя из secrets.env:
sudo sh -c '. /etc/tengri/secrets.env; \
MC_HOST_local="http://${TNGRI_S3_ACCESS_KEY_ID:-minioadmin}:${TNGRI_S3_SECRET_ACCESS_KEY}@127.0.0.1:9002" \
minio-client ls local'
Ожидаемый вывод — список бакетов mimir и prostore.
Удаление пакета
|
Удаление |
Пакет tengri-minio является зависимостью tengri-mimir, а тот — зависимостью tengri, поэтому команда apt remove tengri-minio удалит и их.
Переход на внешнее S3 выполняйте, задав TNGRI_S3_ENDPOINT_URL и учетные данные в /etc/tengri/tengri.conf, не удаляя пакет.