Power monitoring is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.

For more information about the support scope of Red Hat Technology Preview features, see Technology Preview Features Support Scope.

The Kepler resource is a Kubernetes custom resource definition (CRD) that enables you to configure the deployment and monitor the status of the Kepler resource.

The Kepler configuration

You can configure Kepler with the spec field of the Kepler resource.

Ensure that the name of your Kepler instance is kepler. All other instances are rejected by the Power monitoring Operator Webhook.

The following is the list of configuration options:

Table 1. Kepler configuration options
Name Spec Description Default



The port on the node where the Prometheus metrics are exposed.




The nodes on which Kepler exporter pods are scheduled.

kubernetes.io/os: linux



The tolerations for Kepler exporter that allow the pods to be scheduled on nodes with specific characteristics.

- operator: "Exists"

Example Kepler resource with default configuration
apiVersion: kepler.system.sustainable.computing.io/v1alpha1
kind: Kepler
  name: kepler
      port: 9103 (1)
        kubernetes.io/os: linux (2)
      Tolerations: (3)
      - key: ""
        operator: "Exists"
        value: ""
        effect: ""
1 The Prometheus metrics are exposed on port 9103.
2 Kepler pods are scheduled on Linux nodes.
3 The default tolerations allow Kepler to be scheduled on any node.

Monitoring the Kepler status

You can monitor the state of the Kepler exporter with the status field of the Kepler resource.

The status.exporter field includes information, such as the following:

  • The number of nodes currently running the Kepler pods

  • The number of nodes that should be running the Kepler pods

  • Conditions representing the health of the Kepler resource

This provides you with valuable insights into the changes made through the spec field.

Example state of the Kepler resource
apiVersion: kepler.system.sustainable.computing.io/v1alpha1
kind: Kepler
  name: kepler
   conditions: (1)
     - lastTransitionTime: '2024-01-11T11:07:39Z'
       message: Reconcile succeeded
       observedGeneration: 1
       reason: ReconcileSuccess
       status: 'True'
       type: Reconciled
     - lastTransitionTime: '2024-01-11T11:07:39Z'
       message: >-
         Kepler daemonset "kepler-operator/kepler" is deployed to all nodes and
         available; ready 2/2
       observedGeneration: 1
       reason: DaemonSetReady
       status: 'True'
       type: Available
   currentNumberScheduled: 2 (2)
   desiredNumberScheduled: 2 (3)
1 The health of the Kepler resource. In this example, Kepler is successfully reconciled and ready.
2 The number of nodes currently running the Kepler pods is 2.
3 The wanted number of nodes to run the Kepler pods is 2.

Configuring Kepler to use Redfish

You can configure Kepler to use Redfish as the source for running or hosting containers. Kepler can then monitor the power usage of these containers.

  • You have access to the OKD web console.

  • You are logged in as a user with the cluster-admin role.

  • You have installed the Power monitoring Operator.

  1. In the Administrator perspective of the web console, click OperatorsInstalled Operators.

  2. Click Power monitoring for Red Hat OpenShift from the Installed Operators list and click the Kepler tab.

  3. Click Create Kepler. If you already have a Kepler instance created, click Edit Kepler.

  4. Configure .spec.exporter.redfish of the Kepler instance by specifying the mandatory secretRef field. You can also configure the optional probeInterval and skipSSLVerify fields to meet your needs.

    Example Kepler instance
    apiVersion: kepler.system.sustainable.computing.io/v1alpha1
    kind: Kepler
      name: kepler
    # ...
          secretRef: <secret_name> required (1)
          probeInterval: 60s (2)
          skipSSLVerify: false (3)
    # ...
    1 Required: Specifies the name of the secret that contains the credentials for accessing the Redfish server.
    2 Optional: Controls the frequency at which the power information is queried from Redfish. The default value is 60s.
    3 Optional: Controls if Kepler skips verifying the Redfish server certificate. The default value is false.

    After Kepler is deployed, the openshift-power-monitoring namespace is created.

  5. Create the redfish.csv file with the following data format:

    Example redfish.csv file
  6. Create the secret under the openshift-power-monitoring namespace. You must create the secret with the following conditions:

    • The secret type is Opaque.

    • The credentials are stored under the redfish.csv key in the data field of the secret.

    $ oc -n openshift-power-monitoring \
          create secret generic redfish-secret \
    Example output
    apiVersion: v1
    kind: Secret
      name: redfish-secret
      redfish.csv: YmFyCg==
      # ...

    The Kepler deployment will not continue until the Redfish secret is created. You can find this information in the status of a Kepler instance.