How do I connect Cloud Composer Airflow DAG to a VPN
Cloud Composer Airflow DAG が VPN ゲートウェイ経由で REST API に接続できるようにするにはどうすればよいでしょうか。クラスターは対応する VPC に接続されています。
kube-proxy は API にアクセスできますが、コンテナはアクセスできません。
kube-proxy とコンテナに SSH 接続し、traceroute を試しました。コンテナの traceroute は kube-proxy で終了します。 kube-proxy は宛先に到達するまでに 4 ホップあります。
kube-proxy から iptables をダンプしましたが、コンテナで VPC サブネットを NAT することに関しては何も指定されていません。
VPC サブネットもコンテナに表示されませんが、これは設計によるものです。
参考資料:
編集 1: 詳細情報:
VPN が VPC をリモート 10.200.0.0 ネットワークに接続すると仮定します。
VPC には複数のサブネットがあります。プライマリ範囲は、たとえば 10.10.0.0/20 です。Kubernetes クラスターごとに、さらに 2 つのサブネットがあります。1 つは各ポッド用 (10.16.0.0/14)、もう 1 つはサービス用 (10.20.0.0/20) です。ゲートウェイは 10.10.0.1 です。
各ポッドには独自の範囲があり、pod_1 は 10.16.0.0/14、pod_2 は 10.16.1.0/14、pod_3 は 10.16.3.0/14 などです。
kube-proxy の 1 つには複数のネットワーク アダプターがあります。eth0 の 10.10.0.0 ネットワークに存在し、10.16.0.0 への cbr0 ブリッジがあります。ブリッジを介した kube-proxy を通じて、Airflow のワーカーが共存します。ネットワークに接続しています。労働者 1 名 例: 10.16.0.1 にはネットワーク アダプタが 1 つだけあります。
kube-proxy は 10.200.0.0 ネットワークに到達できます。 Airflow ワーカーにはそれができません。
ワーカーが 10.200.0.0 ネットワークにアクセスできるようにするにはどうすればよいでしょうか? kube-proxy の iptables を変更する必要がありますか?
-----------------------------------
VPN は現在の VPC にデプロイされますか?それとも、ピアリングを実行してアクセスしますか?
-----
@guillaumeblaquiere これは、Google Cloud Classic VPN を使用して現在の VPC にデプロイされています。
-----
リクエストがサーバーの反対側に到着しているのがわかりますか? VPN? VPN を設定するとき、ほとんどの場合、帰り道を忘れてしまいます...
-----
こんにちは @guillaumeblaquiere、ネットワークについてもう少し説明するために最初の投稿を編集しました。私たちの VPN は意図したとおりに機能し、他の VM からアクセスして API を操作できます。ここで、コードが自動的に実行されるように DAG にデプロイしたいと思います。
-----
うーん、接続が機能していれば、特別なファイアウォール ルールがなく、サブネットが同じ VPC 内にあれば、機能するはずです。 ... NAT を設定していますか?
-----
考えられる解決策の 1 つは、パッケージを kube 仮想インターフェイスからノードの実際のインターフェイスに転送することです。例えば。次のルールを IP テーブルに追加します:
iptables -A FORWARD -i cbr0 -o eth0 -d 10.200.0.0/25 -j ACCEPT
iptables -A FORWARD -i eth0 -o cbr0 -s 10.200.0.0/25 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-----------------------------------