第3章 director Operator を使用したネットワークの作成

OpenStackNetConfig リソースを使用して OpenShift Virtualization ワーカーノードでネットワークおよびブリッジを作成し、仮想マシンをこれらのネットワークに接続します。コンポーザブルネットワークのネットワーク分離を実装するには、オーバークラウドおよび追加のネットワーク用にコントロールプレーンネットワークを 1 つ作成する必要があります。

3.1. OpenStackNet での仮想マシンのブリッジについて

OpenStackVMSet リソースで仮想マシンを作成する場合には、これらの仮想マシンを関連する Red Hat OpenStack Platform (RHOSP) ネットワークに接続する必要があります。OpenStackNetConfig リソースには、nodeNetworkConfigurationPolicy のハッシュである attachConfigurations オプションが含まれています。OpenStackNetConfig で指定されたそれぞれの attachConfiguration は、OpenStackNet Attachment を作成し、ネットワークインターフェイスデータを OpenShift の NodeNetworkConfigurationPolicy リソースに渡します。NodeNetworkConfigurationPolicy リソースは nmstate API を使用して、各 OCP ワーカーノードでネットワーク設定の最終状態を設定します。OpenStackNetConfig で設定された各ネットワークは、attachConfigurations の 1 つを参照します。仮想マシン内には、ネットワークごとに 1 つのインターフェイスがあります。この方法により、OCP ワーカーノード上に必要なブリッジを作成し、コントローラー仮想マシンを RHOSP ネットワークに接続できます。

たとえば、br-osp attachConfiguration を作成し、nodeNetworkConfigurationPolicy オプションを設定して Linux ブリッジを作成し、各ワーカーの NIC にブリッジに接続する場合は、NodeNetworkConfigurationPolicy リソースは、この必要な終了状態になるように、それぞれの OCP ワーカーノードを設定します。

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

この設定を適用すると、各ワーカーに br-osp という名前の新規ブリッジが追加され、各ホストの enp6s0 NIC に接続されます。RHOSP をデプロイするには、専用の NIC が必要です。すべての RHOSP コントローラー仮想マシンは、コントロールプレーンのネットワークトラフィックの br-osp ブリッジに接続できます。

VLAN 20 を介して内部 API ネットワークを指定する場合は、attachConfiguration オプションを設定して、各 OCP ワーカーノードのネットワーク設定を変更し、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 に接続されているので、ブリッジ自体に変更は加えられません。ただし、OpenStackNet は VLAN 20 をこのネットワークに関連付けます。つまり、RHOSP コントローラーの仮想マシンは、内部 API ネットワークトラフィック用の br-osp ブリッジ上の VLAN 20 に接続できます。

OpenStackVMSet リソースで仮想マシンを作成すると、仮想マシンは、各ネットワークに接続された複数の Virtio デバイスを使用します。OpenShift Virtualization は、default ネットワーク (常に最初にくるインターフェイス) を除き、ネットワーク名をアルファベット順に並べ替えます。

たとえば、OpenStackNetConfig を使用してデフォルトの RHOSP ネットワークを作成する場合、コントローラー仮想マシンのインターフェイス設定は次の例のようになります。

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

この設定により、コントローラーノードの以下のネットワークとインターフェイスのマッピングが作成されます。

表3.1 デフォルトのネットワークからインターフェイスへのマッピング

Networkインターフェイス

default

nic1

ctlplane

nic2

external

nic3

internalapi

nic4

storage

nic5

storagemgmt

nic6

tenant

nic7

注記

OpenStackVMSet で使用されるロール NIC テンプレートは自動生成されます。これは、nic-template.role.j2 ファイルを tarball ファイルに追加することで上書きできます。tarball ファイルのバイナリーコンテンツを OpenShift ConfigMap 名 tripleo-tarball-config に含めます。