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

20 декабря 2020

Анонс цикла

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

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

  1. Гарантий не даю, может, я, подобно “циклам статей” по нейросетям покажу вам в первой части, как она выучила XOR, а потом забуду. 

  2. HTML - это не язык программирования. 

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

Читать далее