7.4. 분산 영역에 대한 OpenStackDataPlaneNodeSet CR 생성


배포의 각 영역의 사전 프로비저닝된 데이터 플레인 노드에 대한 OpenStackDataPlaneNodeSet CR(사용자 정의 리소스)을 정의합니다. 배포에 필요한 만큼 노드 세트를 정의할 수 있습니다. 각 노드는 하나의 OpenStackDataPlaneNodeSet CR에만 포함할 수 있습니다. nodeTemplate 필드를 사용하여 OpenStackDataPlaneNodeSet CR의 모든 노드에 적용할 공통 속성과 노드별 속성에 대한 nodes 필드를 구성합니다. 노드별 구성은 nodeTemplate 의 상속된 값을 재정의합니다. 다음 절차에서는 영역 1에 대한 노드 세트를 생성합니다. 각 영역에 대한 컴퓨팅 노드 및 네트워크 노드에 필요한 노드 세트를 생성하려면 절차를 반복합니다.

프로세스

  1. 워크스테이션에 파일을 생성하여 Zone 1에 설정된 노드의 OpenStackDataPlaneNodeSet CR을 정의합니다(예: compute_node_set_zone1.yaml ).

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneNodeSet
    metadata:
      name: compute-node-set-zone1 
    1
    
      namespace: openstack
    spec:
      env: 
    2
    
      - name: ANSIBLE_FORCE_COLOR
        value: "True"
      - name: ANSIBLE_TIMEOUT
        value: "60"
      - name: ANSIBLE_SSH_TIMEOUT
        value: "60"
      - name: ANSIBLE_SSH_RETRIES
        value: "60"
    1
    OpenStackDataPlaneNodeSet CR 이름은 고유해야 하며 소문자 영숫자만 포함해야 합니다 . ( 하이 프트)는 영숫자 또는 영숫자로 시작 및 종료하며 최대 53자 길이를 갖습니다. 이 예제의 이름을 집합의 노드를 반영하는 이름으로 업데이트합니다.
    2
    선택사항: Pod에 전달할 환경 변수 목록입니다.
  2. 이 노드 세트에 대해 실행할 서비스 목록을 추가합니다.

    • 컴퓨팅 노드 세트에 대해 다음 서비스를 지정하고 nova 서비스를 노드 세트에 대해 생성한 사용자 정의 서비스로 교체합니다.

        services:
        - download-cache
        - bootstrap
        - configure-network
        - validate-network
        - install-os
        - configure-os
        - frr
        - ssh-known-hosts
        - run-os
        - reboot-os
        - install-certs
        - ceph-client
        - ovn
        - neutron-metadata
        - libvirt
        - *nova-custom-az1*
    • 네트워크 노드 세트에 대해 다음 서비스를 지정합니다.

        services:
        - download-cache
        - bootstrap
        - configure-network
        - validate-network
        - install-os
        - configure-os
        - frr
        - ssh-known-hosts
        - run-os
        - reboot-os
        - install-certs
        - ovn
        - neutron-metadata
        - ovn-bgp-agent
  3. 데이터 플레인을 컨트롤 플레인 네트워크에 연결합니다.

    spec:
      ...
      networkAttachments:
      - ctlplane
  4. 이 세트의 노드가 사전 프로비저닝되도록 지정합니다.

      preProvisioned: true
  5. Ansible이 데이터 플레인 노드에 연결할 수 있도록 생성한 SSH 키 시크릿을 추가합니다.

      nodeTemplate:
        ansibleSSHPrivateKeySecret: <secret-key>
  6. 컴퓨팅 노드 세트를 생성하는 경우 Red Hat Ceph Storage 보안에 대한 컴퓨팅 서비스 액세스를 활성화합니다.

      nodeTemplate:
        ...
        extraMounts:
        - extraVolType: Ceph
          mounts:
          - mountPath: /etc/ceph
            name: ceph
            readOnly: true
          volumes:
          - name: ceph
            secret:
              secretName: ceph-conf-files-az1
    참고

    Networker 노드는 Red Hat Ceph Storage 시크릿에 액세스할 필요가 없습니다.

  7. 관리 네트워크를 지정합니다.

      nodeTemplate:
        ...
        managementNetwork: ctlplane
  8. 노드의 운영 체제를 등록하고 리포지토리를 활성화하기 위해 사용자 이름과 암호를 소싱하는 데 사용되는 Secret CR을 지정합니다. 다음 예제에서는 노드를 Red Hat CDN(Content Delivery Network)에 등록하는 방법을 보여줍니다. Red Hat Satellite 6.13에 노드를 등록하는 방법에 대한 자세한 내용은 호스트 관리를 참조하십시오.

      nodeTemplate:
        ...
        ansible:
          ansibleUser: cloud-admin 
    1
    
          ansiblePort: 22
          ansibleVarsFrom:
            - secretRef:
                name: subscription-manager
            - secretRef:
                name: redhat-registry
          ansibleVars: 
    2
    
            rhc_release: 9.4
            rhc_repositories:
                - {name: "*", state: disabled}
                - {name: "rhel-9-for-x86_64-baseos-eus-rpms", state: enabled}
                - {name: "rhel-9-for-x86_64-appstream-eus-rpms", state: enabled}
                - {name: "rhel-9-for-x86_64-highavailability-eus-rpms", state: enabled}
                - {name: "fast-datapath-for-rhel-9-x86_64-rpms", state: enabled}
                - {name: "rhoso-18.0-for-rhel-9-x86_64-rpms", state: enabled}
                - {name: "rhceph-7-tools-for-rhel-9-x86_64-rpms", state: enabled}
            edpm_bootstrap_release_version_package: []
    1
    데이터 플레인 시크릿 생성 에서 생성한 시크릿과 연결된 사용자입니다.
    2
    노드 세트를 사용자 지정하는 Ansible 변수입니다. 사용할 수 있는 Ansible 변수 목록은 https://openstack-k8s-operators.github.io/edpm-ansible/ 을 참조하십시오. Red Hat 고객 포털 등록 명령의 전체 목록은 https://access.redhat.com/solutions/253273 을 참조하십시오. registry.redhat.io 에 로그인하는 방법에 대한 자세한 내용은 https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6 을 참조하십시오.
  9. OVN BGP 에이전트가 데이터 플레인의 FRRounting(FRR)과 통신하는 데 사용하는 네트워크와 BGP 피어로 인증하는 암호를 구성합니다.

      nodeTemplate:
        ...
        ansible:
          ...
          ansibleVars:
            ...
            edpm_frr_bfd: false
            edpm_frr_bgp_ipv4_src_network: bgpmainnet
            edpm_frr_bgp_ipv6_src_network: bgpmainnetv6
            edpm_frr_bgp_neighbor_password: f00barZ
  10. 네트워크 노드 세트를 생성하는 경우 edpm_enable_chassis_gw 필드를 활성화합니다.

        ansible:
          ...
          ansibleVars:
            ...
            edpm_enable_chassis_gw: true
  11. 노드에 적용할 네트워크 구성 템플릿을 추가합니다.

            edpm_network_config_hide_sensitive_logs: false
            edpm_network_config_os_net_config_mappings:
              edpm-z1-compute-0:
                nic2: 6a:fe:54:3f:8a:02 
    1
    
              edpm-z1-compute-1:
                nic2: 6b:fe:54:3f:8a:02
            neutron_physical_bridge_name: br-ex
            neutron_public_interface_name: eth1
            edpm_network_config_template: |
              ---
              {% set mtu_list = [ctlplane_mtu] %}
              {% for network in nodeset_networks %}
              {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
              {%- endfor %}
              {% set min_viable_mtu = mtu_list | max %}
              network_config:
              - type: ovs_bridge
                name: {{ neutron_physical_bridge_name }}
                use_dhcp: false
              - type: interface
                name: nic1
                use_dhcp: true
                defroute: false
              - type: interface
                name: nic2
                use_dhcp: false
                defroute: false
                dns_servers: {{ ctlplane_dns_nameservers }}
                domain: {{ dns_search_domains }}
                addresses:
                  - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
              - type: interface
                name: nic3
                use_dhcp: false
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpnet0_ip') }}/30
              - type: interface
                name: nic4
                use_dhcp: false
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpnet1_ip') }}/30
              - type: interface
                name: lo
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpmainnet_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'bgpmainnetv6_ip') }}/128
                - ip_netmask: {{ lookup('vars', 'internalapi_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'storage_ip') }}/32 
    2
    
                - ip_netmask: {{ lookup('vars', 'tenant_ip') }}/32
    1
    컴퓨팅 노드의 네트워크 구성에 사용할 NIC에 할당된 MAC 주소로 nic1 필드를 업데이트합니다.
    2
    네트워크 노드 세트에는 필요하지 않습니다.
  12. BGP를 사용할 때 필요하지 않은 검증을 비활성화합니다.

        	  edpm_nodes_validation_validate_controllers_icmp: false
        	  edpm_nodes_validation_validate_gateway_icmp: false
  13. 테넌트 네트워크를 노출하지 않도록 OVN BGP 에이전트를 구성합니다.

        	  edpm_ovn_bgp_agent_expose_tenant_networks: false
  14. 로컬 테넌트 네트워크 대신 bgpmainnet 을 사용하여 BGP를 통해 터널을 설정하도록 OVN을 구성합니다.

            edpm_ovn_encap_ip: '{{ lookup(''vars'', ''bgpmainnet_ip'') }}
  15. 이 노드 세트의 각 노드를 정의합니다.

      nodes:
        edpm-z1-compute-0: 
    1
    
          hostName: edpm-z1-compute-0
          networks: 
    2
    
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.100 
    3
    
          - name: internalapi
            subnetName: subnet1
          - name: storage 
    4
    
            subnetName: subnet1
          - name: tenant
            subnetName: subnet1
          - name: Bgpnet0
            subnetName: subnet1
            fixedIP: 100.64.0.2
          - name: Bgpnet1
            subnetName: subnet1
            fixedIP: 100.65.0.2
          - name: Bgpmainnet
            subnetName: subnet1
            fixedIP: 99.99.0.2
          - name: BgpmainnetV6
            subnetName: subnet0
            fixedIP: f00d:f00d:f00d:f00d:f00d:f00d:f00d:0012
          ansible:
            ansibleHost: 192.168.122.100
            ansibleVars: 
    5
    
              edpm_frr_bgp_peers:
              - 100.64.0.1
              - 100.65.0.1
              edpm_ovn_bgp_agent_local_ovn_peer_ips:
              - 100.64.0.1
              - 100.65.0.1
        edpm-z1-compute-1:
          hostName: edpm-z1-compute-1
          networks:
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.101
          - name: internalapi
            subnetName: subnet1
          - name: storage
            subnetName: subnet1
          - name: tenant
            subnetName: subnet1
          - name: Bgpnet0
            subnetName: subnet1
            fixedIP: 100.64.0.6
          - name: Bgpnet1
            subnetName: subnet1
            fixedIP: 100.65.0.6
          - name: Bgpmainnet
            subnetName: subnet1
            fixedIP: 99.99.0.3
          - name: BgpmainnetV6
            subnetName: subnet0
            fixedIP: f00d:f00d:f00d:f00d:f00d:f00d:f00d:0013
        edpm-z1-compute-2:
          hostName: edpm-z1-compute-2
          networks:
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.102
          - name: internalapi
            subnetName: subnet1
          - name: storage
            subnetName: subnet1
          - name: tenant
            subnetName: subnet1
          - name: Bgpnet0
            subnetName: subnet1
            fixedIP: 100.64.0.10
          - name: Bgpnet1
            subnetName: subnet1
            fixedIP: 100.65.0.10
          - name: Bgpmainnet
            subnetName: subnet1
            fixedIP: 99.99.0.4
          - name: BgpmainnetV6
            subnetName: subnet0
            fixedIP: f00d:f00d:f00d:f00d:f00d:f00d:f00d:0014
    1
    노드 정의 참조(예: edpm-compute-0 ) 노드 세트의 각 노드에는 노드 정의가 있어야 합니다.
    2
    노드의 IPAM 및 DNS 레코드를 정의합니다.
    3
    네트워크 노드 세트에는 스토리지 네트워크가 필요하지 않습니다.
    4
    NetConfig CR의 네트워크에 대해 정의된 할당 범위에 있어야 하는 네트워크의 예측 가능한 IP 주소를 지정합니다.
    5
    노드를 사용자 지정하는 노드별 Ansible 변수.
    참고
    • nodes 섹션에 정의된 노드는 nodeTemplate 섹션에 구성된 동일한 Ansible 변수를 구성할 수 있습니다. 특정 노드 및 nodeTemplate 섹션 모두에 대해 Ansible 변수가 구성된 경우 노드별 값은 nodeTemplate 섹션의 해당 변수를 재정의합니다.
    • 기본값을 재정의하고 일부 노드별 값을 설정하기 위해 노드의 모든 nodeTemplate Ansible 변수를 복제할 필요는 없습니다. 노드에 대해 재정의할 Ansible 변수만 구성해야 합니다.
    • 많은 ansibleVars 에는 "외부 데이터 플레인 관리"를 나타내는 이름에 edpm 이 포함되어 있습니다.
  16. 정의 파일을 저장합니다.
  17. zone 1:에 대한 노드 세트를 생성합니다.

    $ oc create --save-config -f compute_node_set_zone1.yaml -n openstack
  18. 상태가 SetupReady:인지 확인하여 리소스가 생성되었는지 확인합니다.

    $ oc wait openstackdataplanenodeset compute-node-set-zone1 --for condition=SetupReady --timeout=10m

    상태가 SetupReady 이면 명령에서 condition met 메시지를 반환하고, 그렇지 않으면 시간 초과 오류가 반환됩니다.

  19. 노드 세트에 대해 Secret 리소스가 생성되었는지 확인합니다.

    $ oc get secret | grep openstack-data-plane
    compute-node-set-zone1 Opaque 1 3m50s
  20. 서비스가 생성되었는지 확인합니다.

    $ oc get openstackdataplaneservice -n openstack
    NAME                AGE
    bootstrap           46m
    ceph-client         46m
    ceph-hci-pre        46m
    configure-network   46m
    configure-os        46m
    ...
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동