2.4. Amazon Web Services クラスターの API サーバーをプライベートに制限する
組織のセキュリティー体制上、クラスターがオープンな API エンドポイントを使用することが許可されていない場合は、API サーバーが内部ロードバランサーのみを使用するように制限できます。この API サーバー制限を実装するには、Amazon Web Services (AWS) コンソールと OpenShift CLI(oc) を使用して、外部ロードバランサーコンポーネントを削除します。
外部ロードバランサーを削除する OpenShift CLI (oc) の手順には、Machine API が必要です。Machine API を使用できないクラスターの場合は、外部ロードバランサーを手動で削除する必要があります。
インフラストラクチャープラットフォームタイプが none のクラスターでは、Machine API を使用できません。クラスターのプラットフォームタイプを表示するには、以下のコマンドを実行します。
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
前提条件
- AWS に OpenShift Container Platform クラスターをインストールした。
- あなたは管理者特権を持つユーザーとして AWS コンソールにアクセスできます。
-
あなたは管理者特権ユーザーとして OpenShift CLI(
oc) にアクセスできます。
手順
- 管理者権限を持つユーザー特権として AWS コンソールにログインしてください。
外部ロードバランサーを削除します。
注記プライベートゾーンの API DNS エントリーは、同一の設定を使用する内部ロードバランサーをすでに参照するため、内部ロードバランサーを変更する必要はありません。
パブリックゾーンにある
api.<cluster_name>.<domain_name> のDNS エントリーを削除します。ここで、
<cluster_name>はクラスターの名前、<domain_name>はクラスターのベースドメインです。外部ロードバランサーを削除するには、管理者特権のユーザーとして OpenShift CLI(
oc) にログインします。クラスターでコントロールプレーンマシンセットを使用している場合は、
ControlPlaneMachineSetカスタムリソース (CR) を編集して外部ロードバランサーを削除してください。次のコマンドを実行して、
ControlPlaneMachineSetCR を編集します。$ oc edit controlplanemachineset.machine.openshift.io cluster \ -n openshift-machine-apiコントロールプレーンマシンセットカスタムリソース (CR) 内の対応する行を削除して、外部ロードバランサーを削除します。
CR の
spec.template.spec.providerSpec.value.loadBalancersセクションでは、外部ロードバランサーの名前の値は-extで終わります。外部ロードバランサー名の値を含む行と、それに付随する外部ロードバランサータイプの値を含む行を削除します。apiVersion: machine.openshift.io/v1 kind: ControlPlaneMachineSet metadata: name: cluster namespace: openshift-machine-api spec: # ... template: # ... spec: providerSpec: value: loadBalancers: - name: <cluster_id>-ext type: network - name: <cluster_id>-int type: network # ...変更を保存して、オブジェクト仕様を終了します。
コントロールプレーンマシンセットへの更新を保存すると、設定された更新ストラテジーに従って Control Plane Machine Set Operator がコントロールプレーンマシンを更新します。詳細は、制御プレーン設定の更新を参照してください。
クラスターがコントロールプレーンマシンセットを使用しない場合は、各コントロールプレーンマシンから外部ロードバランサーを削除する必要があります。
以下のコマンドを実行して、クラスター内のマシンをリスト表示します。
$ oc get machine -n openshift-machine-api出力例
NAME STATE TYPE REGION ZONE AGE <cluster_id>-master-0 running m4.xlarge us-east-1 us-east-1a 17m <cluster_id>-master-1 running m4.xlarge us-east-1 us-east-1b 17m <cluster_id>-master-2 running m4.xlarge us-east-1 us-east-1a 17m <cluster_id>-worker-us-east-1a-<zone_tag> running m4.xlarge us-east-1 us-east-1a 15m <cluster_id>-worker-us-east-1a-<zone_tag> running m4.xlarge us-east-1 us-east-1a 15m <cluster_id>-worker-us-east-1b-<zone_tag> running m4.xlarge us-east-1 us-east-1b 15m制御プレーンのマシンは、その名前に
マスター文字列を含んでいます。各コントロールプレーンマシンから外部ロードバランサーを削除します。
次のコマンドを実行して、コントロールプレーンマシンオブジェクトを編集します。
$ oc edit machines -n openshift-machine-api <control_plane_machine_name>ここで、
<control_plane_machine_name>は変更するコントロールプレーンマシンオブジェクトの名前です。外部ロードバランサーに関する記述を削除してください。
CR の
spec.providerSpec.value.loadBalancersセクションでは、外部ロードバランサーの名前の値は-extで終わります。外部ロードバランサー名の値を含む行と、それに付随する外部ロードバランサータイプの値を含む行を削除します。apiVersion: machine.openshift.io/v1beta1 kind: Machine metadata: name: <control_plane_machine_name> namespace: openshift-machine-api spec: providerSpec: value: loadBalancers: - name: <cluster_id>-ext type: network - name: <cluster_id>-int type: network # ...- 変更を保存して、オブジェクト仕様を終了します。
- コントロールプレーンマシンごとにこのプロセスを繰り返します。