4.2.3. ベアメタルでの DNS 設定
ホステッドクラスターの API サーバーは、NodePort サービスとして公開されます。API サーバーに到達できる宛先を指す api.<hosted_cluster_name>.<base_domain> の DNS エントリーが存在する必要があります。
DNS エントリーは、ホステッドコントロールプレーンを実行している管理クラスター内のノードの 1 つを指すレコードのように単純なものにすることができます。エントリーは、受信トラフィックを Ingress Pod にリダイレクトするためにデプロイされるロードバランサーを指すこともできます。
DNS 設定の例
api.example.krnl.es. IN A 192.168.122.20
api.example.krnl.es. IN A 192.168.122.21
api.example.krnl.es. IN A 192.168.122.22
api-int.example.krnl.es. IN A 192.168.122.20
api-int.example.krnl.es. IN A 192.168.122.21
api-int.example.krnl.es. IN A 192.168.122.22
`*`.apps.example.krnl.es. IN A 192.168.122.23
前述の例の場合、*.apps.example.krnl.es. IN A 192.168.122.23 が、ホステッドクラスター内のノード、またはロードバランサー (設定されている場合) です。
IPv6 ネットワーク上の非接続環境用に DNS を設定する場合、設定は次の例のようになります。
IPv6 ネットワークの DNS 設定の例
api.example.krnl.es. IN A 2620:52:0:1306::5
api.example.krnl.es. IN A 2620:52:0:1306::6
api.example.krnl.es. IN A 2620:52:0:1306::7
api-int.example.krnl.es. IN A 2620:52:0:1306::5
api-int.example.krnl.es. IN A 2620:52:0:1306::6
api-int.example.krnl.es. IN A 2620:52:0:1306::7
`*`.apps.example.krnl.es. IN A 2620:52:0:1306::10
デュアルスタックネットワークの非接続環境で DNS を設定する場合は、IPv4 と IPv6 の両方の DNS エントリーを含めるようにしてください。
デュアルスタックネットワークの DNS 設定の例
host-record=api-int.hub-dual.dns.base.domain.name,192.168.126.10
host-record=api.hub-dual.dns.base.domain.name,192.168.126.10
address=/apps.hub-dual.dns.base.domain.name/192.168.126.11
dhcp-host=aa:aa:aa:aa:10:01,ocp-master-0,192.168.126.20
dhcp-host=aa:aa:aa:aa:10:02,ocp-master-1,192.168.126.21
dhcp-host=aa:aa:aa:aa:10:03,ocp-master-2,192.168.126.22
dhcp-host=aa:aa:aa:aa:10:06,ocp-installer,192.168.126.25
dhcp-host=aa:aa:aa:aa:10:07,ocp-bootstrap,192.168.126.26
host-record=api-int.hub-dual.dns.base.domain.name,2620:52:0:1306::2
host-record=api.hub-dual.dns.base.domain.name,2620:52:0:1306::2
address=/apps.hub-dual.dns.base.domain.name/2620:52:0:1306::3
dhcp-host=aa:aa:aa:aa:10:01,ocp-master-0,[2620:52:0:1306::5]
dhcp-host=aa:aa:aa:aa:10:02,ocp-master-1,[2620:52:0:1306::6]
dhcp-host=aa:aa:aa:aa:10:03,ocp-master-2,[2620:52:0:1306::7]
dhcp-host=aa:aa:aa:aa:10:06,ocp-installer,[2620:52:0:1306::8]
dhcp-host=aa:aa:aa:aa:10:07,ocp-bootstrap,[2620:52:0:1306::9]
4.2.3.1. カスタム DNS 名の定義 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、ノードのブートストラップとコントロールプレーンの通信に使用される内部エンドポイントとは異なる外部 API DNS 名を持つホステッドクラスターを作成できます。
別の DNS 名を定義する理由には、次のようなものがあります。
- 内部ルート CA にバインドされている制御プレーン機能を壊さずに、ユーザー向けの TLS 証明書を公開 CA の証明書に置き換える。
- スプリットホライズン DNS および NAT のシナリオをサポートするため
-
スタンドアロンのコントロールプレーンと同様の操作性を確保するため、正しい
kubeconfigと DNS 設定を使用してShow Login Command機能などの機能を利用できます。
HostedCluster オブジェクトの kubeAPIServerDNSName パラメーターにドメイン名を入力することで、初期セットアップ時またはインストール後の操作時に DNS 名を定義できます。
前提条件
-
kubeAPIServerDNSNameパラメーターで設定する DNS 名が、有効な TLS 証明書の対象に含まれている。 - 正しいアドレスに到達し、それを指し示す解決可能な DNS 名 URI がある。
手順
HostedClusterオブジェクトの仕様で、kubeAPIServerDNSNameパラメーターとドメインのアドレスを追加し、使用する証明書を指定します (次の例を参照)。#... spec: configuration: apiServer: servingCerts: namedCertificates: - names: - xxx.example.com - yyy.example.com servingCertificate: name: <my_serving_certificate> kubeAPIServerDNSName: <custom_address>kubeAPIServerDNSNameパラメーターの値は、有効でアドレス指定可能なドメインである必要があります。kubeAPIServerDNSNameパラメーターを定義して証明書を指定すると、Control Plane Operator のコントローラーによってcustom-admin-kubeconfigという名前のkubeconfigファイルが作成されます。このファイルはHostedControlPlanenamespace に保存されます。証明書はルート CA から生成され、HostedControlPlanenamespace によって証明書の有効期限と更新が管理されます。Control Plane Operator は、
HostedControlPlanenamespace にCustomKubeconfigという名前の新しいkubeconfigファイルを報告します。このファイルは、kubeAPIServerDNSNameパラメーターで定義された新しいサーバーを使用します。カスタム
kubeconfigファイルへの参照情報は、HostedClusterオブジェクトのstatusパラメーター内にCustomKubeconfigという名前で存在しています。CustomKubeConfigパラメーターは任意であり、kubeAPIServerDNSNameパラメーターが空でない場合にのみ追加できます。CustomKubeConfigパラメーターを設定すると、そのパラメーターによって、HostedClusternamespace で<hosted_cluster_name>-custom-admin-kubeconfigという名前のシークレットの生成がトリガーされます。このシークレットを使用してHostedClusterAPI サーバーにアクセスできます。インストール後の操作時にCustomKubeConfigパラメーターを削除すると、関連するすべてのシークレットとステータス参照が削除されます。注記カスタム DNS 名の定義はデータプレーンに直接影響しないため、予期されるロールアウトは発生しません。
HostedControlPlanenamespace は、HyperShift Operator から変更を受け取り、対応するパラメーターを削除します。HostedClusterオブジェクトの仕様からkubeAPIServerDNSNameパラメーターを削除すると、新しく生成されたすべてのシークレットと、CustomKubeconfig参照がクラスターとstatusパラメーターから削除されます。