Installing Kepler Operator on OpenShift

October 14, 2025 · View on GitHub

This guide walks you through installing the Kepler Operator on OpenShift using OperatorHub or the Community Catalog.

Prerequisites

  • OpenShift cluster running version 4.x or higher
  • oc CLI or access to the OpenShift Web Console
  • Appropriate cluster permissions to install operators

Built-in OpenShift Features

Unlike vanilla Kubernetes, OpenShift includes several features out-of-the-box that simplify Kepler deployment:

  • Service Serving Certificates: Automatic TLS certificate management (no cert-manager required)
  • Prometheus Operator: Built-in monitoring stack
  • User Workload Monitoring: Optional monitoring for user applications

Step 1: Navigate to OperatorHub

  1. Log in to the OpenShift Web Console
  2. Navigate to OperatorsOperatorHub
  3. In the search box, type "Kepler Operator"

Step 2: Install the Operator

  1. Click on the Kepler Operator tile
  2. Click Install
  3. Configure installation options:
    • Update channel: Select alpha (or the latest stable channel)
    • Installation mode: Choose one of:
      • All namespaces on the cluster (recommended) - Operator can manage PowerMonitors in any namespace
      • A specific namespace - Operator only manages resources in selected namespace
    • Installed Namespace: Select openshift-operators (recommended) or create a custom namespace
    • Update approval: Choose automatic or manual updates
  1. Click Install

Step 3: Verify Installation

  1. Navigate to OperatorsInstalled Operators
  2. Ensure the namespace filter shows your selected namespace (e.g., openshift-operators)
  3. Verify Kepler Operator appears with status Succeeded

The operator is now ready to manage PowerMonitor resources.

Installation via CLI

Using operator-sdk

If you prefer command-line installation, you can use the operator-sdk tool:

# Install the operator-sdk if not already installed
# See https://sdk.operatorframework.io/docs/installation/

# Run the operator bundle
operator-sdk run bundle \
  quay.io/sustainable_computing_io/kepler-operator-bundle:latest \
  --install-mode AllNamespaces \
  --namespace openshift-operators

Using OLM Subscription (Advanced)

Create a Subscription resource manually:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: kepler-operator
  namespace: openshift-operators
spec:
  channel: alpha
  name: kepler-operator
  source: community-operators
  sourceNamespace: openshift-marketplace
  installPlanApproval: Automatic

Apply the subscription:

oc apply -f kepler-operator-subscription.yaml

Verification

Check Operator Status

Verify the operator is running:

oc get pods -n openshift-operators | grep kepler-operator

Expected output:

kepler-operator-controller-xxxxx-yyyyy  2/2   Running  0  1m

Check ClusterServiceVersion (CSV)

oc get csv -n openshift-operators | grep kepler

You should see the Kepler Operator CSV with Succeeded phase:

kepler-operator.v0.21.0   Kepler Operator   0.21.0   Succeeded

Check Custom Resource Definitions

Verify the PowerMonitor CRD is installed:

oc get crd powermonitors.kepler.system.sustainable.computing.io

OpenShift-Specific Features

Security Context Constraints (SCC)

Kepler requires privileged access to read hardware sensors. The operator automatically configures appropriate Security Context Constraints (SCC) for Kepler pods.

You can verify the SCC configuration:

oc get scc | grep kepler

Integration with OpenShift Monitoring

Kepler automatically integrates with OpenShift's built-in monitoring stack through ServiceMonitor resources. No additional configuration is needed for basic metrics collection.

To enable User Workload Monitoring (if not already enabled):

oc apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    enableUserWorkload: true
EOF

Next Steps

Now that the operator is installed:

  1. Create a PowerMonitor resource to deploy Kepler
  2. Configure PowerMonitor for your cluster
  3. Set up Grafana dashboards to visualize energy metrics

Troubleshooting

Operator Not Appearing in OperatorHub

If Kepler Operator doesn't appear in OperatorHub:

  1. Check if the Community Operators catalog source is enabled:

    oc get catalogsource -n openshift-marketplace
    
  2. Look for community-operators in the list. If missing, contact your cluster administrator.

Installation Stuck in "Installing" State

Check the install plan status:

oc get installplan -n openshift-operators
oc describe installplan <install-plan-name> -n openshift-operators

CSV Failures

View CSV details to understand failures:

oc describe csv kepler-operator.v<version> -n openshift-operators

Check operator logs:

oc logs -n openshift-operators deployment/kepler-operator-controller

For more detailed troubleshooting, see the Troubleshooting Guide.

Upgrading

OpenShift operators can be upgraded automatically or manually based on your installation configuration.

See the Upgrading Guide for details.

Uninstallation

To uninstall Kepler Operator from OpenShift, see the Uninstallation Guide.