我正在尝试创建一个Airflow DAG,我想从其中使用存储在Google Container Registry中的Docker映像旋转Compute Engine示例。
换句话说,我想使用gcloud操作符用airflow dags
复制gcloud compute instances create-with-container
。我寻找气流操作员进行此类操作,但找不到任何方法使其工作。
可能的参考文献:
我正在尝试创建一个Airflow DAG,我想从其中使用存储在Google Container Registry中的Docker映像旋转Compute Engine示例。
换句话说,我想使用gcloud操作符用airflow dags
复制gcloud compute instances create-with-container
。我寻找气流操作员进行此类操作,但找不到任何方法使其工作。
可能的参考文献:
1条答案
按热度按时间iszxjhcz1#
使用带有Airflow的VM**运行预制容器的简单而干净的解决方案可能包括以下3个步骤:
1.创建一个全新的VM(通过BashOperator),并使用启动脚本拉取/运行容器,并在运行完成时关闭VM;
1.使用PythonSensor来检查VM何时停止(即e. docker完成运行);
1.删除VM(通过BashOperator),以便在下次触发airflow dag时重复前面的步骤。
我们只需要下面的bash命令:
active_account
和set_project
分别用于激活服务帐户和设置正确的工作项目(我们希望在其中运行VM)。当Airflow在示例化VM的GCP项目之外运行时,这是必需的。在所使用的服务帐户上拥有ComputeEngine权限也很重要。要运行的容器映像必须位于示例化VM的同一项目的容器注册表中。list_vm
返回项目中现有VM的列表以及相关功能和状态(RUNNING/TERMINATED)。create_vm
创建虚拟机,连接docker,从容器注册表运行。创建VM的命令可以根据您的需要进行自定义。需要注意的是,您必须添加--metadata startup-script
,其中包括docker的运行以及docker运行结束时VM的关闭。(要了解启动脚本是如何生成的,请参见here)。delete_vm
只是删除由create_vm
创建的VM。所有这些命令都可以通过以下方式组合在Airflow DAG中协同工作: