我想在Airflow上部署一个应用程序,该应用程序接受一个config文件作为参数,提取所述config指定的git仓库,然后将其转换为Docker映像,然后将该映像上传到GCP的Artifact Registry。在Airflow DAG中构建Docker映像的最佳实践是什么?
我尝试过通过Airflow编排手动触发的云构建运行-我无法使用CloudBuildCreateBuildOperator将必要的替换传递到cloudbuild.yaml文件中,也无法指定工作区。
我还创建了一个docker映像,它本身可以创建新的docker映像(当docker.sock文件作为卷挂载时)。然而,使用KubernetesPodOperator调用它似乎违背了Airflow的设计理念,因为该任务将直接在主机上构建新的docker映像,从而影响主机。
1条答案
按热度按时间yqkkidmi1#
应用这种用例不是
Airflow
的责任。Airflow
是一个基于DAGs
(有向无环图)的流水线和任务协调器。您的需求与通常的CI CD管道相对应。最好将此工作委托给
Cloud Build
或Gitlab CI
等工具。在
Cloud Build
中,您可以应用和自动执行问题中指定的所有操作。当您在CI CD部分构建映像时,可以在
Airflow
DAG中使用Docker
映像(如果需要)和KubernetesPodOperator
。这样做会更加协调一致,因为每一项关切都将放在正确的位置,使用正确的工具。