Обязательно ли запускать Dagu внутри кластера?
Нет. Он определяет кластер сначала по явному kubeconfig, затем по обычным правилам загрузки kubeconfig, затем по внутрикластерной конфигурации, поэтому работает в обоих случаях. Запуск снаружи как раз и делает возможными межкластерные и трансграничные процессы; запуск внутри уместен, когда всё затрагиваемое находится в этом кластере.
Чем это отличается от CronJob, запускающего скрипт с kubectl?
Такой подход даёт только порядок: код возврата пода-обёртки скрывает, какой этап упал, повтор перезапускает весь скрипт, а логи представляют собой единый неразличимый поток, исчезающий вместе с подом. Dagu создаёт по одному Job на шаг, поэтому у каждого этапа свой статус, свой повтор и свой сохранённый лог.
Разделяют ли шаги файловую систему?
Нет. Каждый шаг — отдельный Job и, следовательно, отдельный под. Передавайте данные через объектное хранилище, постоянный том, смонтированный в каждый шаг, или через выводы шагов для небольших значений — так же, как между отдельными Job.
Что происходит с Job при отмене запуска?
Пути отмены, принудительного завершения и таймаута выполняют очистку даже при cleanup_policy со значением keep, поэтому остановленный запуск не оставляет Job. В обычной работе Job по умолчанию удаляется после завершения.
Стоит ли использовать это вместо Argo Workflows?
Только если вам полезно, что оркестратор находится вне кластера. Если все задачи — контейнеры в одном кластере и вы хотите, чтобы процессы были объектами Kubernetes под тем же RBAC и GitOps, лучше подходит Argo. Dagu уместен для графов, смешивающих задачи кластера с хостами, API и согласованиями людей.
Можно ли развернуть сам Dagu в Kubernetes?
Да. Официальный Helm-чарт (helm repo add dagu https://dagucloud.github.io/dagu) разворачивает UI, планировщик и координатор, а также опциональные пулы воркеров. Запускать Dagu внутри кластера и одновременно использовать этот тип шага вполне обычно; исполнитель тогда определяет кластер через in-cluster конфигурацию.