Хочется странного, или запускаем кубернеты на 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/схожем хранилище, дающим делать свои сайты за копейки.
Читать далее