8.5. クラスター全体のプロキシーの設定
実稼働環境では、インターネットへの直接アクセスを拒否し、代わりに HTTP または HTTPS プロキシーを使用することができます。既存クラスターのプロキシーオブジェクトを変更 するか、または新規クラスターの install-config.yaml
ファイルでプロキシー設定を行うことにより、OpenShift Container Platform をプロキシーを使用するように設定できます。
サポート対象プラットフォーム上のクラスターに対してクラスター全体の Egress プロキシーを有効にすると、Red Hat Enterprise Linux CoreOS (RHCOS) は status.noProxy
パラメーターに、サポート対象プラットフォーム上に存在する install-config.yaml
ファイルの networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
、networking.serviceNetwork[]
フィールドの値を入力します。
インストール後のタスクとして、networking.clusterNetwork[].cidr
の値を変更できますが、networking.machineNetwork[].cidr
および networking.serviceNetwork[]
の値は変更できません。詳細は、「クラスターネットワーク範囲の設定」を参照してください。
Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure、および Red Hat OpenStack Platform (RHOSP) へのインストールの場合、status.noProxy
パラメーターには、インスタンスメタデータのエンドポイント (169.254.169.254
) も設定されます。
RHCOS によって Proxy
オブジェクトの status:
セグメントに追加される値の例
- 1
- Pod IP アドレスの割り当てに使用する IP アドレスブロックを指定します。デフォルト値は
10.128.0.0/14
で、ホストの接頭辞は/23
です。 - 2
- マシンの IP アドレスブロックを指定します。デフォルト値は
10.0.0.0/16
です。 - 3
- サービスの IP アドレスブロックを指定します。デフォルト値は
172.30.0.0/16
です。 - 4
oc get infrastructures.config.openshift.io cluster -o jsonpath='{.status.etcdDiscoveryDomain}'
コマンドを実行すると、内部 API サーバーの URL を見つけることができます。
使用しているインストールタイプに networking.machineNetwork[].cidr
フィールドの設定が含まれていない場合は、ノード間のトラフィックがプロキシーをバイパスできるようにするために、.status.noProxy
フィールドにマシンの IP アドレスを手動で含める必要があります。
8.5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
クラスターがアクセスする必要のあるサイト を確認し、プロキシーをバイパスする必要があるかどうかを判断します。デフォルトで、すべてのクラスターシステムの Egress トラフィック (クラスターをホストするクラウドのクラウドプロバイダー API に対する呼び出しを含む) はプロキシーされます。システム全体のプロキシーは、ユーザーのワークロードではなく、システムコンポーネントにのみ影響を与えます。必要に応じて、Proxy
オブジェクトの spec.noProxy
パラメーターにサイトを追加してプロキシーをバイパスします。
8.5.2. クラスター全体のプロキシーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Proxy
オブジェクトは、クラスター全体の Egress プロキシーを管理するために使用されます。プロキシーが設定されていない状態でクラスターをインストールまたはアップグレードすると、Proxy
オブジェクトは生成されますが、その spec
が nil になります。以下に例を示します。
cluster
という名前の Proxy
オブジェクトのみがサポートされ、追加のプロキシーを作成することはできません。
クラスター管理者は、cluster
Proxy
オブジェクトを変更することで、OpenShift Container Platform のプロキシーを設定できます。
クラスターのクラスター全体のプロキシー機能を有効にし、Proxy
オブジェクトファイルを保存すると、Machine Config Operator (MCO) によってクラスター内のすべてのノードが再起動され、各ノードがクラスターの外部にある接続にアクセスできるようになります。これらのノードを手動で再起動する必要はありません。
前提条件
- クラスター管理者のパーミッション。
-
OpenShift Container Platform
oc
CLI ツールがインストールされている。
手順
HTTPS 接続のプロキシーに必要な追加の CA 証明書が含まれる config map を作成します。
注記プロキシーのアイデンティティー証明書が Red Hat Enterprise Linux CoreOS (RHCOS) トラストバンドルの認証局によって署名されている場合は、この手順をスキップできます。
user-ca-bundle.yaml
というファイルを作成し、PEM でエンコードされた証明書の値を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
user-ca-bundle.yaml
ファイルから config map を作成します。oc create -f user-ca-bundle.yaml
$ oc create -f user-ca-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
oc edit
コマンドを使用してProxy
オブジェクトを変更します。oc edit proxy/cluster
$ oc edit proxy/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロキシーに必要なフィールドを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- クラスター外の HTTP 接続を作成するために使用するプロキシー URL。URL スキームは
http
である必要があります。 - 2
- クラスター外で HTTPS 接続を作成するために使用するプロキシー URL。URL スキームは
http
またはhttps
である必要があります。URL スキームをサポートするプロキシーの URL を指定します。たとえば、プロキシーがhttps
を使用するように設定されていても、http
しかサポートしていない場合、ほとんどのプロキシーはエラーを報告します。このエラーメッセージはログに反映されず、代わりにネットワーク接続エラーのように見える場合があります。クラスターからのhttps
接続をリッスンするプロキシーを使用する場合は、プロキシーが使用する CA と証明書を受け入れるようにクラスターを設定する必要がある場合があります。 - 3
- プロキシーを除外するための宛先ドメイン名、ドメイン、IP アドレス (またはその他のネットワーク CIDR)、およびポート番号のコンマ区切りリスト。注記
ポート番号は、IPv6 アドレスを設定する場合にのみサポートされます。IPv4 アドレスを設定する場合、ポート番号はサポートされません。
サブドメインのみと一致するように、ドメインの前に
.
を付けます。たとえば、.y.com
はx.y.com
に一致しますが、y.com
には一致しません。*
を使用し、すべての宛先のプロキシーをバイパスします。noproxy
フィールドにドメインアドレスを含める必要がある場合は、noproxy
フィールドにその FQDN または接頭辞が一致するサブドメインを明示的に指定する必要があります。ドメインをカプセル化する IP アドレスまたは CIDR 範囲は使用できません。なぜなら、クラスターは DNS が IP アドレスを返すのを待たずにルート接続を割り当て、実行されているリクエストを明示的にチェックするからです。たとえば、noproxy
フィールドに10.0.0.0/24
などの CIDR ブロック値がある場合、フィールドがhttps://10.0.0.11
にアクセスしようとすると、アドレスが正常にマッチします。しかし、A レコードのエントリーが10.0.0.11
であるhttps://exampleserver.externaldomain.com
にアクセスしようとすると、失敗します。noproxy
フィールドに.externaldomain.com
という追加の値が必要です。インストール設定の
networking.machineNetwork[].cidr
フィールドで定義されたネットワークに含まれていないコンピュートノードをスケールアップする場合は、接続の問題を防ぐために、そのノードをこのリストに追加する必要があります。httpProxy
またはhttpsProxy
フィールドのいずれも設定されていない場合に、このフィールドは無視されます。 - 4
httpProxy
およびhttpsProxy
の値をステータスに書き込む前の readiness チェックに使用するクラスター外の 1 つ以上の URL。- 5
- HTTPS 接続のプロキシーに必要な追加の CA 証明書が含まれる、
openshift-config
namespace の config map の参照。ここで参照する前に config map が存在している必要があります。このフィールドは、プロキシーのアイデンティティー証明書が RHCOS 信頼バンドルからの認証局によって署名されない限り必要になります。
- 変更を適用するためにファイルを保存します。
8.5.3. クラスター全体のプロキシーの削除 リンクのコピーリンクがクリップボードにコピーされました!
cluster
プロキシーオブジェクトは削除できません。クラスターからプロキシーを削除するには、プロキシーオブジェクトからすべての spec
フィールドを削除します。
前提条件
- クラスター管理者のパーミッション。
-
OpenShift Container Platform
oc
CLI ツールがインストールされている。
手順
oc edit
コマンドを使用してプロキシーを変更します。oc edit proxy/cluster
$ oc edit proxy/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロキシーオブジェクトからすべての
spec
フィールドを削除します。以下に例を示します。apiVersion: config.openshift.io/v1 kind: Proxy metadata: name: cluster spec: {}
apiVersion: config.openshift.io/v1 kind: Proxy metadata: name: cluster spec: {}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。
8.5.4. クラスター全体のプロキシー設定の検証 リンクのコピーリンクがクリップボードにコピーされました!
クラスター全体のプロキシー設定がデプロイしたら、期待どおりに動作していることを検証できます。次の手順に従って、ログを確認し、実装を検証してください。
前提条件
- クラスター管理者パーミッションがある。
-
OpenShift Container Platform
oc
CLI ツールがインストールされている。
手順
oc
コマンドを使用してプロキシー設定のステータスを確認します。oc get proxy/cluster -o yaml
$ oc get proxy/cluster -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
出力内のプロキシーフィールドを検証して、設定と一致していることを確認します。具体的には、
spec.httpProxy
、spec.httpsProxy
、spec.noProxy
、およびspec.trustedCA
フィールドを確認します。 Proxy
オブジェクトのステータスを検査します。oc get proxy/cluster -o jsonpath='{.status}'
$ oc get proxy/cluster -o jsonpath='{.status}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Machine Config Operator (MCO) のログをチェックして、設定の変更が正常に適用されたことを確認します。
oc logs -n openshift-machine-config-operator $(oc get pods -n openshift-machine-config-operator -l k8s-app=machine-config-operator -o name)
$ oc logs -n openshift-machine-config-operator $(oc get pods -n openshift-machine-config-operator -l k8s-app=machine-config-operator -o name)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要に応じて、プロキシー設定が適用され、ノードが再起動されたことを示すメッセージを確認します。
外部リクエストを行うコンポーネント (Cluster Version Operator (CVO) など) のログをチェックして、システムコンポーネントがプロキシーを使用していることを確認します。
oc logs -n openshift-cluster-version $(oc get pods -n openshift-cluster-version -l k8s-app=machine-config-operator -o name)
$ oc logs -n openshift-cluster-version $(oc get pods -n openshift-cluster-version -l k8s-app=machine-config-operator -o name)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 外部リクエストがプロキシー経由でルーティングされたことを示すログエントリーを確認します。