GCE にインストールされた Cloud SQL Proxy を介して Cloud SQL (MySQL) に接続する DAG を作成しました。テーブルのリストを読み取り、これらに基づいて多数のタスクを生成します。この DAG を自分のマシンでローカルに Airflow で実行しましたが、Cloud Composer インスタンスにデプロイしようとすると、DAG が Airflow Web UI に正しく読み込まれないようです。DAG で使用できるオプションは、更新と削除のみであり、他のすべてのオプションではありません。
DAG はスケジューラによって検出され、Cloud SQL への接続が確立され、テーブルが取得されていることをログで確認できますが、何らかの理由で Airflow ウェブ UI が気に入りません。ログにエラーはありません。
ここに示されている Composer のアーキテクチャを認識しています: https://cloud.google.com/composer/docs/concepts/overview、テナント内にある管理 Web UI と関係があるかどうか疑問に思っています事業。ただし、ファイアウォールの問題であるかどうかを確認するために、どこからでもすべての接続に対してファイアウォールを開こうとしましたが、うまくいきませんでした。したがって、ルーティングの問題である可能性があると思います。
Cloud SQL Proxy に接続するコードは次のようになります。
with connection.cursor(pymysql.cursors.DictCursor) as cursor:
sql = "select <redacted>"
cursor.execute(sql)
result = cursor.fetchall()
次のようにクラスターを作成します。
gcloud composer environments create comp-etl-runner \
--disk-size="30GB" --location="europe-west1" --zone="europe-west1-b" \
--machine-type="n1-standard-1" --node-count=3 \
--service-account="<redacted>" \
--python-version=3 --image-version="composer-1.7.2-airflow-1.10.2" --network="dev-network-1" \
--subnetwork="dev-subnet-3"
IPエイリアスを有効にして、次のようにIP範囲を指定しようとしました:
gcloud beta composer environments create comp-etl-runner \
--disk-size="30GB" --location="europe-west1" --zone="europe-west1-b" \
--machine-type="n1-standard-1" --node-count=3 \
--service-account="<redacted>" \
--python-version=3 --image-version="composer-1.7.2-airflow-1.10.2" --network="dev-network-1" \
--subnetwork="dev-subnet-3" \
--enable-ip-alias \
--cluster-ipv4-cidr="10.207.0.0/19" \
--services-ipv4-cidr="10.207.32.0/19"
しかし、それは違いはありませんでした。
また、次の 2 つのパラメーターを追加してみました。
--enable-private-environment \
--master-ipv4-cidr="10.207.64.0/19" \
しかし、その後、環境の作成は失敗します。
私の DAG は自分のマシンの Airflow で完全に機能していますが、Cloud Composer では機能していないため、私は髪を引き裂いています。したがって、どんなアイデアでも大歓迎です。