Понедельник, вторник, среда? Среда передачи данных!

Задача стояла простая – развернуть кубер в закрытом периметре. Для этого в этот самый периметр надо передать используемые контейнеры. Загрузить их в локальное хранилище оных. Банальная операция:

docker save -> ctr image import

Дальше теги, пуши и установка кубера.

И вот… Ставлю это я кубер. Запускается контейнер coredns и отваливается. Запускается и отваливается. Мягко говоря – необычная ситуация. Ясное дело, без внутреннего DNS ничего работать не будет.

Дескрайб пода показывает, что не срабатывают пробы. Судя по сообщению, очень похоже на то, когда кто-то режет подключение по сети к порту. Логов контейнер не дает, только сообщения о рестарте контейнера кубелетом из-за проваленных проб. Это очень странно.

Линукс, используемый на ноде, импортозамещенный с наворотами по безопасности. Первая мысль – опять что-то ИБ закрутило. Но нет. Там все оказалось в пределах нормы. Но время на проверку потратили много.

Дольше смотрим CNI куба. Первый раз в жизни я по логам containerd и calico отследил процесс от загрузки контейнера до выдачи поду IP адреса. Серьезно прокачал эту тему. Не то что бы что-то новое узнал, но погрузился значительно глубже чем нырял раньше.

В итоге картина: контейнер загружен, под запущен, сетевой интерфейс для пода создан, IPAM IP выделил, маршруты в таблице маршрутизации есть. В кубе это все видно. В Linux это все видно. Но не работает. Curl говорит, что отказано в подключении.

В голову полезли нехорошие мысли: потерял квалификацию, пора на пенсию, придется возвращать гонорар.

Ладно, проведем еще один эксперимент: вместо стандартного coredns, который ставит по умолчанию kubeadm, поставлю его последнюю версию. Закачали образ, намутил манифесты. Установил кубер без coredns по умолчанию. Запустил свой coredns – заработало! Эээ!

И тут я вспомнил – Telegram! В качестве среды передачи контейнера от меня к ним на первом хопе был Telegram. Где-то года полтора назад, мы через телегу перекидывали большой конфиг одного приложения. После подкидывания конфига, приложение тупо не заводилось. Обнаружили, что телега внесла изменения в файл, пока передавала его на ту сторону. Вот так вот.

Проверил контрольную сумму файла контейнера предыдущего coredns на своей машине и на сервере. Оба на! Контрольная сумма не совпадает.

Получается, что containerd запустил контейнер из битого образа! Скорее всего какой-то слой контейнера не того. (Это что получается, в файле контейнера не передаются контрольные суммы слоев?) Все остальные приложения обращаются к containerd, тот уверенно говорит: все Ок! Запущен, работает. Вот вам контейнер ID, работаем! Да уж.

Долго и витеевато матерился. Мораль:

  • — Telegramm не торт.
  • — CRC придумали не просто так.

OpenLDAP, анонс цикла видео

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

На данный момент сняты первые 4-ре видео. В свободном доступе видосики начнут появляться в Сентябре 2024 года. Смотрите анонсы премьер на моём канале в Youtube.

По традиции, все новые видео сразу выкладываются на мой канал на Boosty.

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

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

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

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

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

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

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

И т.д. и т.п.

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

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

Включение ssl в чарте bitnami kafka

Видео снято по просьбе одного хорошего человека.

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

Видео 1

Готовим поляну для экспериментов.

  • 00:00 Вступление
  • 01:29 Минимальные требования
  • 03:23 Условия задачи
  • 04:54 Немного о VSCode
  • 07:05 Создание чарта обертки
  • 22:25 Тестирование чарта (без ssl)

Видео 2

Включаем ssl.
Выписываем сертификаты.
Решаем проявившиеся проблемы.

  • 00:00 Вступление
  • 01:01 Создание сертификата CA
  • 08:05 Сертификат kafka broker
  • 14:19 Сертификат zookeeper
  • 18:00 Редактирование values файла
  • 28:10 Первый запуск
  • 30:17 Включение клиента kafka — zookeeper
  • 33:52 Разбор ошибки
  • 38:06 Решение проблемы.
  • 44:49 Вторая проблема и её решение
  • 49:07 Итого

Видео 3

Подключаем клиенты.

  • 00:00 Вступление
  • 01:55 Подключение «внутреннего» клиента
  • 02:33 Сертификат клиента
  • 06:03 Настройка Kafdrop
  • 16:05 Внешний клиент
  • 31:47 Итого

Слегка продвинутый Helm (gitflic)

Серия видео про Helm

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

Видео 1

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

Видео 2

Начинаем создавать чарт. Добавляем сабчарты redis и postgresql.
Файла values.yaml и параметры сабчартов.

Видео 3

Добавляем ConfigMap приложения gitflic. Описываем основные конфигурационные параметры.
Добавляем параметры связанные с сабчартами redis и postgresql.

Видео 4

Добавляем Job создающий базу данных, пользователя и расширения posgresql.
Тестируем запуск сабчартов postgresql и redis в кластере kubernetes.

Видео 5

Добавляем шаблоны встроенного mail relay.
Добавляем параметры, связанные с mail relay в конфигурационный файл gitflic.

Видео 6

Разбираемся, что использовать: Deployment или StatefulSet?
Какие типы volumes требуются приложению.
Создаём шаблон Deployment.

Видео 7

Создаём шаблоны StatufulSet.
Три сервиса.
Ingress

Видео 8

Calico ePBF

Использование ePBF в Calico.

  • 00:00 — Привет
  • 00:59 — Tеория
  • 07:33 — Переход на действующем кластере.
  • 11:45 — Установка нового кластера с оператором
  • 13:32 — Установка нового кластера манифестами
  • 24:35 — Проверка

Файлы, используемые в видео: https://github.com/BigKAA/youtube/blob/master/net/06-calico%20ebpf/README.md

Поддержи канал на https://boosty.to/bigkaa

Это видео на других площадках:

Calico NetworkPolices HostEnpoints

Firewall в кластере kubernetes.
Как защитить периметр кластера при помощи calico.

  • 00:00 — Привет
  • 02:37 — Failsafe rules
  • 06:58 — API version and Lens
  • 08:14 — HostEndpoint
  • 13:32 — preDNAT и applayOnForward
  • 19:07 — ТЗ
  • 24:42 — Пишем GlobalNetworkPolices
  • 32:31 — Ошибочка вышла.

Файлы, используемые в видео: https://github.com/BigKAA/youtube/blob/master/net/05-NetworkPolicy-calico/Hep.md

Поддержи канал на https://boosty.to/bigkaa

Это видео на других площадках:

Calico Network Polices [02]

Firewall в кластере kubernetes.
Calico GlobalNetworkPolicy.

  • 00:00 — Привет
  • 01:35 — Чуток теории
  • 03:07 — DenyAll
  • 11:35 — Пробуем применить
  • 25:10 — Если не поняли, смотрите тут

Update: Нашел, почему всегда открыт порт 6443.

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

Поддержи канал на https://boosty.to/bigkaa

Это видео на других площадках:

Calico Network Polices [01]

Firewall в кластере kubernetes.
Написание стандартных политик при помощи calico NetworkPolicy.

00:00 — Теория
07:18 — Calicoctl
12:06 — Тестовый стенд
14:06 — DenyAll
21:57 — Action Allow
25:48 — CRD и документация
32:38 — Продолжаем

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

Поддержи канал на https://boosty.to/bigkaa

Это видео на других площадках:

Kubernetes Network Polices

Firewall в кластере kubernetes.

00:00 — Теория
04:38 — Тестовый стенд
11:22 — Deny All
19:18 — Подключение из namespace
27:47 — Две политики
32:28 — Два правила в одной политике
34:59 — Порт
36:21 — Egress
43:45 — Заключение

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

Поддержи канал на https://boosty.to/bigkaa

Это видео на других площадках: