23.9. VRF へのセカンダリーネットワークの割り当て
クラスター管理者は、CNI VRF プラグインを使用して、Virtual Routing and Forwarding (VRF) ドメインの追加ネットワークを設定できます。このプラグインが作成する仮想ネットワークは、指定した物理インターフェイスに関連付けられます。
VRF インスタンスでセカンダリーネットワークを使用すると、次の利点があります。
- ワークロードの分離
- 追加のネットワークの VRF インスタンスを設定して、ワークロードトラフィックを分離します。
- セキュリティーの向上
- VRF ドメイン内の分離されたネットワークパスを通じて、セキュリティーを向上させます。
- マルチテナンシーのサポート
- 各テナントの VRF ドメイン内で、一意のルーティングテーブルを使用したネットワークセグメンテーションを通じて、マルチテナントをサポートします。
					VRF を使用するアプリケーションは、特定のデバイスに対してバインドする必要があります。一般的な使用方法として、ソケットに SO_BINDTODEVICE オプションを使用できます。SO_BINDTODEVICE オプションは、渡されたインターフェイス名 (例: eth1) で指定されたデバイスにソケットをバインドします。SO_BINDTODEVICE オプションを使用するには、アプリケーションに CAP_NET_RAW 機能が必要です。
				
					ip vrf exec コマンドを使用した VRF の使用は、OpenShift Container Platform Pod ではサポートされません。VRF を使用するには、アプリケーションを VRF インターフェイスに直接バインドします。
				
23.9.1. CNI VRF プラグインを使用した追加のネットワーク割り当ての作成
					Cluster Network Operator (CNO) は追加ネットワークの定義を管理します。作成する追加ネットワークを指定する場合、CNO は NetworkAttachmentDefinition カスタムリソース (CR) を自動的に作成します。
				
						Cluster Network Operator が管理する NetworkAttachmentDefinition CR は編集しないでください。これを実行すると、追加ネットワークのネットワークトラフィックが中断する可能性があります。
					
CNI VRF プラグインで追加のネットワーク割り当てを作成するには、以下の手順を実行します。
前提条件
- OpenShift Container Platform CLI (oc) をインストールします。
- cluster-admin 権限を持つユーザーとして OpenShift クラスターにログインします。
手順
- 以下のサンプル CR のように、追加のネットワーク割り当て用の - Networkカスタムリソース (CR) を作成し、追加ネットワークの- rawCNIConfig設定を挿入します。YAML を- additional-network-attachment.yamlファイルとして保存します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- pluginsは一覧である必要があります。リストの最初の項目は、VRF ネットワークのベースとなるセカンダリーネットワークである必要があります。一覧の 2 つ目の項目は、VRF プラグイン設定です。
- 2
- typeは- vrfに設定する必要があります。
- 3
- vrfnameは、インターフェイスが割り当てられた VRF の名前です。これが Pod に存在しない場合は作成されます。
- 4
- オプション:tableはルーティングテーブル ID です。デフォルトで、tableidパラメーターが使用されます。これが指定されていない場合、CNI は空のルーティングテーブル ID を VRF に割り当てます。
 注記- VRF は、リソースが - netdeviceタイプの場合にのみ正常に機能します。
- Networkリソースを作成します。- oc create -f additional-network-attachment.yaml - $ oc create -f additional-network-attachment.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下のコマンドを実行して、CNO が - NetworkAttachmentDefinitionCR を作成していることを確認します。- <namespace>を、ネットワーク割り当ての設定時に指定した namespace に置き換えます (例:- additional-network-1)。- oc get network-attachment-definitions -n <namespace> - $ oc get network-attachment-definitions -n <namespace>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME AGE additional-network-1 14m - NAME AGE additional-network-1 14m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- CNO が CR を作成するまでに遅延が生じる可能性があります。 
検証
- Pod を作成し、VRF インスタンスを使用して追加のネットワークに割り当てます。 - Podリソースを定義する YAML ファイルを作成します。- pod-additional-net.yamlファイルの例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- VRF インスタンスを使用する追加ネットワークの名前を指定します。
 
- 次のコマンドを実行して、 - Podリソースを作成します。- oc create -f pod-additional-net.yaml - $ oc create -f pod-additional-net.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - pod/test-pod created - pod/test-pod created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- Pod のネットワーク割り当てが VRF の追加ネットワークに接続されていることを確認します。Pod とのリモートセッションを開始し、次のコマンドを実行します。 - ip vrf show - $ ip vrf show- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Name Table ----------------------- vrf-1 1001 - Name Table ----------------------- vrf-1 1001- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- VRF インターフェイスが追加インターフェイスのコントローラーであることを確認します。 - ip link - $ ip link- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - 5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode - 5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow