如何在 cloud composer 集群中启动云代理
How to Spin up a cloud proxy in cloud composer cluster
如何为 cloud composer 集群启动云代理
目前我们使用气流来管理作业和动态 DAG 创建。为此,我们编写了一个单独的 Dag 来检查 PostgreSQL 中的数据库 table 是否存在现有规则,如果 PostgreSQL 中的规则是 active/inactive,我们将在 [=16] 中手动设置 off/on 个动态 DAG =],我们将使用 Google 的自管理 Cloud Composer,但问题是我们无法访问 Cloud Composer 的数据库。我们如何使用云 sql 代理来解决这个问题?
Cloud Composer 数据库实际上已经可以访问了,因为在环境的附加 GKE 集群中有一个云 SQL 代理 运行ning。您可以使用其服务名称 airflow-sqlproxy-service
从集群内连接到它,使用 root
。例如,在 Composer 1.6.0 上,如果您有 Kubernetes 集群凭据,则可以列出 运行ning pods:
$ kubectl get po --all-namespaces
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-database-init-job-kprd5 0/1 Completed 0 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-scheduler-78d889459b-254fm 2/2 Running 18 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-worker-569bc59df5-x6jhl 2/2 Running 5 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-worker-569bc59df5-xxqk7 2/2 Running 5 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-worker-569bc59df5-z5lnj 2/2 Running 5 1d
default airflow-redis-0 1/1 Running 0 1d
default airflow-sqlproxy-668fdf6c4-vxbbt 1/1 Running 0 1d
default composer-agent-6f89fdb7-0a7a-41b6-8d98-2dbe9f20d7ed-j9d4p 0/1 Completed 0 1d
default composer-fluentd-daemon-g9mgg 1/1 Running 326 1d
default composer-fluentd-daemon-qgln5 1/1 Running 325 1d
default composer-fluentd-daemon-wq5z5 1/1 Running 326 1d
您可以看到其中一个工作人员 pods 名为 airflow-worker-569bc59df5-x6jhl
,并且正在 运行 命名空间 composer-1-6-0-airflow-1-9-0-6f89fdb7
中。如果我通过 SSH 连接到其中之一和 运行 MySQL CLI,我就可以访问数据库:
$ kubectl exec \
-it airflow-worker-569bc59df5-x6jhl \
--namespace=composer-1-6-0-airflow-1-9-0-6f89fdb7 -- \
mysql \
-u root \
-h airflow-sqlproxy-service.default
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27147
Server version: 5.7.14-google-log (Google)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
TL;DR 对于任何 运行ning 中的 DAG,请使用 root@airflow-sqlproxy-service.default
连接,无需密码。这将通过您的 Composer 环境中已经 运行 的云 SQL 代理连接到 Airflow 元数据数据库。
如果您需要连接到 不是 Airflow 数据库 运行 云 SQL 中的数据库,那么您可以启动另一个通过将新的代理 pod 部署到 GKE 中进行代理(就像您将任何其他东西部署到 Kubernetes 集群中一样)。
如何为 cloud composer 集群启动云代理
目前我们使用气流来管理作业和动态 DAG 创建。为此,我们编写了一个单独的 Dag 来检查 PostgreSQL 中的数据库 table 是否存在现有规则,如果 PostgreSQL 中的规则是 active/inactive,我们将在 [=16] 中手动设置 off/on 个动态 DAG =],我们将使用 Google 的自管理 Cloud Composer,但问题是我们无法访问 Cloud Composer 的数据库。我们如何使用云 sql 代理来解决这个问题?
Cloud Composer 数据库实际上已经可以访问了,因为在环境的附加 GKE 集群中有一个云 SQL 代理 运行ning。您可以使用其服务名称 airflow-sqlproxy-service
从集群内连接到它,使用 root
。例如,在 Composer 1.6.0 上,如果您有 Kubernetes 集群凭据,则可以列出 运行ning pods:
$ kubectl get po --all-namespaces
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-database-init-job-kprd5 0/1 Completed 0 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-scheduler-78d889459b-254fm 2/2 Running 18 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-worker-569bc59df5-x6jhl 2/2 Running 5 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-worker-569bc59df5-xxqk7 2/2 Running 5 1d
composer-1-6-0-airflow-1-9-0-6f89fdb7 airflow-worker-569bc59df5-z5lnj 2/2 Running 5 1d
default airflow-redis-0 1/1 Running 0 1d
default airflow-sqlproxy-668fdf6c4-vxbbt 1/1 Running 0 1d
default composer-agent-6f89fdb7-0a7a-41b6-8d98-2dbe9f20d7ed-j9d4p 0/1 Completed 0 1d
default composer-fluentd-daemon-g9mgg 1/1 Running 326 1d
default composer-fluentd-daemon-qgln5 1/1 Running 325 1d
default composer-fluentd-daemon-wq5z5 1/1 Running 326 1d
您可以看到其中一个工作人员 pods 名为 airflow-worker-569bc59df5-x6jhl
,并且正在 运行 命名空间 composer-1-6-0-airflow-1-9-0-6f89fdb7
中。如果我通过 SSH 连接到其中之一和 运行 MySQL CLI,我就可以访问数据库:
$ kubectl exec \
-it airflow-worker-569bc59df5-x6jhl \
--namespace=composer-1-6-0-airflow-1-9-0-6f89fdb7 -- \
mysql \
-u root \
-h airflow-sqlproxy-service.default
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27147
Server version: 5.7.14-google-log (Google)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
TL;DR 对于任何 运行ning 中的 DAG,请使用 root@airflow-sqlproxy-service.default
连接,无需密码。这将通过您的 Composer 环境中已经 运行 的云 SQL 代理连接到 Airflow 元数据数据库。
如果您需要连接到 不是 Airflow 数据库 运行 云 SQL 中的数据库,那么您可以启动另一个通过将新的代理 pod 部署到 GKE 中进行代理(就像您将任何其他东西部署到 Kubernetes 集群中一样)。