Среда разработки на базе kubernetes

Для разработки достаточно сделать однонодовый кластер kubernetes. Где он будет располагаться не важно. В моём случае это будет виртуальная машина 8CPU 16Gb RAM.

Планируемые приложения

Все необходимые для разработки приложения планируется размешать к kubernetes.

В качестве дистрибутива kubernetes будет использоваться k3s.

Планируемые приложения:

  • Gitlab.
  • Gitlab runner.
  • Harbor.
  • Контейнер с инструментами разработчика.
    • Доступ по ssh.
    • Домашняя директория пользователя смонтирована как внешний том.
    • Установленные инструменты разработчика (компиляторы, доп утилиты) в домашнюю директорию пользователя.
  • База данных PostgreSQL без кластера.
  • Minio.
  • ArgoCD.

И т.д. и т.п.

Первое видео из серии

В публичном доступе уже 7 серий из 10. Все серии доступны на Boosty.

Termister

Таки купил себе МакБук Аир. В основном из-за длительной работы от батарейки. Хорошая коробочка.

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

Сел. Подумал. Я администратор или куда? Написать для себя необходимые для работы утилиты — это нормальное для хорошего администратора решение.

Наваять полноценную программу для мак я не смогу, знаний нет. Как вариант использовать java… Решил не извращаться и написать оболочку для командной строки.

В итоге получился https://github.com/BigKAA/termister.

На маке не хватает витаминов

Решил пересесть на ноутбук с долгоиграющей батарейкой. Взял мак на М2 процессоре. День без проводов — это мощно!

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

Вобщем, пришлось написать для себя костыль на питоне. А что? Это нормальное поведение здорового Linux админа.

Termister. Оболочка над ssh. Позволяет в конфигурационных файлах сохранить списки и параметры серверов, разбитые на группы. https://github.com/BigKAA/termister

З.Ы. Хочу кнопку DEL!

k3s для разработчиков

Третье видео в серии про k3s.
«Плюшки» в k3s для разработчиков.

00:00 — Введение.
05:08 — Локальное хранилище.
15:54 — Сервис NodePort.
18:23 — Сервис LoadBalancer.
21:14 — Ingress.
26:59 — Установка приложений, Helm controller.
34:12 — Автоматическая установка приложений.
36:02 — Итого.

Файлы, используемые в видео: https://github.com/BigKAA/youtube/tree/master/k3s/01-dev

Видео:

k3s [01]

Легковесный вариант kubernetes.
Сертифицирован CNCF(Сloud Native Computing Foundation).
100% совестимый.
Оптимальный вариант для разработчиков приложений.

  • 00:00 — Введение
  • 01:41 — Почему не Rancher.
  • 02:29 — Почему k3s?
  • 03:19 — k3s сервер, агент.
  • 06:20 — Документация.
  • 10:34 — Requirements.
  • 14:34 — Конфигурационные параметры.
  • 16:15 — Параметры стенда (виртуальных машин).
  • 18:28 — Установка первого мастера.
  • 23:27 — Добавление остальных мастеров.
  • 26:06 — Добавление агентов.
  • 29:01 — Добавление кластера в Lens.

Файлы, используемые в видео: https://github.com/BigKAA/youtube/tree/master/k3s

Видео:

Пожелания программистам микросервисов для kubernetes

00:00 — Введение
03:41 — Общие вопросы
06:53 — Конфигурация приложений
10:24 — Состояния
11:49 — Логи приложений
18:20 — Метрики
20:45 — Резервирование ресурсов приложений
21:53 — Пробы
26:09 — Контекст (location)
28:04 — Безопасность
28:34 — Пример

Файлы, используемые в видео.

Видео:

Getting metrics from logs in Elasticsearch

Мне по работе надо получать события когда в логах приложений (логи у нас попадают в elasticsearch) появляются определённые сообщения. Zabbix умеет делать запросы по http. Но у нас Victoriametrics (ибн Prometheus) и хотелось бы, что бы alertmanager генерировал алерты. Но для того, что бы он смог это сделать, нужно что бы соответствующая метрика появилась в victoriametrics. Грубо говоря, нужно что бы Prometheus (или что на него похожее — vmagent) обратился к elasticsearch с определённым запросом и создал метрику. Но он зараза такое не умеет :(.

Да, можно попросить программеров, что бы они сделали нужную нам метрику у приложения. Но это хорошо когда программеры рядом и идут на встречу. Если их нет или это какое то старое приложение то ФСЁ — приплыли и рядом с victoriametrics надо ставить zabbix или что то такое…

Я честно искал приложение, которое может посылать необходимые мне запросы в elasticsearch и генерить метрики Prometheus. Но не нашёл. Возможно я плохо искал?

Вобщем мне надоело искать и я вспомнил, что нормальный сисадмин должен уметь писать вспомогательные утилиты. Я же типа нормальный сисадмин? 🙂

Заодно решил подучить go. Учить язык надо на каком то живом задании. Собственно вот, задание:

  • Приложение должно уметь посылать запросы в elasticsearch и генерировать метрики в формате Prometheus.
  • Это должен быть контейнер.
  • Должна быть горизонтальная масштабируемость. Запросов ожидается много.
  • Мы должны легко жить в kubernetes.

Итого. Программисты, не бейте меня ногами. Вы такого не написали, а мне очень надо. Поэтому родилась вот такая утилита: https://github.com/BigKAA/metrics-from-logs

Это первая версия, написанная по быстрому, на коленке. Там ещё много чего надо дописывать. Научится нормально работать с Redis и много ещё чего.

Kubernetes, StatefulSet, Nexus

Хороший пример для объяснения зачем нужен StatefulSet. Начало серии видео по devops инструментам в кубернетес. Nexus внутри kubernetes, делаем свой docker registry.

  • 03:43 — Про Nexus, общие вопросы выбора технологии деплоймента.
  • 06:40 — StatefulSet — теория.
  • 10:54 — Namespace для nexus, LimitRange на namespace, проект в rancher.
  • 13:48 — Файлы деплоя nexus:
  • 14:20 — Headless service
  • 16:25 — StatefulSet
  • 21:09 — Service, ссылка на конкретный pod в StatefulSet. Вот оно!
  • 23:28 — Ingress.
  • 26:31 — Пароль админа nexus и первоначальная настройка nexus.
  • 27:49 — Настройка репозитория для хранения docker контейнеров. Пользователи и роли.
  • 32:00 — ssl порт и сертификат для репозитория.
  • 41-05 — пушим образы!

Файлы, используемые в видео: https://github.com/BigKAA/youtube/tree/master/nexus