Kuby-core: Поддержка последних версий kubedb

Созданный на 28 апр. 2021  ·  2Комментарии  ·  Источник: getkuby/kuby-core

К сожалению, замечательные люди из AppsCode (создатели kubedb) теперь требуют, чтобы каждый пользователь получил бесплатную лицензию. Хотя kuby может делать некоторые хитрые вещи для автоматического получения лицензии, это не кажется особенно моральным (или, может быть, даже законным?). Единственное решение, которое я могу придумать, — это указать пользователю на веб-сайт AppsCode во время настройки кластера, а затем предложить им для содержимого файла лицензии. Очевидно, что это не идеально, но я думаю, что это единственный вариант, который у нас есть, если мы хотим продолжать использовать kubedb с kuby (что, я думаю, мы и делаем — это здорово).

enhancement help wanted

Все 2 Комментарий

Хорошо, здесь есть дополнительный контекст. Оказывается, самая сложная часть — это не получение лицензии программным путем (что возможно, нам просто нужно запросить у людей токен сервера лицензий, адрес электронной почты и т. д.). Сложная часть — это _обновление_ оператора kubedb и отдельных баз данных. Удаление v0.12 само по себе сложно, потому что вы, очевидно, не хотите удалять какие-либо существующие экземпляры базы данных, но в конце концов у меня это получилось. К счастью, установить v0.18 (последнюю версию на момент написания этой статьи) довольно просто с помощью Helm... но, черт возьми, очень сложно обновить существующий экземпляр Postgres или MySQL, который _уже_ работает (с нулевым временем простоя). Вот шаги, которые я (почти) сделал для Postgres:

  1. Убедитесь, что существующая база данных настроена для логической репликации, для чего требуется изменение уровня WAL (журнал упреждающей записи). Установка уровня WAL требует перезапуска pg, поэтому самый простой способ сделать это — установить количество реплик > 1, одновременно указав kubedb использовать дополнительную конфигурацию, что приведет к перезапуску. В любом случае вам нужно несколько реплик, чтобы перезапуски не приводили к простоям.
  2. Удалите старую версию оператора kubedb и установите новую, соблюдая особую осторожность, чтобы не вывести из строя существующие экземпляры баз данных. Это может быть немного сложно, поскольку k8s довольно неохотно удаляет CRD Postgres , если все еще работают экземпляры Postgres. Имеет смысл. К счастью, есть способы заставить k8 делать то, что вам нужно.
  3. Поднимите новый экземпляр postgres с WAL = logical и создайте необходимый pub/sub между старым и новым, чтобы любые записи в старой базе данных копировались в новую базу данных. Будьте осторожны, чтобы дать пользователю postgres пароль в новой базе данных, если пользователь, которого вы используете для доступа к базе данных из рельсов, _не_ postgres (Kuby использует root по умолчанию) . Это необходимо из-за того, что я считаю ошибкой в ​​сценариях инициализации kubedb. Эта новая БД, очевидно, должна иметь имя, отличное от старого, что является проблемой. Имя базы данных определяет DNS-имя, к которому подключаются рельсы, которые мы не можем изменить. Хм...
  4. Разверните приложение rails и каким-то образом направьте его на новую службу базы данных.
  5. Удалить старую базу
  6. Выгода

В настоящее время я застрял, пытаясь понять, как легко указать приложению rails новую службу базы данных. URL-адрес службы по существу жестко закодирован и не может изменяться динамически. Кроме того, новая служба базы данных не может иметь то же имя, что и существующая, поэтому нам придется где-то хранить «правильную» (может быть, аннотацию к развертыванию?) и обращаться к ней при каждой... сборке докера, потому что вот когда мы перепишем базу данных.yml? ФУ.

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

Хотя kuby может сделать некоторые хитрые вещи, чтобы получить лицензию автоматически, это не кажется особенно моральным (или, может быть, даже законным?)

Тамал хороший парень, и я не думаю, что он будет возражать, если вы расскажете пользователям подробности о том, что происходит, чтобы они не удивились, когда срок действия временной лицензии истечет в конце месяца. (? Что произойдет, когда срок действия лицензии истечет, интересно теперь? Если это означает, что резервное копирование остановлено, это может быть плохо; если это означает, что другие вещи начнут давать сбой, также может быть плохо... если это означает, что вы просто не можете создавать новые базы данных для теперь, пока лицензия не продлена, это может быть не так уж плохо.)

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

Спасибо за пошаговое руководство о том, что необходимо для обновления! У меня есть лицензия на мою KubeDB, которая щедро предоставлена ​​Team Hephy для нашего производственного кластера, и у меня есть старые базы данных, которые нуждаются в обновлении, которые никогда не запускались и не размещались в KubeDB; Я получил лицензию, чтобы научиться использовать резервные копии базы данных, у меня есть и PostgresQL, и MariaDB, tl; dr, у меня также есть работа в этой области.

Я только сейчас изучаю, как использовать правильный CSI-драйвер хранилища с моим домашним лабораторным кластером, и я ожидаю, что это будет иметь огромное значение в том, как я работаю с базами данных и улучшаю свойства аварийного восстановления моего «производственного» кластера. 🎉

Kuby также может в конечном итоге стать отличным вектором продаж для KubeDB. Не знаю, как вы к этому отнесетесь!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги