14.4. Abonnement aux événements Redfish BMC bare-metal pour un nœud de cluster
En tant qu'administrateur de cluster, vous pouvez vous abonner aux événements Redfish BMC générés sur un nœud de votre cluster en créant une ressource personnalisée (CR) BMCEventSubscription
pour le nœud, en créant une CR HardwareEvent
pour l'événement et une CR Secret
pour la BMC.
14.4.1. S'abonner aux événements "bare-metal
Vous pouvez configurer le contrôleur de gestion de la carte de base (BMC) pour qu'il envoie des événements bare-metal aux applications abonnées s'exécutant dans un cluster OpenShift Container Platform. Parmi les exemples d'événements Redfish bare-metal, citons l'augmentation de la température d'un périphérique ou le retrait d'un périphérique. Vous abonnez les applications aux événements bare-metal à l'aide d'une API REST.
Vous ne pouvez créer une ressource personnalisée (CR) BMCEventSubscription
que pour le matériel physique qui prend en charge Redfish et dont l'interface fournisseur est définie sur redfish
ou idrac-redfish
.
Utilisez le CR BMCEventSubscription
pour vous abonner à des événements Redfish prédéfinis. La norme Redfish ne permet pas de créer des alertes et des seuils spécifiques. Par exemple, pour recevoir un événement d'alerte lorsque la température d'un boîtier dépasse 40° Celsius, vous devez configurer manuellement l'événement conformément aux recommandations du fournisseur.
Effectuez la procédure suivante pour vous abonner aux événements bare-metal pour le nœud à l'aide d'un CR BMCEventSubscription
.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Obtenir le nom d'utilisateur et le mot de passe du BMC.
Déployez un nœud de métal nu avec un contrôleur de gestion de carte de base (BMC) compatible avec Redfish dans votre cluster, et activez les événements Redfish sur le BMC.
NoteL'activation des événements Redfish sur un matériel spécifique n'entre pas dans le cadre de ces informations. Pour plus d'informations sur l'activation des événements Redfish pour votre matériel spécifique, consultez la documentation du fabricant de BMC.
Procédure
Confirmez que le matériel du nœud a activé Redfish
EventService
en exécutant la commandecurl
suivante :curl https://<bmc_ip_address>/redfish/v1/EventService --insecure -H 'Content-Type : application/json' -u "<bmc_username>:<password>"
où :
- adresse IP bmc
- est l'adresse IP du BMC où les événements Redfish sont générés.
Exemple de sortie
{ "@odata.context": "/redfish/v1/$metadata#EventService.EventService", "@odata.id": "/redfish/v1/EventService", "@odata.type": "#EventService.v1_0_2.EventService", "Actions": { "#EventService.SubmitTestEvent": { "EventType@Redfish.AllowableValues": ["StatusChange", "ResourceUpdated", "ResourceAdded", "ResourceRemoved", "Alert"], "target": "/redfish/v1/EventService/Actions/EventService.SubmitTestEvent" } }, "DeliveryRetryAttempts": 3, "DeliveryRetryIntervalSeconds": 30, "Description": "Event Service represents the properties for the service", "EventTypesForSubscription": ["StatusChange", "ResourceUpdated", "ResourceAdded", "ResourceRemoved", "Alert"], "EventTypesForSubscription@odata.count": 5, "Id": "EventService", "Name": "Event Service", "ServiceEnabled": true, "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Subscriptions": { "@odata.id": "/redfish/v1/EventService/Subscriptions" } }
Obtenez l'itinéraire du service Bare Metal Event Relay pour le cluster en exécutant la commande suivante :
$ oc get route -n openshift-bare-metal-events
Exemple de sortie
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
Créer une ressource
BMCEventSubscription
pour s'abonner aux événements Redfish :Enregistrez le YAML suivant dans le fichier
bmc_sub.yaml
:apiVersion: metal3.io/v1alpha1 kind: BMCEventSubscription metadata: name: sub-01 namespace: openshift-machine-api spec: hostName: <hostname> 1 destination: <proxy_service_url> 2 context: ''
- 1
- Spécifie le nom ou l'UUID du nœud de travail où les événements Redfish sont générés.
- 2
- Spécifie le service proxy d'événements pour le métal nu, par exemple,
https://hw-event-proxy-openshift-bare-metal-events.apps.compute-1.example.com/webhook
.
Créer le CR
BMCEventSubscription
:$ oc create -f bmc_sub.yaml
Facultatif : Pour supprimer l'abonnement aux événements BMC, exécutez la commande suivante :
$ oc delete -f bmc_sub.yaml
Facultatif : Pour créer manuellement un abonnement aux événements Redfish sans créer de CR
BMCEventSubscription
, exécutez la commandecurl
suivante, en spécifiant le nom d'utilisateur et le mot de passe de la BMC.$ 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
où :
- proxy_service_url
-
est le service de proxy d'événements à l'état brut, par exemple,
https://hw-event-proxy-openshift-bare-metal-events.apps.compute-1.example.com/webhook
.
- adresse IP bmc
- est l'adresse IP du BMC où les événements Redfish sont générés.
Exemple de sortie
HTTP/1.1 201 Created Server: AMI MegaRAC Redfish Service Location: /redfish/v1/EventService/Subscriptions/1 Allow: GET, POST Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Auth-Token Access-Control-Allow-Headers: X-Auth-Token Access-Control-Allow-Credentials: true Cache-Control: no-cache, must-revalidate Link: <http://redfish.dmtf.org/schemas/v1/EventDestination.v1_6_0.json>; rel=describedby Link: <http://redfish.dmtf.org/schemas/v1/EventDestination.v1_6_0.json> Link: </redfish/v1/EventService/Subscriptions>; path= ETag: "1651135676" Content-Type: application/json; charset=UTF-8 OData-Version: 4.0 Content-Length: 614 Date: Thu, 28 Apr 2022 08:47:57 GMT
14.4.2. Interroger les abonnements aux événements Redfish bare-metal avec curl
Certains fournisseurs de matériel limitent le nombre d'abonnements aux événements matériels Redfish. Vous pouvez demander le nombre d'abonnements aux événements Redfish en utilisant curl
.
Conditions préalables
- Obtenir le nom d'utilisateur et le mot de passe du BMC.
- Déployez un nœud bare-metal avec un contrôleur de gestion de carte de base (BMC) compatible avec Redfish dans votre cluster, et activez les événements matériels Redfish sur le BMC.
Procédure
Vérifiez les abonnements actuels de la BMC en exécutant la commande suivante :
curl
:$ curl --globoff -H "Content-Type : application/json" -k -X GET --user <bmc_username>:<password> https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions
où :
- adresse IP bmc
- est l'adresse IP du BMC où les événements Redfish sont générés.
Exemple de sortie
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 435 100 435 0 0 399 0 0:00:01 0:00:01 --:--:-- 399 { "@odata.context": "/redfish/v1/$metadata#EventDestinationCollection.EventDestinationCollection", "@odata.etag": "" 1651137375 "", "@odata.id": "/redfish/v1/EventService/Subscriptions", "@odata.type": "#EventDestinationCollection.EventDestinationCollection", "Description": "Collection for Event Subscriptions", "Members": [ { "@odata.id": "/redfish/v1/EventService/Subscriptions/1" }], "Members@odata.count": 1, "Name": "Event Subscriptions Collection" }
Dans cet exemple, un seul abonnement est configuré :
/redfish/v1/EventService/Subscriptions/1
.Facultatif : Pour supprimer l'abonnement à
/redfish/v1/EventService/Subscriptions/1
aveccurl
, exécutez la commande suivante en spécifiant le nom d'utilisateur et le mot de passe de la BMC :$ curl --globoff -L -w "%{http_code} %{url_effective}\n\n" -k -u <bmc_username>:<password >-H "Content-Type : application/json" -d '{}' -X DELETE https://<bmc_ip_address>/redfish/v1/EventService/Subscriptions/1
où :
- adresse IP bmc
- est l'adresse IP du BMC où les événements Redfish sont générés.
14.4.3. Création de l'événement bare-metal et des CR secrètes
Pour commencer à utiliser les événements bare-metal, créez la ressource personnalisée (CR) HardwareEvent
pour l'hôte où se trouve le matériel Redfish. Les événements matériels et les pannes sont signalés dans les journaux de hw-event-proxy
.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Installer le relais d'événements Bare Metal.
-
Créez un CR
BMCEventSubscription
pour le matériel BMC Redfish.
Les ressources multiples HardwareEvent
ne sont pas autorisées.
Procédure
Créer la ressource personnalisée (CR)
HardwareEvent
:Enregistrez le YAML suivant dans le fichier
hw-event.yaml
:apiVersion: "event.redhat-cne.org/v1alpha1" kind: "HardwareEvent" metadata: name: "hardware-event" spec: nodeSelector: node-role.kubernetes.io/hw-event: "" 1 transportHost: "amqp://amq-router-service-name.amq-namespace.svc.cluster.local" 2 logLevel: "debug" 3 msgParserTimeout: "10" 4
- 1
- Obligatoire. Utilisez le champ
nodeSelector
pour cibler les nœuds portant l'étiquette spécifiée, par exemplenode-role.kubernetes.io/hw-event: ""
. - 2
- Nécessaire. Hôte AMQP qui délivre les événements au niveau de la couche transport à l'aide du protocole AMQP.
- 3
- Facultatif. La valeur par défaut est
debug
. Définit le niveau de journalisation dans les journauxhw-event-proxy
. Les niveaux de journalisation suivants sont disponibles :fatal
,error
,warning
,info
,debug
,trace
. - 4
- Facultatif. Définit la valeur du délai d'attente en millisecondes pour l'analyseur de messages. Si une demande d'analyse de message ne reçoit pas de réponse dans le délai imparti, le message d'événement matériel d'origine est transmis au cadre d'événements natif du nuage. La valeur par défaut est 10.
Créer le CR
HardwareEvent
:$ oc create -f hardware-event.yaml
Créez un nom d'utilisateur et un mot de passe BMC
Secret
CR qui permet au proxy d'événements matériels d'accéder au registre de messages Redfish pour l'hôte bare-metal.Enregistrez le YAML suivant dans le fichier
hw-event-bmc-secret.yaml
:apiVersion: v1 kind: Secret metadata: name: redfish-basic-auth type: Opaque stringData: 1 username: <bmc_username> password: <bmc_password> # BMC host DNS or IP address hostaddr: <bmc_host_ip_address>
- 1
- Saisissez des valeurs en texte clair pour les différents postes sous
stringData
.
Créer le CR
Secret
:$ oc create -f hw-event-bmc-secret.yaml