Мы встраиваем весь наш код в образ Docker (DAG, плагины, разные пакеты Python, разные файлы airflow.cfg
и т. Д.), Который передается в наш кластер Kubernetes. Один и тот же образ работает везде, гарантируя, что зависимости остаются заблокированными, и каждый Airflow настроен наилучшим образом для его случая использования (мы запускаем несколько экземпляров Airflow в нашем кластере Kubernetes).
Что касается CI / CD, так как наше развертывание в значительной степени является всего лишь попыткой докера, мы использовали CircleCI без каких-либо проблем.
Для управления средами мы постараемся сохранить одинаковые имена для всех потоков Airflow (например, redshift_conn
), но с разными учетными данными (dev Redshift vs prod Redshift). Я думаю, что для этого должны быть более элегантные решения, но пока это работает для нас.