第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
に含めます。
関連情報