クラスタの DNS を構成する

このドキュメントでは、Google Distributed Cloud のドメイン ネーム システム(DNS)プロバイダ オプションを構成する方法について説明します。クラスタの DNS 構成は、default という名前の ClusterDNS カスタム リソースに保持されます。このリソースはクラスタ全体にわたります。つまり、名前空間はありません。ClusterDNS カスタム リソースは、すべてのクラスタタイプに適用されます。

ClusterDNS リソースを作成する

default という名前の ClusterDNS リソースのマニフェストを作成します。spec に入力して、必要なリソース設定を構成します。次に例を示します。

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: default

マニフェストを my-dns.yaml という名前のファイルに保存して、リソースをクラスタに適用するには、次のコマンドを実行します。

kubectl --kubeconfig KUBECONFIG apply -f my-dns.yaml

KUBECONFIG は、クラスタの kubeconfig ファイルのパスに置き換えます。

ClusterDNS リソースの表示

ClusterDNS リソースを表示するには、次のコマンドを実行します。

kubectl --kubeconfig KUBECONFIG get clusterdns default --output yaml

KUBECONFIG は、クラスタの kubeconfig ファイルのパスに置き換えます。

ClusterDNS の仕様

以下の各セクションでは、クラスタの DNS を構成するために使用する ClusterDNS カスタム リソース定義の一部について説明します。クラスタの ClusterDNS リソースはいつでも更新できます。

spec.upstreamNameservers

spec.upstreamNameservers フィールドを使用して、デフォルトのアップストリーム ネームサーバーをオブジェクトの配列とともに指定します。各オブジェクトには、サーバーの IP アドレスと、必要に応じてサーバーポートがあります。サーバーポートのデフォルト値は 53 です。 クラスタ以外のドメインのリクエストは、デフォルトでこのサーバーセットに転送されます。

以下は、upstreamNameservers 構成の例です。

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

upstreamNameservers の値を指定しない場合、DNS プロバイダはノード上の /etc/resolv.conf ファイルを使用して、アップストリーム ネームサーバーのリストを検索します。

spec.domains

spec.domains フィールドを使用して、特定のドメイン用に異なるアップストリーム ネームサーバーを構成します。これらのドメイン特有のネームサーバーの設定は、upstreamNameservers の構成をオーバーライドします。

ドメインのクエリロギングをオンにすることもできます。指定したドメインまたはクラスタ ドメイン(cluster.local)に対してクエリロギングを有効にできます。

以下は、spec.domains 構成の例です。

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

spec.googleAccess フィールドは、グローバル Google API とサービスで使用されるドメインの DNS 解決を構成する文字列です。このフィールドには次の値を指定できます。

  • default: デフォルトでは、DNS の解決はグローバル Google API ドメインをデフォルトの IP アドレスにマッピングします。クラスタは、グローバル Google API ドメインの DNS の解決をカスタマイズしません。詳細については、 デフォルト ドメインの IP アドレスをご覧ください。 googleAccess フィールドに値を指定しない場合、システムは default を使用します。

  • private: グローバル Google API ドメインの DNS の解決を private.googleapis.com で使用される IP アドレスにマッピングします。

  • restricted: グローバル Google API ドメインの DNS の解決を restricted.googleapis.com が使用する IP アドレスにマッピングします。

次の例は、DNS の解決を private.googleapis.com を使用するように設定する方法を示しています。

spec:
  googleAccess: private

詳細については、オンプレミス ホスト用のプライベート Google アクセスの構成 をご覧ください

spec.orderPolicy

spec.orderPolicy フィールドは文字列です。このフィールドを使用して、アップストリーム サーバーを選択する順序指定ポリシーを指定します。

  • デフォルト値は random です。
  • サポートされているタイプは、randomround_robinsequential です。
  • この順序付けポリシーは、定義済みのドメインにも適用されます。

policy と各構成の内容の詳細については、 coredns のドキュメントをご覧ください。

以下は、spec.orderPolicy 構成の例です。

spec:
  orderPolicy: sequential