第5章 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 インターフェイスに直接バインドします。
5.1. CNI VRF プラグインを使用してセカンダリーネットワークアタッチメントを作成する リンクのコピーリンクがクリップボードにコピーされました!
Cluster Network Operator (CNO) は、セカンダリーネットワークの定義を管理します。クラスタースコープの Network カスタムリソース (CR) でセカンダリーネットワークを指定すると、CNO によって NetworkAttachmentDefinition CR が自動的に作成されます。
Cluster Network Operator が管理する NetworkAttachmentDefinition CR は編集しないでください。これを行うと、セカンダリーネットワーク上のネットワークトラフィックが中断される可能性があります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてクラスターにログインしている。
手順
追加のネットワークアタッチメント用の
NetworkCR を作成し、セカンダリーネットワークのrawCNIConfig設定を挿入します。additional-network-attachment.yamlファイルとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
plugins- リストを指定する必要があります。リストの最初の項目は、VRF ネットワークのベースとなるセカンダリーネットワークである必要があります。一覧の 2 つ目の項目は、VRF プラグイン設定です。
type-
このパラメーターは
vrfに設定する必要があります。 vrfname- インターフェイスが割り当てられる VRF の名前。Pod 内に VRF が存在しない場合は、CNI によって VRF が作成されます。
tableオプションのパラメーター。ルーティングテーブルの ID を指定します。デフォルトで、
tableidパラメーターが使用されます。テーブル ID を指定しない場合は、CNI によって空きルーティングテーブル ID が VRF に割り当てられます。注記VRF は、リソースが
netdeviceタイプの場合にのみ正常に機能します。
Networkリソースを作成します。oc create -f additional-network-attachment.yaml
$ oc create -f additional-network-attachment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、CNO が
NetworkAttachmentDefinitionCR を作成していることを確認します。<namespace>を、ネットワーク割り当ての設定時に指定した namespace に置き換えます (例:additional-network-1)。予想される出力には、NAD CR の名前と作成後の経過時間 (分) が表示されます。oc get network-attachment-definitions -n <namespace>
$ oc get network-attachment-definitions -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CNO が CR を作成するまでに時間がかかる場合があります。
検証
Pod を作成し、VRF プラグイン設定を含むセカンダリーネットワークにその Pod を割り当てます。
次の
pod-additional-net.yamlファイルに示すように、Podリソースを定義する YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
name- VRF プラグイン設定を含むセカンダリーネットワークの名前を指定します。
次のコマンドを実行して、
Podリソースを作成します。予想される出力には、Podリソースの名前と作成期間 (分) が表示されます。oc create -f pod-additional-net.yaml
$ oc create -f pod-additional-net.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod ネットワークアタッチメントが VRF セカンダリーネットワークに接続されていることを確認します。Pod とのリモートセッションを開始し、次のコマンドを実行します。予想される出力には、VRF インターフェイスの名前とルーティングテーブル内の一意の ID が表示されます。
ip vrf show
$ ip vrf showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、VRF インターフェイスがセカンダリーインターフェイスのコントローラーであることを確認します。
ip link
$ ip linkCopy 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 modeCopy to Clipboard Copied! Toggle word wrap Toggle overflow