7.5. OpenStackNetConfig를 사용하여 네트워크 격리를 위한 VLAN 네트워크 생성

구성 가능한 네트워크에 대한 네트워크 격리를 구현하려면 추가 네트워크를 생성해야 합니다. 이 네트워크 분리를 수행하려면 구성 가능 네트워크를 개별 VLAN 네트워크에 배치할 수 있습니다. IP 주소 할당 외에도 OpenStackNetConfig 리소스에는 OpenShift Virtualization에서 가상 머신을 VLAN 네트워크에 연결하는 데 사용하는 네트워크 구성 정책을 정의하는 정보가 포함되어 있습니다.

기본 Red Hat OpenStack Platform 네트워크를 사용하려면 각 네트워크를 정의하는 OpenStackNetConfig 리소스를 생성해야 합니다.

표 7.1. 기본 Red Hat OpenStack Platform 네트워크

네트워크VLANCIDR할당

외부

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

스토리지

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 네트워크의 리소스 사양을 포함합니다. 예를 들어, 각 작업자 노드의 enp6s0enp7s0 이더넷 장치에 연결된 Linux 브리지 br-exbr-osp 를 통해 VLAN 태그된 트래픽을 관리하는 내부 API, 스토리지, 스토리지 mgmt, 테넌트 및 외부 네트워크에 대한 사양은 다음과 같습니다.

    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는 리소스에 지정된 브리지 인터페이스에 대한 노드 네트워크 구성 정책을 생성하여 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