Всем привет.
Если кратко, создавая приложения под k8s, гораздо меньше способов выстрелить себе в ногу, а далее чуть подробнее:
Почему я сравниваю тёплое с мягким? По некоторым видам задач, эти системы взаимозаменяемы, поэтому может быть желание не использовать переусложнённый кубер, а накОть тёплый ламповый Airflow, с кнопочками в интерфейсе.
В Airflow получается одна большая кодовая база в одном репозитории, у нас на некоторых серверах по 100+ DAG-ов, это удобно когда нужно вносить правки сразу в нескольких местах, но это же и создаёт проблему. Я использую VSCode не так давно, но например уже прочувствовал мощь «Ctrl+Z» который откатывает какие-то изменения, возможно, там где ты этого не ждёшь. В k8s же ты имеешь дело одновременно только с кодом одного приложения, и случайные ошибочные правки поломают только его. То есть изоляция приложений на уровне кода репозитория. Если ты сломал репку k8s, ты об этом узнаешь еще на dev, если ты сломал чужой DAG, об этом узнает его владелец, при этом, возможно, очень не скоро.
Что с этим делать? Качать мускул аккуратности, следить за всем подряд, нарабатывать какие-то методики, которые у меня сейчас в вербальную форму не оформились.
Свалка переменных окружения (Variables). Куча изоляций k8s, которая так надоедает начинающим разработчикам, что они с радостью отдают разбираться с ней devops-ам, снова оказывается плюсом данной системы. В Airflow у тебя перед глазами сразу всё что есть на инстансе, что может казаться удобным, пока количество переменных не перевалит за 3, 4, 5-ю сотню. В общем что-то «поломать», что не относилось к нужному проекту опять не иллюзорная. И как и в прошлый раз, если что-то поломаешь, узнаешь об этом спустя какое-то время.
Что делать? Снова качать мускул аккуратности.
Безопасность. Код разных владельцев в одном репозитории, вызов любой переменной в рантайме любым DAG-ом, достаточно знать имя ключа.
Вот такое впечатление первое, видимо, дефолт в Airflow, как это иногда бывает сломанный, и использовать его никак нельзя.
С одной стороны, ошибки правок это совсем детская проблема, а с другой стороны все мы люди и иногда ошибаемся.
Накидайте best practice плиз? Я собственно за этим
:)