Libelektra: создать живую демонстрацию веб-интерфейса

Созданный на 12 апр. 2018  ·  49Комментарии  ·  Источник: ElektraInitiative/libelektra

Веб-интерфейс сейчас находится в довольно стабильном состоянии (открыты только небольшие ошибки, см. № 1892), поэтому мы можем начать создавать живую демонстрацию.

Сценарий развертывания должен быть очень похож на то, что у нас уже есть для нашей домашней страницы, в основном это:

  • компилировать с -DTOOLS = ..; web
  • сделать установку
  • kdb run-elektrad &
  • kdb run-web &

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

Такая живая демонстрация может быть одной из лучших рекламных роликов, если она хорошо работает. Что вы думаете?

help wanted question

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

Единственный реалистичный план для этого выпуска - создать и разместить образ докера с ручной сборкой web-ui.

@omnidan Ты можешь это сделать?

пасека elektrad + web также будет частью этого.

@omnidan у тебя было время поработать над этим или видео?

Я уже сделал видео: https://drive.google.com/open?id=13dSC0ereCQGusrwlIodaDostW6eEes72

Я попробую создать образ докера с установленным веб-интерфейсом. Есть ли уже образ докера, в котором установлена ​​libelektra? Где бы мы разместили образ докера?

Спасибо, видео отличное! Если вам случится иногда снимать другое видео, было бы отлично иметь видео без учеников в качестве примера: smile: (например, редактирование / etc / hosts)

Как лучше всего разместить видео, чтобы его можно было легко воспроизводить в разных браузерах? (В приведенной выше ссылке два браузера не смогли воспроизвести его напрямую.)

У меня есть установка nextcloud, мы могли бы попробовать ее там.

Или дело только в формате видео?

Есть ли уже образ докера, в котором установлена ​​libelektra?

См. Скрипты / докеры для создания образов.

Где бы мы разместили образ докера?

У нас есть собственный реестр докеров на https://hub.libelektra.org, но, насколько мне известно, он еще не общедоступен. @ingwinlu знает об этом больше.

@ markus2330 Я загрузил его на YouTube (не в списке), он должен работать во всех браузерах: https://youtu.be/lLg9sk6Hx-E

Почему не в списке?

@ markus2330 Я могу сделать это общедоступным, я просто подумал, что вы хотите использовать его только для встраивания на веб-сайт.

Паблик мне подходит. Мы можем встроить его в следующие примечания к выпуску или даже опубликовать в качестве комментария к текущим реакциям на примечания к выпуску?

Что такое стандартная лицензия YouTube?

Не знаю, поменял на CC BY

Я думаю, что образ докера с предустановленной полной (и последней) версией Elektra может быть очень полезен для многих (демонстрационных) вариантов использования (не только для веб-интерфейса).

Так что я очень хочу иметь такой образ докера: wink:

@omnidan, вы можете использовать растянутый базовый образ и устанавливать пакеты из нашего репо. Это должно быть довольно быстро и чисто.

Однако у вас не будет доступа ни к каким функциям, которых еще нет в пакетах debian.

Спасибо за вклад.

К сожалению, пакеты Debian пока не включают веб-интерфейс. И это было бы довольно сложно сделать (есть ли здесь эксперты по упаковке nodejs?).

И установка частей Elektra в виде пакетов и других частей с помощью команды make install не кажется мне чистой (версии могут легко не совпадать).

@ingwinlu Можно ли разместить на a7 образ Docker, созданный @omnidan? Или вы думаете написать Dockerfile для веб-интерфейса самостоятельно?

Было бы здорово иметь образ dockerfile + (возможно, в общедоступном реестре Docker, если мы хотим, чтобы наш реестр оставался закрытым?) С установленной последней версией Elektra.

Репозиторий a7 не настроен для публичного доступа. И если он не нужен системе сборки, имеет смысл поместить его в общедоступный реестр докеров.

Итак, план состоит в том, чтобы разработчики пересобирали свои собственные образы докеров? Или мы должны поместить все изображения в публичное репо?

Есть ли потенциальный вред, если мы разрешим доступ только для чтения?

Итак, план состоит в том, чтобы разработчики пересобирали свои собственные образы докеров?

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

Или мы должны поместить все изображения в публичное репо?

Это сильно замедлит систему сборки при обновлении образов.

Есть ли потенциальный вред, если мы разрешим доступ только для чтения?

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

@ingwinlu Да, задание, которое загружается в общедоступный реестр, кажется хорошим вариантом. Или у нас может быть два реестра?

@omnidan Можно ли написать Dockerfile для веб-интерфейса?

@ markus2330 Я создал Dockerfile и отправил его в PR # 2032. Я также создал группу elektra в реестре докеров (я могу добавить вас в качестве владельца, если вы дадите мне свой идентификатор докера), опубликовал контейнер elektra/web:1.4.0 в реестр докеров и обновил документацию информацией о том, как запускать elektra web через докер и как создавать новые контейнеры / выпуски.

@ingwinlu можно ли разместить этот образ докера на v7? (Чтобы он автоматически запускался при запуске сервера?)

Конечно.

@omnidan, ты тоже можешь нажать на: latest? Затем я настрою его, чтобы автоматически проверять наличие новых версий, помещенных в: latest, и повторно развернуть его, если есть обновление.

@ markus2330 вы можете указать DNS-запись на a7. что-то вроде webui или webdemo может быть ?.

@ingwinlu Большое спасибо!
webui.libelektra.org webdemo.libelektra.org вскоре должен указать на a7.

@omnidan Веб-интерфейс может быть более интересным, если вы создадите несколько точек монтирования в изображениях. kdb mount-info и kdb mount --with-recommends /etc/hosts system/hosts hosts были бы хорошим началом!

@ingwinlu, вы уже можете использовать :latest , он использует :1.4 прямо сейчас (опубликует :1.5 в последний раз, когда PR будет объединен)

Я бы предпочел, чтобы у нас сразу была 1.5, от тестирования 1.4 сейчас мало толку. Я думал, слияние не нужно?

@omnidan , похоже, вы неправильно понимаете, как работает тег latest : https://medium.com/@mccode/the -misunderstanding-docker-tag-latest-af3babfd6375

https://hub.docker.com/r/elektra/web/tags/ не показывает latest . Вам нужно явно подтолкнуть его.

Спасибо, что указали на это!

Можете ли вы запустить docker image 1.5.0-beta на a7, чтобы нам было что попробовать завтра на собрании?

http://a7.complang.tuwien.ac.at : 33334 /

Я не мог отменить прокси-сервер, поскольку порты жестко запрограммированы (и это не будет работать с текущей настройкой). Также обратите внимание, что elektra работает в контейнере от имени пользователя root, что мне чертовски неудобно.

http://webui.libelektra.org : 33334 / тоже работает! Спасибо 100 раз.

Также обратите внимание, что elektra работает в контейнере от имени пользователя root, что мне чертовски неудобно.

Не волнуйтесь, это не root (а 999) и в системные ключи записать даже нельзя: could not create configuration directory: Could not create directory "/etc/kdb", because: "Permission denied" uid: 999, euid: 999, gid: 999, egid: 999

Да, но он не проксируется, поэтому и https. Он просто приспособлен для бега
сейчас, но в долгосрочной перспективе не будет.

markus2330 [email protected] schrieb am Fr., 1. июня 2018, 10:38:

http://webui.libelektra.org : 33334 / тоже работает! Спасибо раз.

Также обратите внимание, что elektra работает как пользователь root в контейнере, который
мне чертовски неудобно.

Не волнуйтесь, это не root (а 999) и даже не возможно
запись в системные ключи: не удалось создать каталог конфигурации: не удалось
создайте каталог "/ etc / kdb", потому что: "Permission denied" uid: 999, euid:
999, gid: 999, egid: 999

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ElektraInitiative/libelektra/issues/1901#issuecomment-393810941 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AEOv-lxXTk85wCl8ipo7okci3PKztfWhks5t4P1jgaJpZM4TRVIf
.

порты жестко запрограммированы

Проблема здесь в том, что мы запускаем elektrad и webd в одном контейнере, что противоречит принципам докеров. Таким образом, я могу настроить только один из двух портов (хотя этого должно быть достаточно, если у нас все в порядке с включенным elektrad: 33333)

Также обратите внимание, что elektra работает в контейнере от имени пользователя root, что мне чертовски неудобно.

Я специально позаботился о создании и использовании пользователя elektra в Dockerfile, если я не сделал что-то не так?

Да, извините за поспешное сообщение (я полностью заполнен встречами на этих выходных + мой последний PR сломал основные сборки).

С текущим Dockerfile есть две большие проблемы:

несколько процессов :
хотя вы уже сказали, что это противоречит «принципам», это в основном считается принципом, потому что если вы нарушите правило, вам нужно понять, что происходит и почему это проблема.
Вы создаете сценарий оболочки, запускающий два процесса. Этот сценарий оболочки запускается через PID 1. Это особенный вариант для Docker, поскольку он используется как система инициализации, известная вам по традиционным ОС. Следовательно, это pid, который должен контролировать / перезапускать / регистрировать все другие процессы, которые вы запускаете.
Для контейнеров с одним процессом это тривиально, поскольку запущенный процесс обычно делает это сам за себя. Для множественного процесса вам понадобится обертка.
Доступна некоторая документация https://docs.docker.com/config/containers/multi-service_container/
http://supervisord.org/ также очень популярен для решения этой проблемы.
Или вы посмотрите, как работают текущие контейнеры домашней страницы, которые я написал в прошлом месяце, чтобы разделить их на отдельные служебные контейнеры.

порты :
Я пробовал проксировать 33334, и у него возникли проблемы с подключением к бэкэнду, даже когда он был открыт.
Хотя я не полностью устранял проблему, я подозреваю, что это связано с тем, что местоположение бэкэнда жестко запрограммировано на что-то вроде localhost: 33334, что ломается в этом случае, поскольку контейнер фактически не отображает его на localhost, а на его случайно сгенерированном имени хоста.
Долгосрочным решением, вероятно, было бы либо установить бэкэнд на имя хоста контейнера в вашем стартовом скрипте, либо снова разделить контейнеры и просто указать интерфейс на бэкэнд.
Опять же, вы можете найти вдохновение для второго случая в наших существующих контейнерах домашней страницы (которые не идеальны, но решают эту проблему).

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

Для контейнеров с одним процессом это тривиально, поскольку запущенный процесс обычно делает это сам за себя.

@ingwinlu, к сожалению, не похоже, что Node.js делает это: / Я думаю, что это можно решить, передав флаг --init при запуске контейнеров. (https://www.elastic.io/nodejs-as-pid-1-under-docker-images/)

Я подозреваю, что это связано с тем, что местоположение бэкэнда жестко запрограммировано на что-то вроде localhost: 33334, которое в этом случае ломается, поскольку контейнер фактически не отображает его на localhost, а на его случайно сгенерированном имени хоста.

Местоположение на самом деле жестко не запрограммировано. Клиент всегда обслуживается на том же хосте / порту, что и серверная часть (webd), и он просто обращается к /api/ на том же хосте.

Я думаю, что лучший способ сделать это - разделить изображения elektrad и webd, тогда установка переменной PORT env также будет работать правильно.

node.js на pid 1

Я бы не стал доверять --init . Но процесс обертки, подобный описанному в статье, звучит нормально.

Местоположение на самом деле жестко не запрограммировано. Клиент всегда обслуживается на том же хосте / порту, что и серверная часть (webd), и просто обращается к / api / на том же хосте.

Опять не успел отладить. Я настроил 33334 для обратного прокси на одном из адресов, которые мы указали на a7. Это приводило к сбоям при загрузке веб-сайта, поскольку он не мог получить доступ к адресу, который необходимо загрузить. То же самое относится и к показу 33333: 33333 напрямую, а 33334 проксируется через обратный прокси на 443 (https).

Итак, новый план:

  1. @ingwinlu создает минимальный файл @omnidan, можете ли вы предоставить нам доступ к реестру docker.com для elektra? Вам нужно что-то еще, кроме имен учетных записей ?)
  2. На основе этого образа @omnidan (с обзорами @ingwinlu) создает еще три файла / образа Docker, которые создаются тем же заданием сборки (или его расширениями):

    1. расширенное изображение с полной Elektra (чтобы сделать веб-интерфейс более интересным),

    2. расширенное изображение с elektrad (для живой демонстрации, часть 1)

    3. расширенное изображение с клиентом / вебом (для живой демонстрации, часть 2)

В качестве конечного продукта у нас есть задание сборки, которое создает четыре образа Elektra для каждой фиксации в мастере:

  1. минимальный для минималистов (или с небольшой пропускной способностью)
  2. полное тестовое изображение Elektra (для тех, кто пробует Elektra)
  3. изображение, которое запускает elektrad (для нашей живой демонстрации и людей, пробующих веб-интерфейс)
  4. изображение, которое запускает клиент / веб (для нашей живой демонстрации и людей, пробующих веб-интерфейс)

Это нормально для вас двоих?

Вам нужно что-то еще, кроме имен учетных записей?

Мне нужны ваши имена пользователей в Docker Hub, вот и все.

На основе этого изображения

Уже готово?

Спасибо, мое имя пользователя Docker Hub (идентификатор Docker) - markus2330

https://hub.docker.com/u/elektra/ говорит, что у elektra / web уже было более 10 тысяч запросов. Это так популярно или наша установка что-то делает неправильно?

@ingwinlu Можно ли

сервер сборки не имеет никакого отношения к webui.libelektra.org.

он был настроен так, чтобы всегда получать последний тег 1.5.0-beta. Я изменил его так, чтобы он использовал: последний сейчас.

См. Выше, я предложил план создания и публикации образов докеров, поэтому они должны быть связаны.

Вы имеете в виду, что сервер сборки не разворачивает webui? Есть ли разница в развертывании вебуи и домашней страницы? И если да, то почему?

он был настроен так, чтобы всегда получать последний тег 1.5.0-beta. Я изменил его так, чтобы он использовал: последний сейчас.

Спасибо! Он обновляется автоматически? Когда?

См. Выше, я предложил план создания и публикации образов докеров, поэтому они должны быть связаны.

Вы имеете в виду, что сервер сборки не разворачивает webui? Есть ли разница в развертывании вебуи и домашней страницы?

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

И если да, то почему?

Потому что никто не был заинтересован в этом, по крайней мере, мне об этом не известно. Также нужно сначала ответить на несколько вопросов:

  • Откуда брать теги для изображений?
  • Как настроить выгрузку в публичный реестр?
  • Как настроить права доступа к публичному реестру?
  • Когда следует запускать сборки?
  • ...

В настоящее время я не заинтересован в его реализации, поскольку у меня есть более срочные дела.

И если да, то почему?

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

Отправить на docker.com пока можно вручную (для релизов). Но автоматизировать это было бы очень полезно.

@omnidan Вы уже добавили нас на сайт hub.docker.com? Имя пользователя: markus2330

новые разделенные образы докеров (те, которые запускают только 1 процесс) могут быть собраны, отправлены и развернуты так же, как и на домашней странице. наверное.

@ markus2330 Я добавил вас как владельца, теперь вы сможете добавлять новых участников на https://hub.docker.com/u/elektra/dashboard/teams/?team=owners

Я бы сказал, что мы сохраняем webui.libelektra.org, чтобы иметь общедоступный образ Docker.

А webdemo.libelektra.org перестраивается при каждой фиксации в мастере.

@ingwinlu Что ты думаешь?

Я поменял его на webdemo.libelektra.org в # 2110 PR

Думаю, мы можем закрыть это сейчас?

@omnidan Не могли бы вы также обновить

Вы двое отлично поработали, спасибо!

@ markus2330 да, мы можем закрыть это. Я пришлю вам быстрый PR для домашней страницы завтра!

Спасибо вам обоим, особенно @ingwinlu за то, что объяснили мне docker и jenkins и исправили мои файлы docker (от вас я многое узнал о докере!)

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

Смежные вопросы

mpranj picture mpranj  ·  3Комментарии

markus2330 picture markus2330  ·  3Комментарии

markus2330 picture markus2330  ·  4Комментарии

mpranj picture mpranj  ·  3Комментарии

mpranj picture mpranj  ·  3Комментарии