7.5. 分散ゾーン用の OpenStackDataPlaneNodeSet CR の作成


デプロイメント内の各ゾーンの事前プロビジョニングされたデータプレーンノードの OpenStackDataPlaneNodeSet カスタムリソース (CR) を定義します。デプロイメントに応じて必要な数のノードセットを定義できます。各ノードは、1 つの OpenStackDataPlaneNodeSet CR にのみ含めることができます。nodeTemplate フィールドを使用して OpenStackDataPlaneNodeSet CR 内のすべてのノードに適用する共通プロパティーを設定し、nodes フィールドを使用してノード固有のプロパティーを設定します。ノード固有の設定は、nodeTemplate から継承された値をオーバーライドします。次の手順では、Zone 1 のノードセットを作成します。この手順を繰り返して、各ゾーンのコンピュートノードとネットワーカーノードに必要なノードセットを作成します。

手順

  1. ワークステーションに、Zone 1 のノードセットの OpenStackDataPlaneNodeSet CR を定義するためのファイルを作成します (例: compute_node_set_zone1.yaml)。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneNodeSet
    metadata:
      name: compute-node-set-zone1
      namespace: openstack
    spec:
      env:
      - name: ANSIBLE_FORCE_COLOR
        value: "True"
      - name: ANSIBLE_TIMEOUT
        value: "60"
      - name: ANSIBLE_SSH_TIMEOUT
        value: "60"
      - name: ANSIBLE_SSH_RETRIES
        value: "60"
    • metadata.name: OpenStackDataPlaneNodeSet CR 名は、一意であり、小文字の英数字と - (ハイフン) または . (ピリオド) のみが含まれ、先頭と末尾は英数字で、最大長 53 文字である必要があります。この例の名前を、セット内のノードを表す名前に更新してください。
    • spec.env: Pod に渡す環境変数をリストするオプションフィールド。
  2. このノードセットに対して実行するサービスのリストを追加します。

    • コンピュートノードのセットに対して次のサービスを指定します。この場合の nova サービスは、ノードセット用に作成したカスタムサービスに置き換えます。

        services:
        - download-cache
        - bootstrap
        - install-os
        - configure-os
        - configure-network
        - frr
        - validate-network
        - ssh-known-hosts
        - run-os
        - reboot-os
        - install-certs
        - ceph-client
        - ovn
        - neutron-metadata
        - ovn-bgp-agent
        - libvirt
        - nova-custom-az1
    • ネットワーカーノードのセットに対して次のサービスを指定します。

        services:
        - download-cache
        - bootstrap
        - validate-network
        - install-os
        - configure-os
        - configure-network
        - 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. コンピュートノードのセットを作成する場合は、Compute サービスによる 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
    注記

    ネットワーカーノードは Red Hat Ceph Storage シークレットにアクセスする必要はありません。

  7. 管理ネットワークを指定します。

      nodeTemplate:
        ...
        managementNetwork: ctlplane
  8. ノードのオペレーティングシステムを登録し、リポジトリーを有効にするためのユーザー名とパスワードの取得に使用される Secret CR を指定します。次の例は、ノードを Red Hat コンテンツ配信ネットワーク (CDN) に登録する方法を示しています。Red Hat Satellite 6.13 でノードを登録する方法は、ホストの管理 を参照してください。

      nodeTemplate:
        ...
        ansible:
          ansibleUser: cloud-admin
          ansiblePort: 22
          ansibleVarsFrom:
            - secretRef:
                name: subscription-manager
            - secretRef:
                name: redhat-registry
          ansibleVars:
            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: []
  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:
                nic1: 6a:fe:54:3f:8a:02
              edpm-z1-compute-1:
                nic1: 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
    • nic1: コンピュートノード上のネットワーク設定に使用する NIC に割り当てられた MAC アドレスに更新します。
    • ip_netmask: {{ lookup('vars', 'storage_ip') }}/32: Networker ノードのセットには必要ありません。
  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. ローカル tenant ネットワークの代わりに bgpmainnet を使用して BGP 経由でトンネルを確立するように OVN を設定します。

            edpm_ovn_encap_ip: '{{ lookup(''vars'', ''bgpmainnet_ip'') }}
  15. このノードセット内の各ノードを定義します。

      nodes:
        edpm-z1-compute-0:
          hostName: edpm-z1-compute-0
          networks:
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.100
          - name: internalapi
            subnetName: subnet1
          - name: storage
            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:
              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: 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: 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
    • nodes.<node_ref>: ノード定義参照 (例: edpm-compute-0)。ノードセット内の各ノードにノード定義が必要です。
    • networks: ノードの IPAM と DNS レコードを定義します。
    • networks.fixedIP: Networker ノードのセットでストレージネットワークは必要ありません。
    • networks.name: ネットワークの予測可能な IP アドレスを指定します。この IP アドレスは、NetConfig CR でネットワークに定義された割り当て範囲内にある必要があります。
    • ansible.ansibleVars: ノード固有の Ansible 変数でノードをカスタマイズします。

      注記
      • nodes セクションに定義するノードには、nodeTemplate セクションで設定されているのと同じ Ansible 変数を設定できます。Ansible 変数が特定のノードと nodeTemplate セクション内の両方に設定されている場合は、ノード固有の値が nodeTemplate セクションの値をオーバーライドします。
      • ノードのすべての nodeTemplate Ansible 変数を複製してデフォルトをオーバーライドし、ノード固有の値を設定する必要はありません。設定する必要があるのは、オーバーライドするノードの Ansible 変数だけです。
      • 多くの ansibleVars の名前には edpm が含まれています。これは "External Data Plane Management (外部データプレーン管理)" の略です。
  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 では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る