3.3. OpenStackNetConfig を使用したネットワーク分離用の VLAN ネットワークの作成

コンポーザブルネットワークのネットワーク分離を実装するには、追加のネットワークを作成する必要があります。このネットワーク分離を実現するには、コンポーザブルネットワークを個別の VLAN ネットワークに配置できます。OpenStackNetConfig リソースには、IP アドレスの割り当てに加えて、OpenShift Virtualization が仮想マシンを VLAN ネットワークにアタッチするために使用するネットワーク設定ポリシーを定義する情報が含まれます。

デフォルトの Red Hat OpenStack Platform ネットワークを使用するには、各ネットワークを定義する OpenStackNetConfig リソースを作成する必要があります。

表3.2 デフォルトの Red Hat OpenStack Platform ネットワーク

NetworkVLANCIDR割り当て

External

10

10.0.0.0/24

10.0.0.10 - 10.0.0.250

InternalApi

20

172.17.0.0/24

172.17.0.10 - 172.17.0.250

Storage

30

172.18.0.0/24

172.18.0.10 - 172.18.0.250

StorageMgmt

40

172.19.0.0/24

172.19.0.10 - 172.19..250

テナント

50

172.20.0.0/24

172.20.0.10 - 172.20.0.250

重要

各ネットワークごとに異なるネットワークの詳細を使用するには、カスタム network_data.yaml ファイルを作成する必要があります。

前提条件

  • OpenShift Container Platform クラスターが稼働し、director Operator が正しくインストールされていることを確認する。
  • oc コマンドラインツールがワークステーションにインストールされていることを確認する。

手順

  1. ネットワーク設定用のファイルを作成します。VLAN ネットワークのリソース仕様を含めます。たとえば、各ワーカーノードの enp6s0 および enp7s0 イーサネットデバイスに接続された Linux ブリッジ br-ex および br-osp を介して VLAN タグ付きトラフィックを管理する内部 API、ストレージ、ストレージ管理、テナント、および外部ネットワークの仕様は次のとおりです。:

    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: enp7s0
                description: Linux bridge with enp7s0 as a port
                name: br-osp
                state: up
                type: linux-bridge
                mtu: 1500
        br-ex:
          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-ex
                state: up
                type: linux-bridge
                mtu: 1500
      # optional DnsServers list
      dnsServers:
      - 172.22.0.1
      # optional DnsSearchDomains list
      dnsSearchDomains:
      - osptest.test.metalkube.org
      - some.other.domain
      # DomainName of the OSP environment
      domainName: osptest.test.metalkube.org
      networks:
      - name: Control
        nameLower: ctlplane
        subnets:
        - name: ctlplane
          ipv4:
            allocationEnd: 172.22.0.250
            allocationStart: 172.22.0.10
            cidr: 172.22.0.0/24
            gateway: 172.22.0.1
          attachConfiguration: br-osp
      - name: InternalApi
        nameLower: internal_api
        mtu: 1350
        subnets:
        - name: internal_api
          attachConfiguration: br-osp
          vlan: 20
          ipv4:
            allocationEnd: 172.17.0.250
            allocationStart: 172.17.0.10
            cidr: 172.17.0.0/24
      - name: External
        nameLower: external
        subnets:
        - name: external
          ipv4:
            allocationEnd: 10.0.0.250
            allocationStart: 10.0.0.10
            cidr: 10.0.0.0/24
            gateway: 10.0.0.1
          attachConfiguration: br-ex
      - name: Storage
        nameLower: storage
        mtu: 1500
        subnets:
        - name: storage
          ipv4:
            allocationEnd: 172.18.0.250
            allocationStart: 172.18.0.10
            cidr: 172.18.0.0/24
          vlan: 30
          attachConfiguration: br-osp
      - name: StorageMgmt
        nameLower: storage_mgmt
        mtu: 1500
        subnets:
        - name: storage_mgmt
          ipv4:
            allocationEnd: 172.19.0.250
            allocationStart: 172.19.0.10
            cidr: 172.19.0.0/24
          vlan: 40
          attachConfiguration: br-osp
      - name: Tenant
        nameLower: tenant
        vip: False
        mtu: 1500
        subnets:
        - name: tenant
          ipv4:
            allocationEnd: 172.20.0.250
            allocationStart: 172.20.0.10
            cidr: 172.20.0.0/24
          vlan: 50
          attachConfiguration: br-osp

    linux-bridge でネットワーク分離に VLAN を使用する場合に、以下のような処理が行われます。

    • director Operator は、リソースに指定されたブリッジインターフェイスの Node Network Configuration Policy を作成します。このポリシーは、nmstate を使用してワーカーノードにブリッジを設定します。
    • director Operator は、Multus CNI プラグイン設定を定義するネットワークごとにネットワーク接続定義を作成します。ネットワーク接続定義で VLAN ID を指定する場合には、Multus CNI プラグインはブリッジで vlan-filtering を有効にします。
    • director Operator は、仮想マシン上の各ネットワーク専用のインターフェイスを割り当てます。これは、OpenStackVMSet のネットワークテンプレートがマルチ NIC ネットワークテンプレートであることを意味します。

    リソース仕様に以下の値を設定します。

    metadata.name
    OpenStackNetConfig の名前に設定します。
    spec

    ネットワークを接続するためのネットワーク設定とネットワークの詳細を設定します。このセクションで使用できる値の詳細は、openstacknetconfig CRD のカスタムリソース定義の仕様スキーマを確認します。

    $ oc describe crd openstacknetconfig

    ネットワーク仕様の設定が完了したら、ファイルを保存します。

  2. ネットワーク設定を作成します。

    $ oc apply -f openstacknetconfig.yaml -n openstack

検証

  1. OpenStackNetConfig API と作成された子リソースを表示します。

    $ oc get openstacknetconfig/openstacknetconfig -n openstack
    $ oc get openstacknetattachment -n openstack
    $ oc get openstacknet -n openstack

    エラーが表示された場合は、基礎となる network-attach-definition とノードのネットワーク設定ポリシーを確認してください。

    $ oc get network-attachment-definitions -n openstack
    $ oc get nncp