Google Cloud Run でカスタム DNS サーバーを使用するにはどうすればいいですか?

Google Cloud Run でカスタム DNS サーバーを使用するにはどうすればいいですか?

コネクタを使用して共有 VPC に接続する Cloud Run フルマネージド サービスがあります。この共有 VPC は別の GCP プロジェクトと別のチームによって管理されていますが、この VPC にインスタンスをデプロイできます。この VPC には、そのチームの内部リソースを解決するカスタム DNS サーバーがあります。カスタム DNS サーバーは、DHCP によって VPC ユーザーに伝播されません。Cloud Run コンテナから IP ですべての内部リソースにアクセスできますが、カスタム DNS サーバーを使用せずに名前でアクセスすることはできません。

問題は、エラーが発生することなくこれらのサーバーをコンテナーに伝播できないことです。

コンテナ内に次のエントリポイント スクリプトを作成しました。

#!/usr/bin/env sh
set -e

{
  echo "nameserver 10.80.64.19";
  echo "nameserver 10.80.64.20";
  echo "nameserver 10.80.64.21";
} >> /etc/resolv.conf

exec "$@"

これにより、実行中のコンテナ上のファイルの内容は次のようになります。

nameserver 10.80.64.21
nameserver 10.80.64.20
nameserver 10.80.64.19
search google.internal.
nameserver 169.254.169.254

(スクリプトが書き込んだ後にカスタム行が追加されます)

最後の NS サーバーが使用され、共有 VPC リソースを名前 (などFailed to resolve 'some-name') で接続するときにエラーが発生することがあります。

この問題を解決するにはどうすればよいですか? 私の知る限り、カスタム DNS サーバーのみを使用するか、カスタム DNS サーバーと標準サーバーの情報を「マージ」する必要があります169.254.169.254。 この場合、どうすればよいでしょうか? 考えられる解決策は何ですか?

答え1

Google サポートから提案された解決策のオプション:

Cloud Run 側での処理に関する問題は、resolv.confネットワーク関連のものが Docker によってセットアップされているため、上書きできないことです。これを行うには 2 つのオプションがあります。

  1. 送信転送ゾーン:https://cloud.google.com/dns/docs/zones#転送ゾーンの作成
  2. 送信サーバーポリシー:https://cloud.google.com/dns/docs/policies#create-out

転送ゾーンを実装することで、クラウド DNS に、どのドメイン名の要求を特定の DNS サーバーに送信するかを指示します。カスタム DNS サーバーによって提供される内部ゾーン名がそれほど多くない場合に適したオプションです。

アウトバウンド ポリシーを実装すると、解決順序が変更され、解決リクエストを最初にカスタム サーバーに送信するように強制できます。リクエストが VPC コネクタに到達すると、メタデータ サーバーに送信され、アウトバウンド サーバー ポリシーの使用方法が認識されます。

答え2

システムによって構成されたサーバーに依存するのではなく、コード内で独自の DNS クライアントを実行し、選択したサーバーにクエリを送信することができます。

たとえば、Python で 'tut.by' リソースの A レコード (IP アドレス) を DNS サーバー 1.1.1.1 に照会するには、次のようにします (configure=Falseリゾルバーがシステム全体の値で構成されないようにするため)。

>>> import dns.resolver
>>> resolver = dns.resolver.Resolver(configure=False)
>>> resolver.nameservers.append('1.1.1.1')
>>> response = resolver.resolve('tut.by')
>>> for ip in response:
...     print(ip)
...
178.172.160.4
178.172.160.5
178.172.160.3
178.172.160.2

それが役に立てば幸い。

関連情報