3.2. OpenStackNetConfig CRD を使用した仮想マシンのブリッジングについて
OpenStackVMSet
CRD を使用して仮想マシン (VM) を作成する場合は、これらの VM を関連する Red Hat OpenStack Platform (RHOSP) ネットワークに接続する必要があります。OpenStackNetConfig
CRD を使用すると、Red Hat OpenShift Container Platform (RHOCP) ワーカーノード上に必要なブリッジを作成し、コントローラー VM を RHOSP オーバークラウドネットワークに接続できます。RHOSP をデプロイメントするには専用の NIC が必要です。
OpenStackNetConfig
CRD には、nodeNetworkConfigurationPolicy
のハッシュである attachConfigurations
オプションが含まれています。OpenStackNetConfig
カスタムリソース (CR) で指定されたそれぞれの attachConfiguration
は、NetworkAttachmentDefinition
オブジェクトを作成し、ネットワークインターフェイスデータを RHOCP クラスターの NodeNetworkConfigurationPolicy
リソースに渡します。NodeNetworkConfigurationPolicy
リソースは、nmstate
API を使用して、各 RHOCP ワーカーノードのネットワーク設定の最終状態を設定します。各ネットワークの NetworkAttachmentDefinition
オブジェクトは、Multus CNI プラグイン設定を定義します。NetworkAttachmentDefinition
オブジェクトの VLAN ID を指定すると、Multus CNI プラグインによってブリッジ上の vlan-filtering
が有効になります。OpenStackNetConfig
で設定された各ネットワークは、attachConfigurations
の 1 つを参照します。VM 内には、ネットワークごとに 1 つのインターフェイスがあります。
次の例では、br-osp attachConfiguration
を作成し、Linux ブリッジを作成し、そのブリッジを各ワーカーの NIC に接続するように、nodeNetworkConfigurationPolicy
オプションを設定します。この設定を適用すると、NodeNetworkConfigurationPolicy
オブジェクトは、必要な最終状態に一致するように各 RHOCP ワーカーノードを設定します。各ワーカーには、各ホストの enp6s0
NIC に接続される br-osp
という名前の新しいブリッジが含まれます。すべての RHOSP コントローラー VM は、コントロールプレーンネットワークトラフィックの br-osp
ブリッジに接続できます。
apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackNetConfig metadata: name: openstacknetconfig spec: attachConfigurations: br-osp: nodeNetworkConfigurationPolicy: nodeSelector: node-role.kubernetes.io/worker: "" desiredState: interfaces: - bridge: options: stp: enabled: false port: - name: enp6s0 description: Linux bridge with enp6s0 as a port name: br-osp state: up type: linux-bridge mtu: 1500 ... networks: - name: Control nameLower: ctlplane subnets: - name: ctlplane ipv4: allocationEnd: 192.168.25.250 allocationStart: 192.168.25.100 cidr: 192.168.25.0/24 gateway: 192.168.25.1 attachConfiguration: br-osp
VLAN 20 を介して内部 API ネットワークを指定する場合は、attachConfiguration
オプションを設定して、各 RHOCP ワーカーノードのネットワーク設定を変更し、VLAN を既存の br-osp
ブリッジに接続できます。
apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackNetConfig metadata: name: openstacknetconfig spec: attachConfigurations: br-osp: ... networks: ... - isControlPlane: false mtu: 1500 name: InternalApi nameLower: internal_api subnets: - attachConfiguration: br-osp ipv4: allocationEnd: 172.17.0.250 allocationStart: 172.17.0.10 cidr: 172.17.0.0/24 gateway: 172.17.0.1 routes: - destination: 172.17.1.0/24 nexthop: 172.17.0.1 - destination: 172.17.2.0/24 nexthop: 172.17.0.1 name: internal_api vlan: 20
br-osp
はすでに存在し、各ホストの enp6s0
NIC に接続されているので、ブリッジ自体に変更は加えられません。ただし、InternalAPI
OpenStackNet
は VLAN 20 をこのネットワークに関連付けます。これは、RHOSP コントローラー VM が内部 API ネットワークトラフィックの br-osp
ブリッジ上の VLAN 20 に接続できることを意味します。
OpenStackVMSet
CRD を使用して VM を作成すると、VM は各ネットワークに接続された複数の Virtio デバイスを使用します。OpenShift Virtualization は、default
ネットワーク (常に最初にくるインターフェイス) を除き、ネットワーク名をアルファベット順に並べ替えます。たとえば、OpenStackNetConfig
を使用してデフォルトの RHOSP ネットワークを作成すると、コントローラー VM に対して次のインターフェイス設定が生成されます。
interfaces: - masquerade: {} model: virtio name: default - bridge: {} model: virtio name: ctlplane - bridge: {} model: virtio name: external - bridge: {} model: virtio name: internalapi - bridge: {} model: virtio name: storage - bridge: {} model: virtio name: storagemgmt - bridge: {} model: virtio name: tenant
この設定により、コントローラーノードの以下のネットワークとインターフェイスのマッピングが作成されます。
ネットワーク | インターフェイス |
---|---|
default | nic1 |
ctlplane | nic2 |
external | nic3 |
internalapi | nic4 |
storage | nic5 |
storagemgmt | nic6 |
tenant | nic7 |
OpenStackVMSet
で使用されるロール NIC テンプレートは自動生成されます。カスタム NIC テンプレートファイル <role>-nic-template.j2
(たとえば、controller-nic-template.j2
) のデフォルト設定を上書きできます。カスタム NIC ファイルを、OpenShift ConfigMap オブジェクトを使用して実装されるオーバークラウド設定を含む tarball ファイルに追加する必要があります。詳細は、第 4 章director Operator を使用したオーバークラウドのカスタマイズ。
関連情報