7.10. 高度なタスク
7.10.1. DNS Operator managementState の変更
					DNS Operator は、CoreDNS コンポーネントを管理し、クラスター内の Pod とサービスに名前解決サービスを提供します。DNS Operator の managementState は、デフォルトで Managed に設定されます。これは、DNS Operator がそのリソースをアクティブに管理していることを意味します。これを Unmanaged に変更できます。つまり、DNS Operator がそのリソースを管理していないことを意味します。
				
					以下は、DNS Operator managementState を変更するためのユースケースです。
				
- 
							開発者は、CoreDNS の問題が修正されているかどうかを確認するために、設定変更をテストする必要があります。managementStateをUnmanagedに設定することで、DNS Operator による設定変更の上書きを防止できます。
- 
							クラスター管理者は、CoreDNS の問題を報告していますが、問題が修正されるまで回避策を適用する必要があります。DNS Operator の managementStateフィールドをUnmanagedに設定して、回避策を適用できます。
手順
- DNS Operator の - managementStateを- Unmanagedに変更します。- oc patch dns.operator.openshift.io default --type merge --patch '{"spec":{"managementState":"Unmanaged"}}'- oc patch dns.operator.openshift.io default --type merge --patch '{"spec":{"managementState":"Unmanaged"}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- jsonpathコマンドライン JSON パーサーを使用して DNS Operator の- managementStateを確認します。- oc get dns.operator.openshift.io default -ojsonpath='{.spec.managementState}'- $ oc get dns.operator.openshift.io default -ojsonpath='{.spec.managementState}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- managementStateが- Unmanagedに設定されている間はアップグレードできません。
7.10.2. DNS Pod 配置の制御
					DNS Operator には 2 つのデーモンセットがあります。1 つは CoreDNS 用の dns-default という名前のデーモンセットで、もう 1 つは /etc/hosts ファイルの管理用の node-resolver という名前のデーモンセットです。
				
場合によっては、どのノードに CoreDNS Pod を割り当てて実行するかを制御する必要があります (ただし、これは一般的な操作ではありません)。たとえば、クラスター管理者がノードのペア間の通信を禁止できるセキュリティーポリシーを設定している場合、CoreDNS のデーモンセットが実行されるノードのセットを制限する必要があります。DNS Pod がクラスター内の一部のノードで実行されており、DNS Pod が実行されていないノードから DNS Pod が実行されているノードへのネットワーク接続がある場合、すべての Pod で DNS サービスが利用可能になります。
					node-resolver デーモンセットは、すべてのノードホストで実行する必要があります。このデーモンセットにより、イメージのプルをサポートするクラスターイメージレジストリーのエントリーが追加されるためです。node-resolver Pod には、1 つのジョブのみがあります。コンテナーランタイムがサービス名を解決できるように、image-registry.openshift-image-registry.svc サービスのクラスター IP アドレスを検索し、それをノードホストの /etc/hosts に追加するジョブです。
				
クラスター管理者は、カスタムノードセレクターを使用して、CoreDNS のデーモンセットを特定のノードで実行するか、実行しないように設定できます。
前提条件
- 
							ocCLI がインストールされている。
- 
							cluster-admin権限を持つユーザーとしてクラスターにログインしている。
- 
							DNS Operator の managementStateがManagedに設定されている。
手順
- CoreDNS のデーモンセットを特定のノードで実行できるようにするために、taint と toleration を設定します。 - defaultという名前の DNS Operator オブジェクトを変更します。- oc edit dns.operator/default - $ oc edit dns.operator/default- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- taint の taint キーおよび toleration を指定します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- taint がdns-onlyである場合、それは無制限に許容できます。tolerationSecondsは省略できます。
 
 
7.10.3. TLS を使用した DNS 転送の設定
高度に規制された環境で作業する場合は、要求をアップストリームリゾルバーに転送する際に DNS トラフィックのセキュリティーを確保して、追加の DNS トラフィックおよびデータのプライバシーを確保できるようにする必要がある場合があります。
CoreDNS は転送された接続を 10 秒間キャッシュすることに注意してください。要求が発行されない場合、CoreDNS はその 10 秒間、TCP 接続を開いたままにします。大規模なクラスターでは、ノードごとに接続を開始できるため、DNS サーバーが多くの新しい接続を開いたまま保持する可能性があることを認識しているか確認してください。パフォーマンスの問題を回避するために、それに応じて DNS 階層を設定します。
手順
- defaultという名前の DNS Operator オブジェクトを変更します。- oc edit dns.operator/default - $ oc edit dns.operator/default- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - クラスター管理者は、転送された DNS クエリーに Transport Layer Security (TLS) を設定できるようになりました。 - TLS を使用した DNS 転送の設定 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- rfc6335サービス名の構文に準拠する必要があります。
- 2
- rfc1123サービス名構文のサブドメインの定義に準拠する必要があります。クラスタードメインの- cluster.localは、- zonesフィールドの無効なサブドメインです。クラスタードメインの- cluster.localは、- zonesの無効な- subdomainです。
- 3
- 転送された DNS クエリーの TLS を設定する場合、transportフィールドの値をTLSに設定します。
- 4
- 転送された DNS クエリー用に TLS を設定する場合、これは、アップストリーム TLS サーバー証明書を検証するための Server Name Indication (SNI) の一部として使用される必須のサーバー名です。
- 5
- アップストリームリゾルバーを選択するためのポリシーを定義します。デフォルト値はRandomです。RoundRobinおよびSequentialの値を使用することもできます。
- 6
- 必須。アップストリームリゾルバーを指定するために使用します。forwardPluginエントリーごとに最大 15 のupstreamsエントリーが許可されます。
- 7
- オプション: これを使用して、デフォルトポリシーを上書きし、デフォルトドメインで指定された DNS リゾルバー (アップストリームリゾルバー) に DNS 解決を転送できます。アップストリームリゾルバーを指定しない場合に、DNS 名のクエリーは/etc/resolv.confのサーバーに送信されます。
- 8
- TLS を使用する場合、Networkタイプのみが許可され、IP アドレスを指定する必要があります。Networkタイプは、このアップストリームリゾルバーが/etc/resolv.confにリストされているアップストリームリゾルバーとは別に転送されたリクエストを処理する必要があることを示します。
- 9
- addressフィールドは、有効な IPv4 または IPv6 アドレスである必要があります。
- 10
- オプションでポートを指定できます。portの値は1〜65535である必要があります。アップストリームのポートを指定しない場合、デフォルトのポートは 853 です。
 注記- serversが定義されていないか無効な場合、config map にはデフォルトサーバーのみが含まれます。
検証
- config map を表示します。 - oc get configmap/dns-default -n openshift-dns -o yaml - $ oc get configmap/dns-default -n openshift-dns -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - TLS 転送の例に基づく DNS ConfigMap のサンプル - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- forwardPluginへの変更により、CoreDNS デーモンセットのローリング更新がトリガーされます。