我正在使用Google Composer,但由于我试图创建一个动态创建的DAG,我无法使用托管web服务器[1]。所以最后我需要添加一个插件,因为我需要使用REST API访问Airflow Web服务器,所以我安装了以下插件,因为实验性的REST API不足以满足我的情况[2]:
- https://github.com/teamclairvoyant/airflow-rest-api-plugin
当我更新插件时,我管理的Airflow Web服务器能够接收更改。然而,我自己管理的Airflow网络服务器无法接收更改。
我知道我需要重新启动Airflow Web服务器,但在我执行以下命令后,我的pod似乎没有重新启动:
kubectl get deploy airflow-webserver -o yaml | kubectl replace --force -f -
为了供您参考,如果您正在执行[3]中提到的步骤,可以看到我的部署。yaml。
通过对某些未使用的环境变量使用kubectl补丁来重新启动pod似乎也不起作用。
[1] 基于数据库连接上可用行动态创建DAG
[2]https://github.com/apache/airflow/blob/master/docs/api.rst
[3]https://cloud.google.com/composer/docs/how-to/managing/deploy-webserver
这个问题已经通过创建一个新环境,然后使用[1]将所有数据迁移到新环境中解决了,当前版本是1.4.1(我使用的前一版本是1.3.0)。有关发布的信息可以在[2]中找到。插件可以通过使用gcsfuse或使用web控制台将插件目录复制到插件目录来安装。
如果你正在为你的网络服务器使用插件,这意味着你的端点也受到IAP的保护。若要以编程方式访问它,可以使用服务帐户[3]。
[1]https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/composer/tools/copy_environment.py
请注意,当您使用测试版时。使用以下命令创建的:
gcloud beta composer environments create <env> --location=<location> --airflow-version <version> --node-count <node-count>
您应该首先创建环境,然后运行我提供的脚本,因为这个测试版在v1beta1上可用。同时该脚本只支持v1 API。
还请注意,如果您在旧环境中单独使用其他k8s资源,我提到的脚本不会对此进行备份。该脚本只将所有配置备份到您的气流中,即:DB、DAG和日志。因此,如果您使用的是自我管理的Web服务器,您应该重新创建此Web服务器的部署。
[2]https://cloud.google.com/composer/docs/release-notes
[3]https://cloud.google.com/iap/docs/authentication-howto