4.3.4. OpenShift Virtualization 上の Hosted Control Plane のデフォルトの Ingress と DNS を設定する
すべての OpenShift Container Platform クラスターにはデフォルトのアプリケーション Ingress コントローラーが含まれており、これにはワイルドカード DNS レコードが関連付けられている必要があります。デフォルトでは、HyperShift KubeVirt プロバイダーを使用して作成されたホステッドクラスターは、自動的に KubeVirt 仮想マシンが実行される OpenShift Container Platform クラスターのサブドメインになります。
たとえば、OpenShift Container Platform クラスターには次のデフォルトの Ingress DNS エントリーがある可能性があります。
*.apps.mgmt-cluster.example.com
その結果、guest という名前が付けられ、その基礎となる OpenShift Container Platform クラスター上で実行される KubeVirt ホステッドクラスターには、次のデフォルト Ingress が設定されます。
*.apps.guest.apps.mgmt-cluster.example.com
手順
デフォルトの Ingress DNS が適切に機能するには、KubeVirt 仮想マシンをホストするクラスターでワイルドカード DNS ルートを許可する必要があります。
この動作は、以下のコマンドを入力して設定できます。
$ oc patch ingresscontroller -n openshift-ingress-operator default \ --type=json \ -p '[{ "op": "add", "path": "/spec/routeAdmission", "value": {wildcardPolicy: "WildcardsAllowed"}}]'
デフォルトのホステッドクラスターの Ingress を使用する場合、接続がポート 443 経由の HTTPS トラフィックに制限されます。ポート 80 経由のプレーン HTTP トラフィックは拒否されます。この制限は、デフォルトの Ingress の動作にのみ適用されます。
4.3.4.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パラメーターから削除されます。