10.7.3. CLI を使用した Linux ブリッジ NAD の作成
コマンドラインを使用してネットワークアタッチメント定義 (NAD) を作成し、Pod および仮想マシンに layer-2 ネットワークを提供できます。
NAD と仮想マシンは同じ namespace に存在する必要があります。
仮想マシンのネットワークアタッチメント定義での IP アドレス管理 (IPAM) の設定はサポートされていません。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
次の例のように、仮想マシンを
NetworkAttachmentDefinition設定に追加します。apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: bridge-network1 annotations: k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/br12 spec: config: | { "cniVersion": "0.3.1", "name": "bridge-network",3 "type": "bridge",4 "bridge": "br1",5 "macspoofchk": false,6 "vlan": 100,7 "disableContainerInterface": true, "preserveDefaultVlan": false8 }- 1
NetworkAttachmentDefinitionオブジェクトの名前。- 2
- オプション: 一部のノードに設定されたブリッジのノード選択に使用するアノテーションのキーと値のペア。このアノテーションをネットワークアタッチメント定義に追加すると、仮想マシンインスタンスが、定義されたブリッジが接続されているノード上でのみ実行されます。
- 3
- 設定の名前。設定名を Network Attachment Definition の
name値に一致させることが推奨されます。 - 4
- この Network Attachment Definition のネットワークを提供する Container Network Interface (CNI) プラグインの実際の名前。異なる CNI を使用するのでない限り、このフィールドは変更しないでください。
- 5
- ノードに設定される Linux ブリッジの名前。この名前は、
NodeNetworkConfigurationPolicyマニフェストで定義されているインターフェイスブリッジ名と一致する必要があります。 - 6
- オプション: MAC スプーフィングチェックを有効にするフラグ。
trueに設定すると、Pod またはゲストインターフェイスの MAC アドレスを変更できません。この属性により、Pod から出ることができる MAC アドレスは 1 つだけになり、MAC スプーフィング攻撃に対するセキュリティーが確保されます。 - 7
- オプション: VLAN タグ。Node Network Configuration Policy では、追加の VLAN 設定は必要ありません。注記
IBM Z® 上の OSA インターフェイスは VLAN フィルタリングをサポートしていないため、VLAN タグ付きのトラフィックは破棄されます。OSA インターフェイスでは VLAN タグを使用する NAD を使用しないでください。
- 8
- オプション: 仮想マシンがデフォルト VLAN 経由でブリッジに接続するかどうかを示します。デフォルト値は
trueです。
オプション: 仮想マシンをネイティブネットワークに接続する場合は、VLAN を指定せずに Linux ブリッジ
NetworkAttachmentDefinitionマニフェストを設定します。apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: bridge-network annotations: k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/br1 spec: config: | { "cniVersion": "0.3.1", "name": "bridge-network", "type": "bridge", "bridge": "br1", "macspoofchk": false, "disableContainerInterface": true }Network Attachment Definition を作成します。
$ oc create -f network-attachment-definition.yaml1 - 1
- ここで、
network-attachment-definition.yamlは Network Attachment Definition マニフェストのファイル名です。
検証
次のコマンドを実行して、Network Attachment Definition が作成されたことを確認します。
$ oc get network-attachment-definition bridge-network
10.7.3.1. Linux ブリッジ NAD のポート分離を有効にする リンクのコピーリンクがクリップボードにコピーされました!
Linux ブリッジ Network Attachment Definition (NAD) のポート分離を有効にすると、同じ仮想 LAN (VLAN) 上で実行される仮想マシン (VM) または Pod が相互に分離して動作できるようになります。
Linux ブリッジ NAD は、ネットワークインターフェイスと物理ネットワークの間に仮想ブリッジ、または 仮想スイッチ を作成します。
このようにポートを分離すると、同じノードで実行される仮想マシンワークロードのセキュリティーが強化されます。
前提条件
- 仮想マシンの場合、各仮想マシンに静的 IP アドレスまたは動的 IP アドレスのいずれかを設定している。「仮想マシンの IP アドレスの設定」を参照してください。
- Web コンソールまたはコマンドラインインターフェイスを使用して、Linux ブリッジ NAD を作成している。
-
OpenShift CLI (
oc) がインストールされている。
手順
portIsolationをtrueに設定して、Linux ブリッジ NAD を編集します。apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: bridge-network annotations: k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/br1 spec: config: | { "cniVersion": "0.3.1", "name": "bridge-network", "type": "bridge", "bridge": "br1", "preserveDefaultVlan": false, "vlan": 100, "disableContainerInterface": false, "portIsolation": true } # ...-
spec.config.name は、設定の名前を指定します。名前は、NAD のmetadata.nameの値と一致する必要があります。 -
spec.config.type は、このネットワークアタッチメント定義にネットワークを提供する Container Network Interface (CNI) プラグインの実際の名前を指定します。異なる CNI を使用するのでない限り、このフィールドは変更しないでください。 -
spec.config.bridge は、ノード上で設定されている Linux ブリッジの名前を指定します。名前は、NodeNetworkConfigurationPolicyマニフェストで定義されているインターフェイスブリッジ名と一致する必要があります。 -
spec.config.portIsolation は、仮想ブリッジ上のポート分離が有効か無効かを指定します。デフォルト値はfalseです。trueに設定すると、各仮想マシンまたは Pod は分離されたポートに割り当てられます。仮想ブリッジは、1 つの分離ポートからのトラフィックが別の分離ポートに到達するのを防ぎます。
-
設定を適用します。
$ oc apply -f example-vm.yaml- オプション: 実行中の仮想マシンを編集している場合は、変更を有効にするためにこれを再起動する必要があります。