Хочется странного, или запускаем кубернеты на macOS

27 июля 2022

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

Зачем? Конечно же, потому что это круто. Но помимо этого я прочитал комментарий на оранжевом сайте, что люди запускают kube-apiserver отдельно, чтобы использовать такие концепты куберов, как reconcilliation loop1 и декларативную модель, но не для запуска приложений, а для каких-то других целей. Доказательств этому я в интернете не нашел, поэтому решил, что надо послужить примером.

Читать далее

Мой домашний датацентр, часть 2: сетевые приключения

7 марта 2022

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

Нетрудно догадаться, что если бы все решалось именно так, я бы не писал этот пост…

Читать далее

Новый блог 2: блогенье

23 января 2022

Мой блог в очередной раз переехал. Ради того, чтобы хостить 7 постов (включая этот), приходится воистину страдать. GitHub меня откровенно разочаровал своей политикой удаления моего блога из Pages без какого-либо уведомления и/или предупреждения, так что похоже, что действительно настало время двигаться на более независимые платформы. Доверять нельзя никому. Под катом вас ждут детали очередного переезда.

Читать далее

Мой домашний датацентр, часть 1: Весело, оживленно

18 января 2022

Как положено любому уважающему себя айтишнику, у меня дома стоит датацентр. Как положено любому настоящему айтишнику, датацентр в относительно прискорбном состоянии. Как положено любому уважающему себя айтишнику, я храню обещание, что однажды даже с ним разберусь. В рамках программы повторного использования техники, в качестве домашнего датацентра работает Mac Mini 2011 года под управлением Mac OS 10.15. Под катом будет рассказано, как дойти до такой жизни, и с чем мириться.

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

Читать далее

На пути к Kubernetes: от контейнеров к оркестрации. Основы Docker. Создаем контейнеры.

20 декабря 2020

Анонс цикла

Это первый пост из серии1, посвященной всему, связанному с контейнерами. Согласно концепции, посты будут представлять собой не линейную цепочку (часть 1, часть 2, часть 3, ремейк первой части, приквел), а дерево. Отправная точка - знание того, как работать в терминале, и знание какого-либо языка программирования2, последующие статьи будут содержать список материала из блога, с которым рекомендуется ознакомиться прежде, чем браться за текущую. В статьях в первую очередь будет рассказано про интерпретируемые (Python, Perl, базовые навыки абстракции помогут с остальными) языки, позже3 будут покрыты вопросы компилируемых.

Теперь перейдем к “мякотке” обсуждения: контейнеры.

Читать далее

Go, DNS, и корпоративный VPN: сага о бутылочном горлышке

10 сентября 2020

Вас ждет захватывающая история того, как несчастный девопс копался в исходниках всего, что подвернется под руку, просто чтобы заработала одна команда. В посте прячутся костыли, добро, и целая масса ковролина. Чтобы фантасмагория была понятнее, поясню: все события происходили на macOS (darwin/amd64).

Читать далее

Вот и помер Docker Swarm

21 июля 2020

Введение

Да, можно сказать, что он еще не умер, его разработка не заморожена, и в некоторых местах он все еще используется. Но в нише web-scale он однозначно был вытеснен Kubernetes. Предлагаю провести “ретроспективу”, и сказать, что он умел лучше конкурента, а где он проиграл.

Установка

В том, что касается деплоя, Docker Swarm на много порядков проще, чем Kubernetes. В качестве “движущихся частей” есть только dockerd, а все администрирование делается через docker. Создать кластер, установив docker на каждую машину можно очень просто: на будущем мастере запускается docker swarm init, который выдаст команду, с помощью которой можно присоединить воркеров. На этом установка завершается.

Сравним это с Kubernetes: установка “по старинке” настолько длинная, что пальцы успевают устать от одного пролистывания. Вместо этого предлагается использовать Ansible репозиторий, или хотя бы kubeadm. После успешной установки методом “установил и забыл” через год вас ждет сюрприз: все сертификаты истекли, и их надо заменять. Сами себе злобные буратины, что не учли? Да. Сложно ли узнать, что сертификаты надо ротировать? Да, если вы использовали готовые утилиты. В связи с этим рекомендуется хотя бы раз помучаться и поставить его своими руками полностью вручную. Почему-то с докером такого делать не надо. В его копилку за это отправляется большой плюс.

Читать далее

Самописная команда git-batch

22 января 2019

Думаю, для большинства разработчиков это достаточно стандартная ситуация, когда в папочке dev/work лежит очень много репозиториев, и следить за каждым неудобно. Есть различные менеджеры, которые утверждают, что помогут с этим разобраться, но тот же Sublime Merge достаточно куц по функционалу для того, чтобы сразу сделать какую-нибудь операцию в куче репок, например, посмотреть все ветки во всех репках чтобы вспомнить, над какими задачами еще идет работа, или же подтянуть все свежие ветки из апстрима. Но мы-то знаем, что наш лучший менеджер — это zsh, и что программа любой сложности заменяется ворохом shell скриптов! На сцену выходит очень простой, но достаточно действенный способ: команда, которую я лаского обозвал git-batch:

function git-batch() {
    OLD_PWD=$PWD
    # For simplicity let's assume my git repos have .git in them and no
    # other directory does.
    GIT_REPOS=$(find . -name ".git" | xargs -n1 dirname)
    while read -r REPO_DIR; do
        echo "$REPO_DIR:"
        cd $REPO_DIR
        # All the output is redirected to stdout and indented.
        # We can redirect stderr because the command output is tainted
        # by indent anyway.
        $@ 2>$1 | sed 's/^/  /'
        cd "$OLD_PWD"
    done <<< "$GIT_REPOS"
}
Читать далее

Новый блог

21 января 2019

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

Это событие стало достаточным поводом наконец подняться и сделать свой блог, как и полагается всем уважающим себя программистам-графоманам. Впрочем, платить за хостинг сайта, на котором будет не более 50 посетителей в месяц на какой-то VPS жаба тоже душила. Компромисс был найден, и я придумал сделать статический сайт, и захостить его на S3/схожем хранилище, дающим делать свои сайты за копейки.

Читать далее