Я пытаюсь настроить Discourse для своей организации на Kubernetes. Однако я столкнулся с несколькими проблемами.
При попытке развернуть собранный образ в Kubernetes он пытается выполнить такие действия, как git pull pups и git pull discourse, что не работает, так как я нахожусь в частной сети без доступа к интернету. В результате контейнер не запускается. Есть ли способ пропустить эти этапы, чтобы я мог выполнить развертывание?
Вы уверены, что разворачиваете уже собранный образ? Похоже, вы загрузили в реестр неправильный образ.
Ах вот как, я использую образ, созданный командой ./launcher bootstrap app
Так что вы говорите, что в финальном образе после ботстрапа не должно быть таких зависимостей?
Нет, не должно. После процесса загрузки у вас будет образ local_discourse/app. Именно его нужно выгрузить в реестр и использовать в других местах.
Ещё один последний вопрос: похоже, я отправлял не то изображение, моя ошибка. Значит, после отправки нужного образа я могу изменить переменные окружения во время развёртывания в k8s? Например, DISCOURSE_DB_HOST и другие? У меня ведь есть отдельный кластер PostgreSQL и отдельный кластер Redis!
Бывало и такое. Не переживайте, это очень распространённая ошибка. Поэтому я и спросил ![]()
Ну, это сложно.
Хотя вы легко можете переопределить эти переменные — просто добавьте необходимые ENV-переменные при запуске контейнера, — во время этапа инициализации (bootstrap) выполняются миграции. Если после инициализации попытаться перенаправить образ на другую базу данных, схема базы данных станет совершенно неверной. Это приведёт вас в зону unsupported-install (неподдерживаемой установки).
У меня уже есть запущенный экземпляр Discourse, но он работает на «голом» железе. Я хочу перенести его в Kubernetes и подключить к той же базе данных, которую использовал экземпляр на bare metal.
Или, если возможно, могу ли я снова выполнить загрузку, указав DISCOURSE_DB_HOST и DISCOURSE_DB_NAME на ту же базу данных, которую использует bare metal?
Это должно сработать!
Возможно, стоит остановить текущий контейнер Discourse, подключенный к базе данных, пока вы это делаете, так как миграции могут привести к некорректной работе.
Если я создам новую пустую базу данных и выполню её настройку, есть ли возможность перенести данные через интерфейс (используя интерфейс старой и новой инстанций Discourse), например через /admin/backups? Я хочу избежать повреждения старой базы данных, так как ею пользуются многие пользователи.
Вы не можете выполнить миграцию из интерфейса.
Смотрите Представляем миграцию после развертывания. Это позволяет выполнить миграцию базы данных так, чтобы она работала как со старым, так и с новым контейнером, а затем завершить миграцию после развертывания.
Что ж, я попробовал то, что вы сказали (загрузил образ с ботами), но, похоже, ошибка осталась той же.
fatal: unable to access 'https://github.com/discourse/pups.git/': Failed to connect to github.com port 443: Connection timed out
Я нахожусь в частной сети, поэтому не могу получить доступ к github.com.
@pfaffman @Falco, это ожидаемое поведение? Я запускаю это в k8s.
Это значит, что вы снова отправили неправильный образ.
Я бы изменил внутренний файл /etc/hosts, чтобы имитировать нужные вам ресурсы… а затем добавил бы всё необходимое.
Ещё проще… подключите модем/роутер с 4G/SIM-картой. Настройте сеть так, чтобы она распознавала это устройство как маршрутизатор по умолчанию для вашей внутренней сети… подключитесь… выполните работу… отключитесь.
Это довольно просто.
С уважением,
Кит Джон Хатчисон - Ceiteach Seán Mac Úistin
Bringing Data to Life Pty. Ltd. (BD2L)
На этот раз, кажется, я уверен
Возможно ли, что где-то возникает ошибка при выполнении
./launcher bootstrap app
Кроме того, я даже попробовал использовать текущий образ Discourse, который работает на «голом железе» и хостит наш текущий сайт Discourse, и запустил его в k8s, но и это завершилось ошибкой с тем же сообщением, что и выше.
Даже на моей локальной машине при выполнении
docker run local_discourse/app
без подключения к интернету я получаю ошибку, указанную выше.