11.4. クラスターノードの Redfish BMC ベアメタルイベントのサブスクライブ
ノードの BMCEventSubscription
カスタムリソース (CR) の作成、イベント用の HardwareEvent
CR の作成、BMC の Secret
CR の作成を行うことで、クラスター内のノードで生成される Redfish BMC イベントにサブスクライブできます。
11.4.1. ベアメタルイベントのサブスクライブ リンクのコピーリンクがクリップボードにコピーされました!
ベースボード管理コントローラー (BMC) を設定して、ベアメタルイベントを OpenShift Container Platform クラスターで実行されているサブスクライブされたアプリケーションに送信できます。Redfish ベアメタルイベントの例には、デバイス温度の増加やデバイスの削除が含まれます。REST API を使用して、アプリケーションをベアメタルイベントにサブスクライブします。
BMCEventSubscription
カスタムリソース (CR) は、Redfish をサポートし、ベンダーインターフェイスが redfish
または idrac-redfish
に設定されている物理ハードウェアにのみ作成できます。
BMCEventSubscription
CR を使用して事前定義された Redfish イベントにサブスクライブします。Redfish 標準は、特定のアラートおよびしきい値を作成するオプションを提供しません。例えば、エンクロージャーの温度が摂氏 40 度を超えたときにアラートイベントを受け取るには、ベンダーの推奨に従ってイベントを手動で設定する必要があります。
BMCEventSubscription
CR を使用してノードのベアメタルイベントをサブスクライブするには、以下の手順を行います。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 - BMC のユーザー名およびパスワードを取得します。
クラスターに Redfish が有効な Baseboard Management Controller (BMC) を持つベアメタルノードをデプロイし、BMC で Redfish イベントを有効にします。
注記特定のハードウェアで Redfish イベントを有効にすることは、この情報の対象範囲外です。特定のハードウェアの Redfish イベントを有効にする方法は、BMC の製造元のドキュメントを参照してください。
手順
以下の
curl
コマンドを実行して、ノードのハードウェアで RedfishEventService
が有効になっていることを確認します。curl https://<bmc_ip_address>/redfish/v1/EventService --insecure -H 'Content-Type: application/json' -u "<bmc_username>:<password>"
$ curl https://<bmc_ip_address>/redfish/v1/EventService --insecure -H 'Content-Type: application/json' -u "<bmc_username>:<password>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- bmc_ip_address
- Redfish イベントが生成される BMC の IP アドレスです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、クラスターの Bare Metal Event Relay サービスのルートを取得します。
oc get route -n openshift-bare-metal-events
$ oc get route -n openshift-bare-metal-events
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD hw-event-proxy hw-event-proxy-openshift-bare-metal-events.apps.compute-1.example.com hw-event-proxy-service 9087 edge None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD hw-event-proxy hw-event-proxy-openshift-bare-metal-events.apps.compute-1.example.com hw-event-proxy-service 9087 edge None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BMCEventSubscription
リソースを作成し、Redfish イベントにサブスクライブします。以下の YAML を
bmc_sub.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Redfish イベントが生成されるワーカーノードの名前または UUID を指定します。
- 2
- ベアメタルイベントプロキシーサービスを指定します (例:
https://hw-event-proxy-openshift-bare-metal-events.apps.compute-1.example.com/webhook
)。
BMCEventSubscription
CR を作成します。oc create -f bmc_sub.yaml
$ oc create -f bmc_sub.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
オプション: BMC イベントサブスクリプションを削除するには、以下のコマンドを実行します。
oc delete -f bmc_sub.yaml
$ oc delete -f bmc_sub.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
BMCEventSubscription
CR を作成せずに Redfish イベントサブスクリプションを手動で作成するには、BMC のユーザー名およびパスワードを指定して以下のcurl
コマンドを実行します。curl -i -k -X POST -H "Content-Type: application/json" -d '{"Destination": "https://<proxy_service_url>", "Protocol" : "Redfish", "EventTypes": ["Alert"], "Context": "root"}' -u <bmc_username>:<password> 'https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions' –v
$ curl -i -k -X POST -H "Content-Type: application/json" -d '{"Destination": "https://<proxy_service_url>", "Protocol" : "Redfish", "EventTypes": ["Alert"], "Context": "root"}' -u <bmc_username>:<password> 'https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions' –v
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- proxy_service_url
-
ベアメタルイベントプロキシーサービスです (例:
https://hw-event-proxy-openshift-bare-metal-events.apps.compute-1.example.com/webhook
)。
- bmc_ip_address
- Redfish イベントが生成される BMC の IP アドレスです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.2. curl を使用した Redfish ベアメタルイベントサブスクリプションのクエリー リンクのコピーリンクがクリップボードにコピーされました!
一部のハードウェアベンダーは Redfish ハードウェアイベントサブスクリプションの量を制限します。curl
を使用して Redfish イベントサブスクリプションの数をクエリーできます。
前提条件
- BMC のユーザー名およびパスワードを取得します。
- クラスターに Redfish が有効な Baseboard Management Controller (BMC) を持つベアメタルノードをデプロイし、BMC で Redfish ハードウェアイベントを有効にします。
手順
以下の
curl
コマンドを実行して、BMC の現在のサブスクリプションを確認します。curl --globoff -H "Content-Type: application/json" -k -X GET --user <bmc_username>:<password> https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions
$ curl --globoff -H "Content-Type: application/json" -k -X GET --user <bmc_username>:<password> https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- bmc_ip_address
- Redfish イベントが生成される BMC の IP アドレスです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、サブスクリプションが 1 つ設定されています (
/redfish/v1/EventService/Subscriptions/1
)。オプション:
curl
で/redfish/v1/EventService/Subscriptions/1
サブスクリプションを削除するには、BMC のユーザー名およびパスワードを指定して以下のコマンドを実行します。curl --globoff -L -w "%{http_code} %{url_effective}\n" -k -u <bmc_username>:<password >-H "Content-Type: application/json" -d '{}' -X DELETE https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions/1
$ curl --globoff -L -w "%{http_code} %{url_effective}\n" -k -u <bmc_username>:<password >-H "Content-Type: application/json" -d '{}' -X DELETE https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions/1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- bmc_ip_address
- Redfish イベントが生成される BMC の IP アドレスです。
11.4.3. ベアメタルイベントおよびシークレット CR の作成 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルイベントの使用を開始するには、Redfish ハードウェアが存在するホストの HardwareEvent
カスタムリソース (CR) を作成します。ハードウェアイベントと障害は hw-event-proxy
ログに報告されます。
前提条件
-
OpenShift Container Platform CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 - Bare Metal Event Relay をインストールしている。
-
BMC Redfish ハードウェア用の
BMCEventSubscription
CR を作成している。
手順
HardwareEvent
カスタムリソース (CR) を作成します。注記複数の
HardwareEvent
リソースは許可されません。以下の YAML を
hw-event.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 必須。
nodeSelector
フィールドを使用して、指定されたラベルを持つノードをターゲットにします (例:node-role.kubernetes.io/hw-event: ""
。注記OpenShift Container Platform 4.13 以降でベアメタルイベントに HTTP トランスポートを使用する場合、
HardwareEvent
リソースのspec.transportHost
フィールドを設定する必要はありません。ベアメタルイベントに AMQP トランスポートを使用する場合にのみtransportHost
を設定します。 - 2
- オプション: デフォルト値は
debug
です。hw-event-proxy
ログでログレベルを設定します。fatal
、error
、warning
、info
、debug
、trace
のログレベルを利用できます。 - 3
- オプション: Message Parser のタイムアウト値をミリ秒単位で設定します。メッセージ解析要求がタイムアウト期間内に応答しない場合には、元のハードウェアイベントメッセージはクラウドネイティブイベントフレームワークに渡されます。デフォルト値は 10 です。
クラスターで
HardwareEvent
CR を適用します。oc create -f hardware-event.yaml
$ oc create -f hardware-event.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BMC ユーザー名およびパスワード
Secret
CR を作成します。これにより、ハードウェアイベントプロキシーがベアメタルホストの Redfish メッセージレジストリーにアクセスできるようになります。以下の YAML を
hw-event-bmc-secret.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
stringData
の下に、さまざまな項目のプレーンテキスト値を入力します。
Secret
CR を作成します。oc create -f hw-event-bmc-secret.yaml
$ oc create -f hw-event-bmc-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow