LINUX.ORG.RU

Сообщения vertexua

 

Cloud-разработка в Chrome OS на ASUS Chromebit и Kubernetes+CoreOS

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

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

  • Будет глобально доступна с любой машины в мире без установки софта кроме браузера.
  • При работе с другого континента не будет ощущаться задержка при печати как было бы в vim+tmux. mosh скорее всего бы не решил проблему с vim.
  • Глобально доступны по HTTPS веб-приложения запущеные в этой среде
  • В Linux среде где запускается разрабатываемое приложение можно заменить дистрибутив на другой за несколько минут, но сохранить home.

Чтобы эксперимент был чистым все это тестируется на ASUS Chromebit со стоковой ChromeOS, 2 ГБ памяти и ARM Rockchip Quad-Core RK3288C, которая размером с большую флешку и воткнута в телевизор LG 49LB550V. Потому шрифты могут быть чуть больше чем обычно, чтобы было лучше видно на телевизоре. Устройство очень маломощное, но работает быстро потому что в ChromeOS нету дискового swap, только RAM+zRAM и если что-то не влезает, то выгружается.

Скриншоты

  • Редактор Codiad в полноекранном режиме. В принципе можно установить любой другой, но для обычного редактирование текста он подходит. Если найду такой, который потребляет мало памяти и умеет режим vim, поставлю его.
  • tmux. Вот так выглядит контейнер для разработки. Он совершенно отдельный от Codiad и я могу менять в нем дистры простым редактированием Dockerfile. В него и в Codiad примонтирован один и тот-же каталог с исходным кодом. При смене контейнера home тоже сохраняется. В данном случае в контейнере последняя версия Ubuntu, но ядро как всегда остается хостовым от CoreOS. В контейнер заранее установлены средства разработки на C++, Go, Python, NodeJS.
  • Caddy, который вы видели запущеным в контейнере. Интересная часть заключается в том, что для него создается виртуальный хост, создается Let's Encrypt сертификат и производится авторизация. Это умеет делать и сам Caddy, но он тут просто для демо. Суть в том, что в данном случае это будет делаться на уровне nginx фронтенда для любого приложения открывшего порт 8080 в контейнере
  • tmux+vim. Если работать не издалека, то вполне можно просто пользоваться tmux+vim. Плагины на него устанавливаются в home и в основном продолжают работу при смене дистра, кроме тех, которым нужна перекомпиляция.
  • Внутренности. Это Kubernetes Dashboard. В ней вы видите некоторые из упомянутых выше контейнеров и еще много чего. Для временных изменений некоторые параментры контейнеров можно менять прямо в UI, но лучше конечно через файл конфигурации.

Изначально CoreOS машина разворачивается сама по iPXE на голый диск. Если система уже была установлена, то она просто загружается. После этого по SSH необходимо загрузить ключи и некоторый набор базовых сервисов Kubernetes. Теперь кластером можно пользоваться удаленно через kubectl. Я запустил там локальный docker реестр, потому вы видите localhost в названии некоторых контейнеров. На моей машине различные сервисы работают на Alpine Linux, Ubuntu или CentOS в зависимости от того, на чем было проще настроить конкретное приложение. Если разницы нету, то я использую Alpine, так как тогда контейнеры наиболее компактны.

Цепочка загрузки такая

  • BIOS
  • PXE
  • iPXE
  • Ядро CoreOS
  • systemd
  • Docker
  • Kubernetes
  • Сервисы из публичных образов и локальный Docker реестр
  • Сервисы из локального Docker реестра

В качестве сервера использую старый Dell ноутбук с Core i7-2630QM, 8GB RAM и сломаной батареей, ибо нечего ему пылиться с таким процессором.

Если я захочу подключить второй сервер, то мне нужно сделать два действия: сделать для второго сервера облегченный конфиг без части Kubernetes демонов и придумать как монтировать диски удаленно. Пока что персистентные каталоги монтируются в хост систему, что не будет работать если сервисы будут случайно мигрировать между машинами. Но если я это сделаю, то полностью програмная виртуальная сеть на flannel будет работать полностью прозрачно и контейнеры на разных будут общаться друг с другом так же просто как и раньше. Из того что можно настроить дома поддерживаются GlusterFS+Heketi, Ceph и NFS

Среди дополнительных удобств на сервере есть связка Transmission+Plex, интерфейсы которых тоже доступны глобально. Потому я могу пойти в гости, поставить torrent дома с телефона, а потом транскодированый и оптимизированый фильм можно посмотреть на телевизоре например через Chromecast, AppleTV, PS4, XBox, Android, Windows Phone или другой способ отобразить браузер с компьютера на телевизор.

В качестве заключения скажу что мне понравился такой способ настройки домашнего сервера. Использование Docker контенеров позволяет уравнять в легкости настройки опакеченый софт из дистрибутивов и софт, который устанавливается скриптом сборки на github. Они оба могут быть завернуты в контейнер на любом дистрибутиве и потом когда более не нужны могут быть аккуратно удалены. Kubernetes очень облегчил работу с виртуальными хостами, шифрованием, перенаправлением портов, изоляцией ресурсов, перезапуском упавших сервисов и проверкой их здоровья.

 , , ,

vertexua
()

Мой домашний десктоп

Еще жду Microsoft Sculpt Desktop клавиатуру.

Такие штативы - отличная замена стола. Клавиатура стоит на подставке, которая монтируется на стул. На стуле с клавиатурой можно ездить отдельно от десктопа, никакие провода его не соединяют.

 ,

vertexua
()

Простой и удобный i3, веб головного мозга и минимализм

Вот такой у меня десктоп, все обычно, но очень удобно. Наконец-то я свалил с глючных DE и получил железно работающую систему. Никаких глюков в помине, сам i3 со всеми панелями жрет 100 МБ, и то, потому что стандартный i3status на С заменен py3status на Python. Ну и плюс нотификаторы иногда парсят веб-страницы и JSON с ЛОРа, Bloomberg и Yahoo Finance. Иначе было бы 40 МБ

Для не понимающих пользователей Gnome/KDE, зачем человеку в 21ом веке тайловый менеджер - обьясняю. Он был не нужен в 20ом веке, и даже наверное до 2010 года. А теперь у обычного пользователя есть одно приложение - браузер, в нем все остальные. У программиста обычно два приложения - браузер и терминал, в нем все остальные. Опционально что-то вроде Steam или IDEA. Но так или иначе это удобно, когда у тебя включается комп и открывается терминал и браузер сразу в нужных workspace. И можно переключаться через Win+1 и Win+2. Не надо никаких сложных комбинаций, не надо быть клавиатурным задротом, эти две комбинации - 90% взаимодействия с i3. Есть экономия места на экране, никаких глюков, никакой лишней памяти, тормозов. Один раз сварганил простой текстовый конфиг, залил на github и потом копипастишь его везде - на ноуте, на работе. Bезде одни цвета, одни комбинации, одни приложения в автозапуске и в тех же workspaces. Никакой возни.

К ней легко писать нотификаторы, как вы видите внизу. ЛОР проверяется не всякими попытками заставить RSS нормально работать, а реально проверяет URL уведомлений. Причем когда некоторое время не видит изменений, то уходит в еще более щадящий режим. Но во время активной дискуссии обновляется часто. Клик мышью по панели открывает «Уведомления» в браузере.

Gentoo, ядро последнее gentoo-sources.

SSD + systemd, скорость загрузки до логина - несколько секунд

Шрифты - Infinality, различные Droid for Powerline.

Вот софт который использую

  • roxterm - нет глупых комбинаций клавиш, которые мешают работать настоящим комбинациям клавиш в консольном софте
  • fish - удобнее подсказки, всегда могу перейти в bash, потому проблем не испытываю
  • tmux - могу заходить с рабочего ноута по ssh и кодить, не засоряя рабочий ноут. Там сразу открываются терминалы как я их оставил. Так как у меня еще есть домен через DynDNS, то могу так делать например из кафе. В ssh доступ только по ключу, потому не боюсь торчать в Интернет.
  • Pendatactyl - кто не знает, это плагин, который делает из Firefox vim. Клавиатурным фанатизмом не страдаю, но зато на экране только страница, никаких тупых панелей, табов, адресных строк.
  • Firefox - только под него есть Pendatactyl, сижу в основном в нем
  • Chrome - нужен чтобы кастить по UPnP/DLNA видео из папки с торрентами, YouTube, Google Music на Chromecast. Запускаю только для этого, и то, когда нет рядом телефона.
  • Google Doc, наконец-то могу не париться с всякими либрами и OOo и делать еще много всяческих вкусных штук
  • vim - осилил vim, чему очень сильно рад. Использую для Python/C++ домашнего говнокодинга.
  • Docker - из дому могу гонять жестко огороженые сайты для личного использования.
  • Общаюсь в Hangouts - 80% знакомых, семья. Facebook - 20%
  • systemd, Avahi, NetworkManager, Pulseaudio - не знаю зачем страдать всяким костыльным дедовским софтом, которы любят другие пользователи минималистичных десктопов, когда есть автоматизированый, современный и все равно не жрущий много памяти софт. Avahi используется для .local доменных имен

Не использую множество десктопного софта - офисы, плееры, файловые менеджеры, почтовые клиенты, GUI к архиваторам, тетрисы, просмотрщики фото, мессенджеры и прочий шлак. Планирую даже инфу о системе, из /sys и /proc в браузер пробросить, как полагается, с графиками, HTML 5, JS, CSS3 и responsive UI ;)

 , , , ,

vertexua
()

Делаю Sublime из vim

Вот нравился мне сильно Sublime, но плагины к СLang в нем не работают по нормальному.

Решил закатить рукава и осилить vim. Итого вот такой вот рабочий стол

  • clang_complete работает божественно
  • NERDTree
  • Monokai с исправленным фоном для попапа в completion
  • Настроены кнопочки для тех, кто не привык к аккордам. Почти все что нужно делается через F1-F12 почти как в паскале ) Часть комбинаций притащил из IDEA
  • Из-за фулскрина не видно дефолт ElementaryOS

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

 ,

vertexua
()

[макофил] чистый удобный десктоп

Выкладываю скрин моего десктопа.

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

Люблю английский интерфейс - слова короче, а тут еще и системный шрифт русский не поддерживает )

Вот еще несколько скринов

Ко всему именно эту систему я докрасноглазил до молниеносного старта OOo, Chromium, Nautilus, Gimp. Дольше всех запускается Gimp - 1 секунда. Использовались zen-ядро, preload, prelink, OOo Quickstarter.

Mac - не нужен.

 ,

vertexua
()

RSS подписка на новые темы