Как стать автором
Обновить

Комментарии 10

Cartridge CLI содержит удобный и унифицированный интерфейс для управления приложением и позволяет не придумывать велосипед.

Да весь этот картридж состоит из сплошных велосипедов:
* сборка Докер образа через `cartridge pack docker`, который внутри себя генерит какой-то Докерфайл, который непонятно как работает. В темплейте приложения присутствуют пустые темплейты докерфайла. Попытка обвязать это всё в CI выливается в нехилый такой велосипед. А ведь можно было просто добавить чистый Dockerfile
* в instances.yml описаны инстансы на локалхостах которые "запускаются командой cartridge start" - вы там docker-compose впилили ещё в картридж?
* в статье ни слова о том, как управлять реальными инстансами, а только всё на кошках, которые подняты локально
* как подключиться к уже существующему кластеру не описанному в instances.yml и поглядеть его состояние? не, я увидел команду connect, но я подключаюсь напрямую в cli чего-то (то ли тарантула, то ли картриджа). На help меня шлют в документацию. А добавить хелпа по командам не судьба? Хотелось бы увидеть, что там с удалённым кластером то творится без залезания в cli
Я попробовал:

  • описал сервера в instances.yaml.

  • Сделал cartridge replicasets list.

  • Получил: ⨯ Failed to find some instance joined to cluster: No running instances found

Что там было про "не придумывать велосипеды"?

Там ещё много чего можно было бы перечислить, но не хочется. Документации много, прям много. Но толку от неё вообще мало.
Попробуйте найти список переменных окружения используемых для конфигурации тарантула в контейнере картриджа. В документации этого я не нашёл. Знаете где? В файлике cartridge.yaml во вновь сгенерённом приложении. С одной стороны логично, с другой - в документации опишите.

в instances.yml описаны инстансы на локалхостах которые "запускаются командой cartridge start" - вы там docker-compose впилили ещё в картридж?

Cartridge -- не только ценный мех фреймворк, но и обвязка из инструментов для работы с кластером Tarantool, cartridge-cli. cartridge start - это часть cartridge-cli. Уже есть развёрнутая статья о том, что такое cartridge-cli: https://habr.com/ru/company/mailru/blog/548228/

в статье ни слова о том, как управлять реальными инстансами, а только всё на кошках, которые подняты локально

Используйте ansible. Об этом у нас уже написаны отдельные развёрнутые статьи:
https://habr.com/ru/company/mailru/blog/478710/
И даже прям реальный кейс прода на 500 инстансов, совсем не "на кошках":
https://habr.com/ru/company/mailru/blog/543086/

как подключиться к уже существующему кластеру не описанному в instances.yml и поглядеть его состояние?

Используйте cartridge connect: https://www.tarantool.io/ru/doc/latest/book/cartridge/cartridge_cli/#usage

Используйте ansible. 

Да, я видел. Теперь расскажите как раздеплоить ваш тарантул через докер контейнеры. Ваша роль такого не умеет. Моя инфраструктура не предполагает деплой приложений вне докера.

Используйте cartridge connect:

Это называется издевательство. Я же отписал в комментарии - я попадаю в консоль картриджа. И? Что мне с этой консолью делать? запрос хелпа опять шлёт в документацию тарантула - где хочешь там и ищи команды.
В документации (по вашей ссылке) ссылка на "enter and connect" - выдаёт 404 ошибку - такой страницы не существует.
Это называется Уровень сопровождения и тех документации - он крайне низкий, если не сказать никакой.

По поводу деплоя на 500 инстансов

Вскоре мы нашли оркестратор, который не требует постоянных root-привилегий — supervisord.

Шёл 2021 год, докер медленно сдавал позиции демонлесс утилитам, а разработка тарантула только открыла для себя supervisord
Ау! Вы реально? Сразу скажу, что я сам использовал supervisord для части своих задач. Но блин, у вас картридж вроде как образы собирает, а вы на это просто забили. Но учитывая как у вас эта сборка организована, там тоже понятно всё.

Теперь расскажите как раздеплоить ваш тарантул через докер контейнеры

  1. Собираете образ с приложением с помощью cartridge pack docker или используете свой на базе нужной вам ОС, подключая репозиторий Тарантула, как описано на сайте.

  2. Описываете docker-compose.yml c указанием вашего образа / делаете docker run -d ваш_образ / прописываете образ в конфигурацию Docker Swarm, etc...

  3. ?????

  4. PROFIT!

Вроде, ничего сложного.

Что мне с этой консолью делать?

А что вы хотите сделать?

Это обычная консоль инстанса Тарантула, вы можете вызывать box.cfg, посмотреть содержимое спейсов через box.space.myspace:select(), переключиться в SQL режим, выполнить любой Lua-код, обратиться к API Cartridge или других модулей. Всё это есть в документации на сайте, а также в примерах в github и статьях тут, на Хабре.

выдаёт 404 ошибку - такой страницы не существует.

Грустно, что у нас здесь был косяк, но мы непрерывно исправляем документацию. Сообщить о таком косяке очень просто: надо выделить строчку и нажать Ctrl+Enter, а потом нажать "Отправить".

Шёл 2021 год, докер медленно сдавал позиции демонлесс утилитам

Ну так попробуйте Kubernetes operator для Tarantool.

> сборка Докер образа через cartridge pack docker, который внутри себя генерит какой-то Докерфайл, который непонятно как работает. В темплейте приложения присутствуют пустые темплейты докерфайла.

https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_cli/#build-and-runtime-images

> в статье ни слова о том, как управлять реальными инстансами, а только всё на кошках, которые подняты локально

Cartridge CLI используется для разработки локальных приложений, о чем сказано в самом начале статьи. Для управления удаленными инстансами, используйте ansible.

> Что там было про "не придумывать велосипеды"?

Команда ``cartridge replicasets`` (как и в целом Cartridge CLI) предназначена для локальной разработки. А  list у вас не работает, потому что инстансы нужно сначала поднять и настроить из топологию.

> Попробуйте найти список переменных окружения используемых для конфигурации тарантула в контейнере картриджа.

https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_cli/#docker

Команда ``cartridge replicasets`` (как и в целом Cartridge CLI) предназначена для локальной разработки.

Тогда вам просто необходимо научиться называть статьи правильно

Управляем кластером на Tarantool из командной строки

Так управляем кластером или всё же для локальной разработки?

Настройка набора реплик и failover

Да, управление через GUI нельзя называть проблемой. Для кого-то, может быть, это будет плюсом. Но я всё равно решил выделить как отдельное преимущество Cartridge CLI, и сейчас объясню почему:

Нафига всю статью рассказывать как красиво ваш CLI управляет кластером, когда ваш кластер это мулька локальная к реальности не имеющая отношения вообще?

Ну так попробуйте Kubernetes operator для Tarantool.

Знаете, первым делом это и сделали
Как оказалось он кластер не собирает. Вдруг кластер остаётся в позиции "все сервера Unconfigured". Ну и что там ваш оператор делает? Умеет из шаблонов собирать стейтфулсет манифесты?
А где конфигмапы для инстансов?
Как вы конфигурите это безобразие? Никак. Ручками похоже.

А что вы хотите сделать?

Ну например сделать так как написано в статье

cartridge replicasets list

и увидеть что там на поднятом кластере с репликами.
А не лезть в консоль и не искать какие же команды ввести. Ну вот я первый раз поднимаю кластер тарантула и вообще тарантул в глаза первый раз вижу. Вместо помощи пользователю у вас постоянные отсылки в документацию, в которой непонятно, что и как описано.
Я же писал, документация есть, её много, но она бестолковая.
Мне как новому пользователю ваш продукт непонятен, неясен, плохо документирован, имеет множество проблем на старте подготовки к старту и на базе бутстрапа.

Вроде, ничего сложного.

Так мы это и без вас знаем. Только вот по ссылке указано как установить тарантул, а не картридж.
Попробуйте запихнуть `cartridge pack docker` в докер раннер гитлаба например. Вы огребётесь. Потому, что ваш сборщик это велосипед, который собирает сначала билд образ, потом в билд образе второй образ, монтирует сам что-то куда-то из основной системы и тд. Если я верно понял вы реализовали мультистейдж на уровне своего велосипеда. FYI В докерфайлах мультистейдж уже давно реализован.

Намного правильней было бы, если бы вы просто описали процесс сборки образа без картриджа и показали, потом, как он собирает это одной командой - так было бы правильнее и логичнее. И каждый мог бы выбрать самостоятельно - собирать самому или через pack docker.

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

> Намного правильней было бы, если бы вы просто описали процесс сборки образа без картриджа и показали, потом, как он собирает это одной командой - так было бы правильнее и логичнее. И каждый мог бы выбрать самостоятельно - собирать самому или через pack docker.


Сам Cartridge не умеет собирать приложения (это фича CLI) - и это можно понять прочитав статью или хотя бы ее введение. Вы документацию так же читаете, между строк? Тогда все понятно =)

Вы уже несколько раз смешиваете понятия Cartridge и Cartridge CLI:

Cartridge - это фреймворк, с помощью которого может поднять свой кластер. В том числе, он может быть удаленным.
Cartridge CLI - специальная утилита, упрощающая жизнь при локальной разработке с использованием Cartridge.

Сборка образа картриджа описана здесь: https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_cli/#build-and-runtime-images

Вы уже несколько раз смешиваете понятия Cartridge и Cartridge CLI:

CLI - command line interface - в "народе" эта приставка ставится к утилитам которые работают в командной строке.
Зачем утилиту для локальной разработки называть именем фреймворка который используется для боевой задачи?
Вы сами вносите путаницу во всю документацию и приставка CLI и никакая другая тут вам не помогут.

Сборка образа картриджа описана здесь: https://www.tarantool.io/en/doc/latest/book/cartridge/cartridge_cli/#build-and-runtime-images

Спасибо кэп. Вместо этого можно было сделать один мультистейджовый Докерфайл и не захламлять сознание вот тем бредом, что там написан. Но вы идёте своим путём.
Хотя вот сейчас я увидел по крайней мере, что там есть ссылки на ссылки в которых описано как собирается это всё. Ок, теперь мне их этого раздербанненого документа нужно будет составить пайп сборки. Крайне непонятно при первичном чтении. Я ожидаю, что все пункты будут освещены в главе, а вы просто ссылок повыткали и радуетесь.
Да, ещё можно же просто предоставить свой офф образ и собирай туда какой хочешь картридж, там уже всё будет готово, но увы - это не про ваш продукт.

Это полноценный фреймворк, в который входит CLI-интерфейс, который сильно упрощает разработку и эксплуатацию приложений на Tarantool Cartridge.

Cartridge - это фреймворк, с помощью которого может поднять свой кластер. В том числе, он может быть удаленным.Cartridge CLI - специальная утилита, упрощающая жизнь при локальной разработке с использованием Cartridge.

Кто-то включает заднюю? Про только локальную разработку не сказано. Везде и в статье и в документации эта "утилита" позиционируется как полноценный инструмент для работы с кластером. Только постоянно забывается, что кластер оказывается локальный.
Вот потому и у вас документация хреновая - вы подменяете понятия, придумываете свои велосипеды и пытаетесь протолкнуть сырое поделие как нечто готовое к серьёзной эксплуатации.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий