7.5. 分散ゾーン用の OpenStackDataPlaneNodeSet CR の作成
デプロイメント内の各ゾーンの事前プロビジョニングされたデータプレーンノードの OpenStackDataPlaneNodeSet カスタムリソース (CR) を定義します。デプロイメントに応じて必要な数のノードセットを定義できます。各ノードは、1 つの OpenStackDataPlaneNodeSet CR にのみ含めることができます。nodeTemplate フィールドを使用して OpenStackDataPlaneNodeSet CR 内のすべてのノードに適用する共通プロパティーを設定し、nodes フィールドを使用してノード固有のプロパティーを設定します。ノード固有の設定は、nodeTemplate から継承された値をオーバーライドします。次の手順では、Zone 1 のノードセットを作成します。この手順を繰り返して、各ゾーンのコンピュートノードとネットワーカーノードに必要なノードセットを作成します。
手順
ワークステーションに、Zone 1 のノードセットの
OpenStackDataPlaneNodeSetCR を定義するためのファイルを作成します (例: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:OpenStackDataPlaneNodeSetCR 名は、一意であり、小文字の英数字と-(ハイフン) または.(ピリオド) のみが含まれ、先頭と末尾は英数字で、最大長 53 文字である必要があります。この例の名前を、セット内のノードを表す名前に更新してください。 -
spec.env: Pod に渡す環境変数をリストするオプションフィールド。
-
このノードセットに対して実行するサービスのリストを追加します。
コンピュートノードのセットに対して次のサービスを指定します。この場合の
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
データプレーンをコントロールプレーンネットワークに接続します。
spec: ... networkAttachments: - ctlplaneこのセット内のノードが事前にプロビジョニングされていることを指定します。
preProvisioned: trueAnsible がデータプレーンノードに接続できるようにするために作成した SSH 鍵シークレットを追加します。
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>-
<secret-key>は、データプレーンシークレットの作成 でこのノードセット用に作成した SSH 鍵のSecretCR の名前 (例:dataplane-ansible-ssh-private-key-secret) に置き換えます。
-
コンピュートノードのセットを作成する場合は、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 シークレットにアクセスする必要はありません。
管理ネットワークを指定します。
nodeTemplate: ... managementNetwork: ctlplaneノードのオペレーティングシステムを登録し、リポジトリーを有効にするためのユーザー名とパスワードの取得に使用される
SecretCR を指定します。次の例は、ノードを 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: []-
ansibleUser: データプレーンシークレットの作成 で作成したシークレットに関連付けられたユーザー。 -
ansibleVars: ノードのセットをカスタマイズする 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 を参照してください。
-
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ネットワーカーノードのセットを作成する場合は、
edpm_enable_chassis_gwフィールドを有効にします。ansible: ... ansibleVars: ... edpm_enable_chassis_gw: trueノードに適用するネットワーク設定テンプレートを追加します。
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 ノードのセットには必要ありません。
-
BGP の使用時に必要のない検証を無効にします。
edpm_nodes_validation_validate_controllers_icmp: false edpm_nodes_validation_validate_gateway_icmp: falseテナントネットワークを公開しないように OVN BGP エージェントを設定します。
edpm_ovn_bgp_agent_expose_tenant_networks: falseローカル
tenantネットワークの代わりにbgpmainnetを使用して BGP 経由でトンネルを確立するように OVN を設定します。edpm_ovn_encap_ip: '{{ lookup(''vars'', ''bgpmainnet_ip'') }}このノードセット内の各ノードを定義します。
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 アドレスは、NetConfigCR でネットワークに定義された割り当て範囲内にある必要があります。 ansible.ansibleVars: ノード固有の Ansible 変数でノードをカスタマイズします。注記-
nodesセクションに定義するノードには、nodeTemplateセクションで設定されているのと同じ Ansible 変数を設定できます。Ansible 変数が特定のノードとnodeTemplateセクション内の両方に設定されている場合は、ノード固有の値がnodeTemplateセクションの値をオーバーライドします。 -
ノードのすべての
nodeTemplateAnsible 変数を複製してデフォルトをオーバーライドし、ノード固有の値を設定する必要はありません。設定する必要があるのは、オーバーライドするノードの Ansible 変数だけです。 -
多くの
ansibleVarsの名前にはedpmが含まれています。これは "External Data Plane Management (外部データプレーン管理)" の略です。
-
-
- 定義ファイルを保存します。
Zone 1 のノードセットを作成します。
$ oc create --save-config -f compute_node_set_zone1.yaml -n openstackステータスが
SetupReadyであることを確認して、リソースが作成されたことを確認します。$ oc wait openstackdataplanenodeset compute-node-set-zone1 --for condition=SetupReady --timeout=10mステータスが
SetupReadyの場合、コマンドはcondition metメッセージを返し、それ以外の場合はタイムアウトエラーを返します。ノードセットの
Secretリソースが作成されたことを確認します。$ oc get secret | grep openstack-data-plane compute-node-set-zone1 Opaque 1 3m50sサービスが作成されたことを確認します。
$ oc get openstackdataplaneservice -n openstack NAME AGE bootstrap 46m ceph-client 46m ceph-hci-pre 46m configure-network 46m configure-os 46m ...