4.5.3. IBM Z での Hosted Control Plane の DNS 設定
ホステッドクラスターの API サーバーは、NodePort サービスとして公開されます。API サーバーに到達できる宛先を指す api.<hosted_cluster_name>.<base_domain> の DNS エントリーが存在する必要があります。
DNS エントリーは、Hosted Control Plane を実行しているマネージドクラスター内のノードの 1 つを指すレコードと同様、単純化できます。
エントリーは、受信トラフィックを Ingress Pod にリダイレクトするためにデプロイされるロードバランサーを指すこともできます。
次の DNS 設定の例を参照してください。
$ cat /var/named/<example.krnl.es.zone>
出力例
$ TTL 900
@ IN SOA bastion.example.krnl.es.com. hostmaster.example.krnl.es.com. (
2019062002
1D 1H 1W 3H )
IN NS bastion.example.krnl.es.com.
;
;
api IN A 1xx.2x.2xx.1xx
api-int IN A 1xx.2x.2xx.1xx
;
;
*.apps IN A 1xx.2x.2xx.1xx
;
;EOF
- 1
- このレコードは、Hosted Control Plane の受信トラフィックと送信トラフィックを処理する API ロードバランサーの IP アドレスを参照します。
IBM z/VM の場合、エージェントの IP アドレスに対応する IP アドレスを追加します。
compute-0 IN A 1xx.2x.2xx.1yy
compute-1 IN A 1xx.2x.2xx.1yy
4.5.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パラメーターから削除されます。