8.5. OpenStackNetConfig を使用したネットワーク分離用の VLAN ネットワークの作成
コンポーザブルネットワークのネットワーク分離を実装するには、追加のネットワークを作成する必要があります。このネットワーク分離を実現するには、コンポーザブルネットワークを個別の VLAN ネットワークに配置できます。OpenStackNetConfig リソースには、IP アドレスの割り当てに加えて、OpenShift Virtualization が仮想マシンを VLAN ネットワークにアタッチするために使用するネットワーク設定ポリシーを定義する情報が含まれます。
デフォルトの Red Hat OpenStack Platform ネットワークを使用するには、各ネットワークを定義する OpenStackNetConfig リソースを作成する必要があります。
表8.1 デフォルトの Red Hat OpenStack Platform ネットワーク
Network | VLAN | CIDR | 割り当て |
---|---|---|---|
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
コマンドラインツールがワークステーションにインストールされていることを確認する。
手順
ネットワーク設定用のファイルを作成します。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
ネットワーク仕様の設定が完了したら、ファイルを保存します。
-
director Operator は、リソースに指定されたブリッジインターフェイスの Node Network Configuration Policy を作成します。このポリシーは、
ネットワーク設定を作成します。
$ oc apply -f openstacknetconfig.yaml -n openstack
検証
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