6.4. ramdisk 上のネットワーク設定を含む BareMetalHost CR の作成
Red Hat OpenStack Services on OpenShift (RHOSO) デプロイメントで DHCP または SLAAC による自動ネットワーク設定が使用されない場合は、Redfish Virtual Media を使用して、ramdisk 上にネットワーク設定を持つスパインリーフトポロジーを作成できます。
Red Hat OpenShift Container Platform (RHOCP) は、nmstate を使用してノードネットワークの状態を報告および設定します。各ベアメタルデータプレーンノードに対して Secret カスタムリソース (CR) を作成し、nmstate スキーマを使用して、ベアメタルデータプレーンノードをネットワークに追加するために ramdisk に必要な事前プロビジョニングネットワーク設定データを設定します。Nmstate の詳細は、Nmstate の概要 を参照してください。
プロビジョニングに ctlplane インターフェイスを使用する場合は、カーネルの rp_filter ロジックがトラフィックがドロップしないように、ctlplane アドレス範囲とは異なるアドレス範囲を使用するように ramdisk ネットワークを設定します。これにより、ramdisk がプロビジョニングサービスに接続したときに、戻りトラフィックがマシンネットワークインターフェイス上に残るようになります。
手順
ノードセット内の各ベアメタルデータプレーンノードに対して、ramdisk の事前プロビジョニングネットワーク設定データを
nmstate形式で定義するSecretCR を作成します。apiVersion: v1 kind: Secret metadata: name: <bmh-name>-preprovision-network-data namespace: openstack stringData: nmstate: | interfaces: - name: enp5s0 type: ethernet state: up ipv4: enabled: true address: - ip: 192.168.130.100 prefix-length: 24 dns-resolver: config: server: - 192.168.122.1 routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.168.130.1 next-hop-interface: enp5s0 type: Opaque-
<bmh-name>を、シークレットが含まれるBareMetalHostCR の名前 (例:edpm-compute-0-preprovision-network-data) に置き換えます。
nmstateスキーマの詳細は、https://nmstate.io/devel/yaml_api.html を参照してください。-
Bare Metal Operator (BMO) は、デフォルトで
openshift-machine-apinamespace 内のBareMetalHostカスタムリソース (CR) を管理します。すべての namespace を監視するようにProvisioningCR を更新します。$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'ProvisioningCR を更新して、virtualMediaViaExternalNetworkを有効にします。これにより、外部ネットワークを介したベアメタル接続が可能になります。$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"virtualMediaViaExternalNetwork": true }}'ノードセット内の各ベアメタルデータプレーンノードの BMC にアクセスするための認証情報を含む
SecretCR を定義するファイルをワークステーションに作成します。apiVersion: v1 kind: Secret metadata: name: edpm-compute-0-bmc-secret namespace: openstack type: Opaque data: username: <base64_username> password: <base64_password><base64_username>と<base64_password>を base64 でエンコードされた文字列に置き換えます。次のコマンドを使用して、base64 でエンコードされた文字列を生成できます。$ echo -n <string> | base64ヒントユーザー名とパスワードを base64 でエンコードする必要がない場合は、
dataフィールドの代わりにstringDataフィールドを使用してユーザー名とパスワードを設定します。
ワークステーションに、
bmh_leaf1_nodes.yamlという名前のファイルを作成します。このファイルは、仮想メディアを起動方法として、各ベアメタルデータプレーンノードのBareMetalHostCR を定義します。apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: edpm-compute-0 namespace: openstack labels: app: openstack workload: compute spec: bmc: address: redfish-virtualmedia+http://192.168.111.1:8000/redfish/v1/Systems/e8efd888-f844-4fe0-9e2e-498f4ab7806d1 credentialsName: edpm-compute-0-bmc-secret2 bootMACAddress: 00:c7:e4:a7:e7:f3 bootMode: UEFI online: false- 1
- ノードのベースボード管理コントローラー (BMC) コントローラーと通信するための URL。
BareMetalHostCR を作成する方法の詳細は、RHOCP の インストール後の設定 ガイドの BareMetalHost リソースについて を参照してください。他のブート方法での BMC アドレス指定の詳細は、インストーラーでプロビジョニングされたクラスターのベアメタルへのデプロイ ガイドの BMC アドレス指定 を参照してください。 - 2
- ノードの BMC にアクセスするために前の手順で作成した
SecretCR の名前。
各
BareMetalHostCR にpreprovisioningNetworkDataNameフィールドを追加して、事前プロビジョニングネットワーク設定データSecretCR を指定します。apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: edpm-compute-0 namespace: openstack ... spec: bmc: address: redfish-virtualmedia+http://192.168.111.1:8000/redfish/v1/Systems/e8efd888-f844-4fe0-9e2e-498f4ab7806d ... preprovisioningNetworkDataName: <pre_provision_network_secret>-
<pre_provision_network_secret>を、事前プロビジョニングネットワーク設定データ用に手順 1 で作成したSecretCR に置き換えます。
-
BareMetalHostリソースを作成します。$ oc create -f bmh_leaf1_nodes.yamlBareMetalHostリソースが作成され、Available状態になっていることを確認します。$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-compute-0 Available openstack-edpm true 2d21h