Начиная с основ. Заканчивая деплоем в kubernetes.
OpenLDAP как обычное приложение на Linux сервере.
Master — Slave, Master — Master, Master — Master — Slave.
OpenLDAP containers.
OpenLDAP helm chart.
OpenLDAP и SSL, Keycloak, Linux users.
На https://boosty.to/bigkaa вышли первые три видео о kyverno.
01 —
Общие сведения о kyverno.
Дружим kyverno и argocd.
Установка kyverno
02 —
Постановка задачи.
Validating rules: patterns and deny.
03 —
Generate и Mutate rules.
Aggregated ClusterRoles
Создание шаблона для содержимого namespace.
Премьера на Youtube, Rutube, VK Video и Telegram, запланирована в Январе 2025.
Задача стояла простая – развернуть кубер в закрытом периметре. Для этого в этот самый периметр надо передать используемые контейнеры. Загрузить их в локальное хранилище оных. Банальная операция:
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, работаем! Да уж.
Долго и витеевато матерился. Мораль:
Всем добра. Решил снять не характерный для меня цикл видео. Видео об одном приложении, от основ, конфигурации до контейнеризации и кубернитизации.
На данный момент сняты первые 4-ре видео. В свободном доступе видосики начнут появляться в Сентябре 2024 года. Смотрите анонсы премьер на моём канале в Youtube.
По традиции, все новые видео сразу выкладываются на мой канал на Boosty.
Для разработки достаточно сделать однонодовый кластер kubernetes. Где он будет располагаться не важно. В моём случае это будет виртуальная машина 8CPU 16Gb RAM.
Все необходимые для разработки приложения планируется размешать к kubernetes.
В качестве дистрибутива kubernetes будет использоваться k3s.
Планируемые приложения:
И т.д. и т.п.
В публичном доступе уже 7 серий из 10. Все серии доступны на Boosty.
Видео снято по просьбе одного хорошего человека.
Файлы, используемые в видео: https://github.com/BigKAA/youtube/tree/master/kafka
Готовим поляну для экспериментов.
Включаем ssl.
Выписываем сертификаты.
Решаем проявившиеся проблемы.
Подключаем клиенты.
Серия видео про Helm
Файлы, используемые в видео: https://github.com/BigKAA/youtube/tree/master/Utils/gitflic
Разбираемся с приложением gitflic, которое необходимо запускать в kubenetes. Выясняем, что необходимо для его работы.
Готовим контейнер с приложением под нашу задачу.
Начинаем создавать чарт. Добавляем сабчарты redis и postgresql.
Файла values.yaml и параметры сабчартов.
Добавляем ConfigMap приложения gitflic. Описываем основные конфигурационные параметры.
Добавляем параметры связанные с сабчартами redis и postgresql.
Добавляем Job создающий базу данных, пользователя и расширения posgresql.
Тестируем запуск сабчартов postgresql и redis в кластере kubernetes.
Добавляем шаблоны встроенного mail relay.
Добавляем параметры, связанные с mail relay в конфигурационный файл gitflic.
Разбираемся, что использовать: Deployment или StatefulSet?
Какие типы volumes требуются приложению.
Создаём шаблон Deployment.
Создаём шаблоны StatufulSet.
Три сервиса.
Ingress
Использование ePBF в Calico.
Файлы, используемые в видео: https://github.com/BigKAA/youtube/blob/master/net/06-calico%20ebpf/README.md
Поддержи канал на https://boosty.to/bigkaa
Это видео на других площадках:
Firewall в кластере kubernetes.
Как защитить периметр кластера при помощи calico.
Файлы, используемые в видео: https://github.com/BigKAA/youtube/blob/master/net/05-NetworkPolicy-calico/Hep.md
Поддержи канал на https://boosty.to/bigkaa
Это видео на других площадках:
Firewall в кластере kubernetes.
Calico GlobalNetworkPolicy.
Update: Нашел, почему всегда открыт порт 6443.
Поддержи канал на https://boosty.to/bigkaa
Это видео на других площадках: