Сайты

Управляемые дополнения: Postgres и Redis

The Addons tab lets you attach a managed PostgreSQL database or a managed Redis instance to a site without building or maintaining a server for it. Kapsule provisions it, gives you a connection…

Вкладка "Addons" позволяет подключить к сайту управляемую базу данных PostgreSQL или управляемый экземпляр Redis без необходимости создавать и поддерживать собственный сервер. Kapsule подготавливает его, предоставляет строку подключения и аккуратно удаляет её при удалении дополнения.

Где находятся Addons

Откройте Websites, нажмите на сайт, откройте меню Settings на вкладке сайта и выберите Addons. Страница озаглавлена Managed addons.

В каталоге есть два варианта:

ДополнениеТипичное использование
PostgreSQLОсновное хранилище данных для приложения, которое не использует MySQL
RedisКэширование, хранилище сессий и очереди фоновых задач

Это отличается от базы данных MySQL, которая идёт в комплекте со стандартным хостингом. Она находится на вкладке Files, затем Database и не требует подготовки: см. Подключение к вашей базе данных через SSH туннель.

Страница управляемых дополнений для сайта в KPanel

Запрос дополнения

  1. Найдите дополнение в разделе Add a managed database.
  2. Нажмите Add to site.

Запрос записывается немедленно, и дополнение появляется в Your addons с логотипом PENDING и заметкой Waiting for provisioner. Страница автоматически обновляется каждые пятнадцать секунд, поэтому вы можете оставить её открытой.

Фоновая задача подбирает запросы в режиме ожидания каждые несколько минут, создаёт выделенную базу данных и выделенного пользователя для вашего сайта, а затем записывает зашифрованную строку подключения. Статус затем переходит в ACTIVE.

Запрос или удаление дополнения требует разрешения sites:write. Члены команды только для чтения могут видеть, какие дополнения существуют и их статус, но кнопки скрыты.

По одному каждого типа на сайт

Сайт может содержать одно дополнение PostgreSQL и одно дополнение Redis. Запрос второго дополнения того же типа отклоняется с сообщением о том, что оно уже подготовлено, а каталог скрывает опцию после её установки. Когда оба установлены, раздел каталога читается как All available addons are installed.

Чтение статуса

СтатусЗначение
PENDINGЗапрошено, находится в очереди у provisioner
PROVISIONINGСейчас создаётся
ACTIVEГотово к использованию
FAILEDПодготовка не завершена; причина указана в строке
DELETEDУдалено, больше не отображается в списке

Строка FAILED показывает фактический текст ошибки под ней вместо общего сообщения. Если причина не входит в число того, на что вы можете повлиять, скопируйте её в открытый тикет поддержки: см. Открытие тикета поддержки.

Получение строки подключения

Когда дополнение становится ACTIVE, его строка показывает замаскированную строку подключения с паролем, заменённым на точки, чтобы вы могли подтвердить хост и имя базы данных с первого взгляда без раскрытия учётных данных.

Нажмите Copy connection, чтобы поместить полную строку подключения в буфер обмена. Она расшифровывается на стороне сервера для этого одного запроса и никогда не печатается на странице, поэтому совместное использование экрана и скриншоты не раскрывают её. Каждое раскрытие записывается в журнал аудита сайта и отображается в журнале активности сайта.

Строка находится в обычной форме URL для каждого движка, содержащей хост, порт, пользователя, пароль и имя базы данных, которые были созданы для этого сайта.

Использование в вашем приложении

Вставьте строку подключения туда, где ваше приложение читает свою конфигурацию. На сайте Node.js правильное место для неё - вкладка Secrets, под ключом, таким как DATABASE_URL или REDIS_URL, в окружении production.

Не жёстко кодируйте строку подключения в файл, который вы коммитите. Она содержит живой пароль. Если она достигнет удалённого репозитория, её необходимо рассматривать как скомпрометированную, и единственное реальное решение - удалить дополнение и запросить новое, потому что учётные данные не могут быть повёрнуты на месте из панели.

Удаление дополнения

Нажмите Delete на строке. KPanel просит вас подтвердить и ясно говорит о том, что произойдёт: это удаляет управляемую базу данных, и данные невозможно восстановить.

Строка помечается как удалённая немедленно, и provisioner удаляет базу данных и пользователя при следующем запуске. Существующие соединения будут разорваны как часть этого процесса.

При удалении управляемого дополнения не делается резервная копия, и нет отката. Если в нём что-то есть, что вы хотите сохранить, выгрузите это сначала с помощью pg_dump или redis-cli --rdb, пока дополнение ещё активно и строка подключения ещё работает.

Выбор между вариантами

Используйте PostgreSQL, когда ваше приложение нуждается в реляционной базе данных и написано для Postgres: сильные ограничения, транзакции, JSON колонки и полнотекстовый поиск, который вам иначе пришлось бы добавлять отдельно.

Используйте Redis для того, что можно позволить исчезнуть: кэшированные фрагменты, счётчики лимитов частоты запросов, хранилище сессий и очереди задач. Относитесь к нему как к быстрому и летучему, а не как к системе записей.

Используйте встроенную базу данных MySQL для WordPress и для всего, что уже написано для MySQL. Добавление дополнения Postgres к сайту WordPress ничего полезного не делает, потому что WordPress не может с ним разговаривать.

Устранение неполадок

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

Подготовка завершилась с FAILED. Прочитайте ошибку на строке. Удалите неудачное дополнение и запросите его снова, что безопасно: неудачная строка никогда не имела живую базу данных за ней.

Copy connection ничего не делает. Некоторые браузеры блокируют записи в буфер обмена, когда вкладка не в фокусе. Сначала нажмите на страницу, а затем нажмите кнопку снова.

Приложение не может подключиться. Проверьте три вещи по порядку: что статус дополнения ACTIVE, что вы скопировали строку вместо её переввода, и что ваше приложение читает значение, которое вы действительно установили, а не старое из предыдущего развёртывания. Обычно требуется перезагрузка, прежде чем новая конфигурация будет воспринята.

Соединения отклоняются после повторного развёртывания. Подтвердите, что строка подключения в вашей конфигурации по-прежнему совпадает с той, что на этой странице. Удаление и повторный запрос дополнения создаёт нового пользователя и новый пароль, поэтому старая строка не будет работать.

Что дальше

Вам всё ещё нужна помощь?

Напишите нам на support@kapsulehost.com или откройте чат в KPanel.

Открыть KPanel
Управляемые дополнения: Postgres и Redis