5.8. OpenShift Container Platform の Ingress Node Firewall Operator
Ingress Node Firewall Operator は、OpenShift Container Platform でノードレベルの Ingress トラフィックを管理するための、ステートレスな eBPF ベースのファイアウォールを提供します。
5.8.1. Ingress Node Firewall Operator
					Ingress Node Firewall Operator は、ファイアウォール設定で指定および管理するノードにデーモンセットをデプロイすることにより、ノードレベルで Ingress ファイアウォールルールを提供します。デーモンセットをデプロイするには、IngressNodeFirewallConfig カスタムリソース (CR) を作成します。Operator は IngressNodeFirewallConfig CR を適用して、nodeSelector に一致するすべてのノードで実行される ingress ノードファイアウォールデーモンセット (daemon) を作成します。
				
					IngressNodeFirewall CR の rules を設定し、nodeSelector を使用して値を "true" に設定してクラスターに適用します。
				
Ingress Node Firewall Operator は、ステートレスファイアウォールルールのみをサポートします。
ネイティブ XDP ドライバーをサポートしないネットワークインターフェイスコントローラー (NIC) は、より低いパフォーマンスで実行されます。
OpenShift Container Platform 4.14 以降の場合は、RHEL 9.0 以降で Ingress Node Firewall Operator を実行する必要があります。
5.8.2. Ingress Node Firewall Operator のインストール
クラスター管理者は、OpenShift Container Platform CLI または Web コンソールを使用して Ingress Node Firewall Operator をインストールできます。
5.8.2.1. CLI を使用した Ingress Node Firewall Operator のインストール
クラスター管理者は、CLI を使用して Operator をインストールできます。
前提条件
- 
								OpenShift CLI (oc) がインストールされている。
- 管理者権限を持つアカウントがある。
手順
- openshift-ingress-node-firewallnamespace を作成するには、次のコマンドを入力します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- OperatorGroupCR を作成するには、以下のコマンドを実行します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Ingress Node Firewall Operator にサブスクライブします。 - Ingress Node Firewall Operator の - SubscriptionCR を作成するには、次のコマンドを入力します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- Operator がインストールされていることを確認するには、以下のコマンドを入力します。 - oc get ip -n openshift-ingress-node-firewall - $ oc get ip -n openshift-ingress-node-firewall- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CSV APPROVAL APPROVED install-5cvnz ingress-node-firewall.4.16.0-202211122336 Automatic true - NAME CSV APPROVAL APPROVED install-5cvnz ingress-node-firewall.4.16.0-202211122336 Automatic true- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Operator のバージョンを確認するには、次のコマンドを入力します。 - oc get csv -n openshift-ingress-node-firewall - $ oc get csv -n openshift-ingress-node-firewall- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME DISPLAY VERSION REPLACES PHASE ingress-node-firewall.4.16.0-202211122336 Ingress Node Firewall Operator 4.16.0-202211122336 ingress-node-firewall.4.16.0-202211102047 Succeeded - NAME DISPLAY VERSION REPLACES PHASE ingress-node-firewall.4.16.0-202211122336 Ingress Node Firewall Operator 4.16.0-202211122336 ingress-node-firewall.4.16.0-202211102047 Succeeded- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.8.2.2. Web コンソールを使用した Ingress Node Firewall Operator のインストール
クラスター管理者は、Web コンソールを使用して Operator をインストールできます。
前提条件
- 
								OpenShift CLI (oc) がインストールされている。
- 管理者権限を持つアカウントがある。
手順
- Ingress Node Firewall Operator をインストールします。 - 
										OpenShift Container Platform Web コンソールで、Operators OperatorHub をクリックします。 
- 利用可能な Operator のリストから Ingress Node Firewall Operator を選択し、Install をクリックします。
- Install Operator ページの Installed Namespace で、Operator recommended Namespace を選択します。
- Install をクリックします。
 
- 
										OpenShift Container Platform Web コンソールで、Operators 
- Ingress Node Firewall Operator が正常にインストールされていることを確認します。 - 
										Operators Installed Operators ページに移動します。 
- Ingress Node Firewall Operator が openshift-ingress-node-firewall プロジェクトにリストされ、Status が InstallSucceeded であることを確認します。 注記- インストール時に、Operator は Failed ステータスを表示する可能性があります。インストールが後に InstallSucceeded メッセージを出して正常に実行される場合は、Failed メッセージを無視できます。 - Operator の Status が InstallSucceeded でない場合は、次の手順を使用してトラブルシューティングを行います。 - Operator Subscriptions および Install Plans タブで、Status の下の失敗またはエラーの有無を確認します。
- 
												Workloads Pods ページに移動し、 openshift-ingress-node-firewallプロジェクトの Pod のログを確認します。
- YAML ファイルの namespace を確認してください。アノテーションが抜けている場合は、次のコマンドを使用して、アノテーション - workload.openshift.io/allowed=managementを Operator namespace に追加できます。- oc annotate ns/openshift-ingress-node-firewall workload.openshift.io/allowed=management - $ oc annotate ns/openshift-ingress-node-firewall workload.openshift.io/allowed=management- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- 単一ノードの OpenShift クラスターの場合、 - openshift-ingress-node-firewallnamespace には- workload.openshift.io/allowed=managementアノテーションが必要です。
 
 
- 
										Operators 
5.8.3. Ingress Node Firewall Operator のデプロイ
前提条件
- Ingress Node Firewall Operator がインストールされます。
手順
						Ingress Node Firewall Operator をデプロイするには、Operator のデーモンセットをデプロイする IngressNodeFirewallConfig カスタムリソースを作成します。ファイアウォールルールを適用することで、1 つまたは複数の IngressNodeFirewall CRD をノードにデプロイできます。
					
- 
							ingressnodefirewallconfigという名前のopenshift-ingress-node-firewallnamespace 内にIngressNodeFirewallConfigを作成します。
- 次のコマンドを実行して、Ingress Node Firewall Operator ルールをデプロイします。 - oc apply -f rule.yaml - $ oc apply -f rule.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.8.3.1. Ingress ノードファイアウォール設定オブジェクト
Ingress Node Firewall 設定オブジェクトのフィールドについて、次の表で説明します。
| フィールド | 型 | 説明 | 
|---|---|---|
| 
										 | 
										 | 
										CR オブジェクトの名前。ファイアウォールルールオブジェクトの名前は  | 
| 
										 | 
										 | 
										Ingress Firewall Operator CR オブジェクトの namespace。 | 
| 
										 | 
										 | 指定されたノードラベルを介してノードをターゲットにするために使用されるノード選択制約。以下に例を示します。 spec:
  nodeSelector:
    node-role.kubernetes.io/worker: ""注記 
											デーモンセットを開始するには、 | 
							Operator は CR を使用し、nodeSelector に一致するすべてのノード上に Ingress ノードファイアウォールデーモンセットを作成します。
						
Ingress Node Firewall Operator の設定例
次の例では、完全な Ingress ノードファイアウォール設定が指定されています。
Ingress ノードファイアウォール設定オブジェクトの例
							Operator は CR を使用し、nodeSelector に一致するすべてのノード上に Ingress ノードファイアウォールデーモンセットを作成します。
						
5.8.3.2. Ingress ノードファイアウォールルールオブジェクト
Ingress ノードファイアウォールルールオブジェクトのフィールドについて、次の表で説明します。
| フィールド | 型 | 説明 | 
|---|---|---|
| 
										 | 
										 | CR オブジェクトの名前。 | 
| 
										 | 
										 | 
										このオブジェクトのフィールドは、ファイアウォールルールを適用するインターフェイスを指定します。たとえば、 | 
| 
										 | 
										 | 
										 | 
| 
										 | 
										 | 
										 | 
Ingress オブジェクトの設定
						ingress オブジェクトの値は、次の表で定義されています。
					
| フィールド | 型 | 説明 | 
|---|---|---|
| 
										 | 
										 | CIDR ブロックを設定できます。異なるアドレスファミリーから複数の CIDR を設定できます。 注記 
											異なる CIDR を使用すると、同じ順序ルールを使用できます。CIDR が重複する同じノードおよびインターフェイスに対して複数の  | 
| 
										 | 
										 | 
										Ingress ファイアウォール  
										 
										 注記 Ingress ファイアウォールルールは、無効な設定をブロックする検証 Webhook を使用して検証されます。検証 Webhook は、API サーバーなどの重大なクラスターサービスをブロックすることを防ぎます。 | 
Ingress ノードファイアウォールルールオブジェクトの例
次の例では、完全な Ingress ノードファイアウォール設定が指定されています。
Ingress ノードファイアウォールの設定例
- 1
- <label_name> と <label_value> はノード上に存在する必要があり、ingressfirewallconfigCR を実行するノードに適用されるnodeselectorラベルと値に一致する必要があります。<label_value> は、trueまたはfalseです。nodeSelectorラベルを使用すると、ノードのグループを個別にターゲットにして、ingressfirewallconfigCR の使用に異なるルールを適用できます。
ゼロトラスト Ingress ノードファイアウォールルールオブジェクトの例
ゼロトラストの Ingress ノードファイアウォールルールは、マルチインターフェイスクラスターに追加のセキュリティーを提供できます。たとえば、ゼロトラストの Ingress ノードファイアウォールルールを使用して、SSH を除く特定のインターフェイス上のすべてのトラフィックをドロップできます。
次の例では、ゼロトラスト Ingress ノードファイアウォールルールセットの完全な設定が指定されています。
次の場合、ユーザーはアプリケーションが使用するすべてのポートを許可リストに追加して、適切な機能を確保する必要があります。
ゼロトラストの Ingress ノードファイアウォールルールの例
5.8.4. Ingress Node Firewall Operator ルールの表示
手順
- 次のコマンドを実行して、現在のルールをすべて表示します。 - oc get ingressnodefirewall - $ oc get ingressnodefirewall- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 返された - <resource>名のいずれかを選択し、次のコマンドを実行してルールまたは設定を表示します。- oc get <resource> <name> -o yaml - $ oc get <resource> <name> -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.8.5. Ingress Node Firewall Operator のトラブルシューティング
- 次のコマンドを実行して、インストールされている Ingress ノードファイアウォールのカスタムリソース定義 (CRD) を一覧表示します。 - oc get crds | grep ingressnodefirewall - $ oc get crds | grep ingressnodefirewall- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME READY UP-TO-DATE AVAILABLE AGE ingressnodefirewallconfigs.ingressnodefirewall.openshift.io 2022-08-25T10:03:01Z ingressnodefirewallnodestates.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z ingressnodefirewalls.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z - NAME READY UP-TO-DATE AVAILABLE AGE ingressnodefirewallconfigs.ingressnodefirewall.openshift.io 2022-08-25T10:03:01Z ingressnodefirewallnodestates.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z ingressnodefirewalls.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Ingress Node Firewall Operator の状態を表示します。 - oc get pods -n openshift-ingress-node-firewall - $ oc get pods -n openshift-ingress-node-firewall- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME READY STATUS RESTARTS AGE ingress-node-firewall-controller-manager 2/2 Running 0 5d21h ingress-node-firewall-daemon-pqx56 3/3 Running 0 5d21h - NAME READY STATUS RESTARTS AGE ingress-node-firewall-controller-manager 2/2 Running 0 5d21h ingress-node-firewall-daemon-pqx56 3/3 Running 0 5d21h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 次のフィールドは、Operator のステータスに関する情報を提供します: - READY、- STATUS、- AGE、および- RESTARTS。Ingress Node Firewall Operator が割り当てられたノードに設定されたデーモンをデプロイしている場合、- STATUSフィールドは- Runningになります。
- 次のコマンドを実行して、すべての Ingress ファイアウォールノード Pod のログを収集します。 - oc adm must-gather – gather_ingress_node_firewall - $ oc adm must-gather – gather_ingress_node_firewall- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ログは、 - /sos_commands/ebpfにある eBPF- bpftool出力を含む sos ノードのレポートで利用できます。これらのレポートには、Ingress ファイアウォール XDP がパケット処理を処理し、統計を更新し、イベントを発行するときに使用または更新されたルックアップテーブルが含まれます。