6.5. ルーティングされたスパインリーフトポロジーの OpenStackDataPlaneNodeSet CR の作成
プロビジョニングされていないリーフノードを定義するデータプレーン上の各リーフに対して、OpenStackDataPlaneNodeSet カスタムリソース (CR) を作成します。デプロイメントに応じて必要な数のノードセットを定義できます。各ノードは、1 つの OpenStackDataPlaneNodeSet CR にのみ含めることができます。各ノードセットは、1 つの Compute セルにのみ接続できます。デフォルトでは、ノードセットは cell1 に接続されます。コントロールプレーンをカスタマイズして Compute セルを追加する場合は、ノードセットの接続先のセルを指定する必要があります。Compute セルの追加の詳細は、Red Hat OpenStack Services on OpenShift デプロイメントのカスタマイズ ガイドの OpenStackDataPlaneNodeSet CR を Compute セルに接続する を参照してください。
nodeTemplate フィールドを使用して OpenStackDataPlaneNodeSet CR 内のすべてのノードに適用する共通プロパティーを設定し、nodeTemplate.nodes フィールドを使用してノード固有のプロパティーを設定します。ノード固有の設定は、nodeTemplate から継承された値をオーバーライドします。
手順
ワークステーション上で、スパイン/リーフトポロジーの各リーフの
OpenStackDataPlaneNodeSetCR を定義する YAML ファイルを作成します。apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: data-plane-leaf11 namespace: openstack spec: tlsEnabled: true env:2 - name: ANSIBLE_FORCE_COLOR value: "True"データプレーンをコントロールプレーンネットワークに接続します。
spec: ... networkAttachments: - ctlplaneこのセット内のノードはプロビジョニングされていないため、リソースの作成時にプロビジョニングする必要があることを指定します。
preProvisioned: falsebaremetalSetTemplateフィールドを使用して、データプレーンのデプロイ時にプロビジョニングされるベアメタルノードの設定を記述します。baremetalSetTemplate: deploymentSSHSecret: dataplane-ansible-ssh-private-key-secret bmhNamespace: <bmh_namespace> cloudUserName: <ansible_ssh_user> bmhLabelSelector: app: <bmh_label> ctlplaneInterface: <interface>-
<bmh_namespace>は、ノードの対応するBareMetalHostCR で定義されている namespace (例:openstack) に置き換えます。 -
<ansible_ssh_user>は、Ansible SSH ユーザーのユーザー名 (例:cloud-admin) に置き換えます。 -
<bmh_label>は、ノードの対応するBareMetalHostCR で定義されているラベル (例:openstack) に置き換えます。 -
<interface>は、ノードが接続するコントロールプレーンインターフェイス (例:enp6s0) に置き換えます。
-
Ansible がデータプレーンノードに接続できるようにするために作成した SSH 鍵シークレットを追加します。
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>-
<secret-key>は、データプレーンシークレットの作成 で作成した SSH 鍵のSecretCR の名前 (例:dataplane-ansible-ssh-private-key-secret) に置き換えます。
-
-
ログを保存するために、RHOCP クラスターの
openstacknamespace に永続ボリューム要求 (PVC) を作成します。volumeModeをFilesystemに、accessModesをReadWriteOnceに設定します。NFS ボリュームプラグインを使用する PersistentVolume (PV) からのログのストレージを要求しないでください。NFS は FIFO と互換性がないため、ansible-runnerはログを保存するために書き込む FIFO ファイルを作成します。PVC の詳細は、RHOCP ストレージ ガイドの 永続ストレージについて、および デプロイメントのプランニング の Red Hat OpenShift Container Platform クラスターの要件 を参照してください。 データプレーンノードの永続的なロギングを有効にします。
nodeTemplate: ... extraMounts: - extraVolType: Logs volumes: - name: ansible-logs persistentVolumeClaim: claimName: <pvc_name> mounts: - name: ansible-logs mountPath: "/runner/artifacts"-
<pvc_name>を、RHOCP クラスター上の PVC ストレージの名前に置き換えます。
-
管理ネットワークを指定します。
nodeTemplate: ... managementNetwork: ctlplaneAnsible がユーザー名とパスワードを取得してノードのオペレーティングシステムを Red Hat カスタマーポータルに登録し、ノードのリポジトリーを有効にするために使用する
SecretCR を指定します。次の例は、ノードを CDN に登録する方法を示しています。Red Hat Satellite 6.13 にノードを登録する方法の詳細は、ホストの管理 を参照してください。nodeTemplate: ansible: ansibleUser: cloud-admin1 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 を参照してください。データプレーンノードに適用するネットワーク設定テンプレートを追加します。次の例では、1 つの NIC VLAN ネットワーク設定をデータプレーンノードに適用します。
nodeTemplate: ... ansible: ... ansibleVars: ... neutron_physical_bridge_name: br-ex neutron_public_interface_name: eth0 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 }} mtu: {{ min_viable_mtu }} use_dhcp: false dns_servers: {{ ctlplane_dns_nameservers }} domain: {{ dns_search_domains }} addresses: - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }} routes: {{ ctlplane_host_routes }} members: - type: interface name: nic1 mtu: {{ min_viable_mtu }} # force the MAC address of the bridge to this interface primary: true {% for network in nodeset_networks %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} addresses: - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endfor %}データプレーンネットワーク設定の詳細は、ネットワークサービスの設定 の データプレーンネットワークのカスタマイズ を参照してください。
-
このグループ内のノードセットの共通設定を
nodeTemplateセクションに追加します。このOpenStackDataPlaneNodeSet内の各ノードがこの設定を継承します。共通のノード属性を設定するために使用できるプロパティーの詳細は、OpenStackDataPlaneNodeSetCR のプロパティー を参照してください。 このノードセット内の各ノードを定義します。
nodes: edpm-compute-0:1 hostName: edpm-compute-0 networks:2 - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.1003 - name: internalapi subnetName: subnet1 - name: storage subnetName: subnet1 - name: tenant subnetName: subnet1 ansible: ansibleHost: 192.168.122.100 ansibleUser: cloud-admin ansibleVars:4 fqdn_internal_api: edpm-compute-0.example.com edpm-compute-1: hostName: edpm-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 ansible: ansibleHost: 192.168.122.101 ansibleUser: cloud-admin ansibleVars: fqdn_internal_api: edpm-compute-1.example.com注記-
nodesセクションに定義するノードには、nodeTemplateセクションで設定されているのと同じ Ansible 変数を設定できます。Ansible 変数が特定のノードとnodeTemplateセクション内の両方に設定されている場合は、ノード固有の値がnodeTemplateセクションの値をオーバーライドします。 -
ノードのすべての
nodeTemplateAnsible 変数を複製してデフォルトをオーバーライドし、ノード固有の値を設定する必要はありません。設定する必要があるのは、オーバーライドするノードの Ansible 変数だけです。 -
多くの
ansibleVarsの名前にはedpmが含まれています。これは "External Data Plane Management (外部データプレーン管理)" の略です。
ノード属性を設定するために使用できるプロパティーの詳細は、
OpenStackDataPlaneNodeSetCR のプロパティー を参照してください。-
-
openstack_unprovisioned_node_set.yaml定義ファイルを保存します。 データプレーンリソースを作成します。
$ oc create --save-config -f openstack_unprovisioned_node_set.yaml -n openstackステータスが
SetupReadyであることを確認して、データプレーンリソースが作成されたことを確認します。$ oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10mステータスが
SetupReadyの場合、コマンドはcondition metメッセージを返し、それ以外の場合はタイムアウトエラーを返します。データプレーンの状態の詳細は、データプレーンの状態 を参照してください。
ノードセットの
Secretリソースが作成されたことを確認します。$ oc get secret -n openstack | grep openstack-data-plane dataplanenodeset-openstack-data-plane Opaque 1 3m50sノードが
provisioned状態に移行したことを確認します。$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-compute-0 provisioned openstack-data-plane true 3d21hサービスが作成されたことを確認します。
$ oc get openstackdataplaneservice -n openstack NAME AGE bootstrap 8m40s ceph-client 8m40s ceph-hci-pre 8m40s configure-network 8m40s configure-os 8m40s ...