2.2. プライベートゾーンで公開される DNS レコードの設定
パブリックまたはプライベートなどのすべての OpenShift Container Platform クラスターの場合、DNS レコードはデフォルトでパブリックゾーンに公開されます。
クラスター DNS 設定からパブリックゾーンを削除して、DNS レコードがパブリックに公開されないようにします。内部ドメイン名、内部 IP アドレス、クラスター数などの機密情報を組織で公開しないようにしたり、レコードを一般に公開する必要がない可能性があります。クラスター内のサービスに接続できるすべてのクライアントがプライベートゾーンからの DNS レコードを持つプライベート DNS サービスを使用する場合、クラスターのパブリック DNS レコードを含める必要はありません。
クラスターのデプロイ後に、DNS
カスタムリソース(CR)を変更することで、その DNS をプライベートゾーンのみを使用するように変更できます。このように DNS
CR を変更すると、後で作成された DNS レコードがパブリック DNS サーバーに公開されず、DNS レコードに関する情報が内部ユーザーに分離されます。これは、クラスターをプライベートに設定する場合や、DNS レコードを公開したくない場合に実行できます。
または、プライベートクラスターであっても、クライアントがそのクラスターで実行されているアプリケーションの DNS 名を解決できるため、DNS レコード用の public ゾーンを保持することができます。たとえば、組織には、パブリックインターネットに接続するマシンを設定し、プライベート IP アドレスに接続するために特定のプライベート IP 範囲の VPN 接続を確立できます。これらのマシンからの DNS ルックアップでは、パブリック DNS を使用してそれらのサービスのプライベートアドレスを判別し、VPN 経由でプライベートアドレスに接続します。
手順
次のコマンドを実行して出力を確認し、クラスターの
DNS
CR を確認します。$ oc get dnses.config.openshift.io/cluster -o yaml
出力例
apiVersion: config.openshift.io/v1 kind: DNS metadata: creationTimestamp: "2019-10-25T18:27:09Z" generation: 2 name: cluster resourceVersion: "37966" selfLink: /apis/config.openshift.io/v1/dnses/cluster uid: 0e714746-f755-11f9-9cb1-02ff55d8f976 spec: baseDomain: <base_domain> privateZone: tags: Name: <infrastructure_id>-int kubernetes.io/cluster/<infrastructure_id>: owned publicZone: id: Z2XXXXXXXXXXA4 status: {}
spec
セクションには、プライベートゾーンとパブリックゾーンの両方が含まれることに注意してください。次のコマンドを実行して、
DNS
CR にパッチを適用し、パブリックゾーンを削除します。$ oc patch dnses.config.openshift.io/cluster --type=merge --patch='{"spec": {"publicZone": null}}'
出力例
dns.config.openshift.io/cluster patched
Ingress Operator は、
IngressController
オブジェクトのDNS
レコードの作成時に DNS CR 定義を参照します。プライベートゾーンのみを指定すると、プライベートレコードのみが作成されます。重要パブリックゾーンを削除した時に、既存の DNS レコードは変更されません。公開済みのパブリック DNS レコードは公開したくない場合は手動で削除する必要があります。
検証
次のコマンドを実行して、出力を確認し、クラスターの
DNS
CR を確認し、パブリックゾーンが削除されていることを確認します。$ oc get dnses.config.openshift.io/cluster -o yaml
出力例
apiVersion: config.openshift.io/v1 kind: DNS metadata: creationTimestamp: "2019-10-25T18:27:09Z" generation: 2 name: cluster resourceVersion: "37966" selfLink: /apis/config.openshift.io/v1/dnses/cluster uid: 0e714746-f755-11f9-9cb1-02ff55d8f976 spec: baseDomain: <base_domain> privateZone: tags: Name: <infrastructure_id>-int kubernetes.io/cluster/<infrastructure_id>-wfpg4: owned status: {}