8.2. プライベートクラスター
外部エンドポイントを公開しないプライベート OpenShift Container Platform クラスターをデプロイすることができます。プライベートクラスターは内部ネットワークからのみアクセスでき、インターネット上では表示されません。
デフォルトで、OpenShift Container Platform はパブリックにアクセス可能な DNS およびエンドポイントを使用できるようにプロビジョニングされます。プライベートクラスターは、クラスターのデプロイ時に DNS、Ingress コントローラー、および API サーバーを private に設定します。つまり、クラスターリソースは内部ネットワークからのみアクセスでき、インターネット上では表示されません。
クラスターにパブリックサブネットがある場合、管理者により作成されたロードバランサーサービスはパブリックにアクセスできる可能性があります。クラスターのセキュリティーを確保するには、これらのサービスに明示的にプライベートアノテーションが付けられていることを確認してください。
プライベートクラスターをデプロイするには、以下を行う必要があります。
- 要件を満たす既存のネットワークを使用します。クラスターリソースはネットワーク上の他のクラスター間で共有される可能性があります。
以下にアクセスできるマシンからデプロイ。
- プロビジョニングするクラウドの API サービス。
- プロビジョニングするネットワーク上のホスト。
- インストールメディアを取得するインターネット。
これらのアクセス要件を満たし、所属する会社のガイドラインに準拠したすべてのマシンを使用することができます。たとえば、このマシンには、クラウドネットワーク上の bastion ホスト、または VPN 経由でネットワークにアクセスできるマシンを使用できます。
8.2.1. Azure のプライベートクラスター
Microsoft Azure でプライベートクラスターを作成するには、クラスターをホストするために既存のプライベート VNet とサブネットを指定する必要があります。インストールプログラムは、クラスターが必要とする DNS レコードを解決できる必要もあります。インストールプログラムは、内部トラフィック用としてのみ Ingress Operator および API サーバーを設定します。
ネットワークがプライベート VNET に接続される方法によって、クラスターのプライベート DNS レコードを解決するために DNS フォワーダーを使用する必要がある場合があります。クラスターのマシンは、DNS 解決に 168.63.129.16
を内部で使用します。詳細は、Azure ドキュメントの What is Azure Private DNS? および What is IP address 168.63.129.16? を参照してください。
クラスターには、Azure API にアクセスするためにインターネットへのアクセスが依然として必要です。
以下のアイテムは、プライベートクラスターのインストール時に必要ではなく、作成されません。
-
BaseDomainResourceGroup
(クラスターがパブリックレコードを作成しないため) - パブリック IP アドレス
- パブリック DNS レコード
パブリックエンドポイント
The cluster is configured so that the Operators do not create public records for the cluster and all cluster machines are placed in the private subnets that you specify.
8.2.1.1. 制限事項
Azure 上のプライベートクラスターは、既存の VNet の使用に関連する制限のみの制限を受けます。
8.2.2. ユーザー定義のアウトバウンドルーティング
OpenShift Container Platform では、クラスターがインターネットに接続するために独自のアウトバウンドルーティングを選択できます。これにより、パブリック IP アドレスおよびパブリックロードバランサーの作成を省略できます。
クラスターをインストールする前に、install-config.yaml
ファイルのパラメーターを変更してユーザー定義のルーティングを設定できます。クラスターのインストール時にアウトバウンドルーティングを使用するには、既存の VNet が必要です。インストールプログラムはこれを設定しません。
クラスターをユーザー定義のルーティングを使用するように設定する際に、インストールプログラムは以下のリソースを作成しません。
- インターネットにアクセスするためのアウトバウンドルール。
- パブリックロードバランサーのパブリック IP。
- アウトバウンド要求のパブリックロードバランサーにクラスターマシンを追加する Kubernetes Service オブジェクト。
ユーザー定義のルーティングを設定する前に、以下の項目が利用可能であることを確認する必要があります。
- OpenShift イメージレジストリーミラーを使用しない場合は、コンテナーイメージのプルにインターネットへの Egress を使用できます。
- クラスターは Azure API にアクセスできます。
- 各種の allowlist エンドポイントが設定されます。これらのエンドポイントについては、ファイアウォールの設定セクションで参照できます。
ユーザー定義のルーティングを使用したインターネットアクセスでサポートされる既存のネットワーク設定がいくつかあります。
ネットワークアドレス変換のあるプライベートクラスター
Azure VNET NAT (ネットワークアドレス変換) を使用して、クラスター内のサブネットのアウトバウンドインターネットアクセスを提供できます。設定手順は、Azure ドキュメントの Create a NAT gateway using Azure CLI を参照してください。
Azure NAT およびユーザー定義のルーティングが設定された VNet 設定を使用する場合、パブリックエンドポイントのないプライベートクラスターを作成できます。
Azure ファイアウォールのあるプライベートクラスター
Azure ファイアウォールを使用して、クラスターのインストールに使用される VNet のアウトバウンドルーティングを提供できます。Azure ドキュメントで Azure ファイアウォールのあるユーザー定義のルーティングを提供する方法 を確認できます。
Azure ファイアウォールおよびユーザー定義のルーティングが設定された VNet 設定を使用する場合、パブリックエンドポイントのないプライベートクラスターを作成できます。
プロキシー設定のあるプライベートクラスター
ユーザー定義のルーティングと共にプロキシーを使用し、インターネットへの Egress を許可することができます。クラスター Operator がプロキシーを使用して Azure API にアクセスしないようにする必要があります。Operator はプロキシー外から Azure API にアクセスできる必要があります。
0.0.0.0/0
が Azure によって自動的に設定された状態で、サブネットのデフォルトのルートテーブルを使用する場合、すべての Azure API 要求は、IP アドレスがパブリックな場合でも Azure の内部ネットワークでルーティングされます。ネットワークセキュリティーグループのルールが Azure API エンドポイントへの Egress を許可している限り、ユーザー定義のルーティングが設定されたプロキシーにより、パブリックエンドポイントのないプライベートクラスターを作成できます。
インターネットアクセスのないプライベートクラスター
Azure API を除く、インターネットへのすべてのアクセスを制限するプライベートネットワークをインストールできます。これは、リリースイメージレジストリーをローカルにミラーリングすることによって実現されます。クラスターは以下にアクセスできる必要があります。
- コンテナーイメージのプルを可能にする OpenShift イメージレジストリーミラー
- Azure API へのアクセス
各種の要件を利用可能な場合、ユーザー定義のルーティングを使用して、パブリックエンドポイントのないプライベートクラスターを作成できます。