API Reference

February 2, 2026 ยท View on GitHub

Packages

kepler.system.sustainable.computing.io/v1alpha1

Package v1alpha1 contains API Schema definitions for the kepler.system v1alpha1 API group

Resource Types

Condition

Appears in:

FieldDescriptionDefaultValidation
type ConditionTypeType of Kepler Condition - Reconciled, Available ...
status ConditionStatusstatus of the condition, one of True, False, Unknown.
observedGeneration integerobservedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
Minimum: 0
lastTransitionTime TimelastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
Format: date-time
Required: {}
Type: string
reason ConditionReasonreason contains a programmatic identifier indicating the reason for the condition's last transition.
message stringmessage is a human readable message indicating details about the transition.
This may be an empty string.
MaxLength: 32768
Required: {}

ConditionReason

Underlying type: string

ConditionReason represents the reason for a condition's last transition

Appears in:

FieldDescription
InvalidPowerMonitorResourceInvalidPowerMonitorResource indicates the CR name was invalid
ReconcileSuccessReconcileComplete indicates the CR was successfully reconciled
ReconcileErrorReconcileError indicates an error was encountered while reconciling the CR
DaemonSetNotFoundDaemonSetNotFound indicates the DaemonSet created for a kepler was not found
DaemonSetErrorDaemonSetError indicates an error occurred with the DaemonSet
DaemonSetInProgressDaemonSetInProgess indicates the DaemonSet is being updated
DaemonSetUnavailableDaemonSetUnavailable indicates no DaemonSet pods are available
DaemonSetPartiallyAvailableDaemonSetPartiallyAvailable indicates some but not all DaemonSet pods are available
DaemonSetPodsNotRunningDaemonSetPodsNotRunning indicates DaemonSet pods exist but are not running
DaemonSetRolloutInProgressDaemonSetRolloutInProgress indicates a DaemonSet rollout is in progress
DaemonSetReadyDaemonSetReady indicates the DaemonSet is fully available and ready
DaemonSetOutOfSyncDaemonSetOutOfSync indicates the DaemonSet spec doesn't match the desired state
SecretNotFoundSecretNotFound indicates one or more referenced secrets are missing

ConditionStatus

Underlying type: string

These are valid condition statuses. "ConditionTrue" means a resource is in the condition. "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes can't decide if a resource is in the condition or not. In the future, we could add other intermediate conditions, e.g. ConditionDegraded.

Appears in:

FieldDescription
TrueConditionTrue indicates the condition is met
FalseConditionFalse indicates the condition is not met
UnknownConditionUnknown indicates the condition status cannot be determined
DegradedConditionDegraded indicates the resource is operational but in a degraded state

ConditionType

Underlying type: string

ConditionType represents the type of condition for a PowerMonitor resource

Appears in:

FieldDescription
AvailableAvailable indicates whether the PowerMonitor is available and serving metrics
ReconciledReconciled indicates whether the PowerMonitor has been successfully reconciled

ConfigMapRef

ConfigMapRef defines a reference to a ConfigMap

Appears in:

FieldDescriptionDefaultValidation
name stringName of the ConfigMapMinLength: 1

PowerMonitor

PowerMonitor is the Schema for the PowerMonitor API

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkepler.system.sustainable.computing.io/v1alpha1
kind stringPowerMonitor
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PowerMonitorSpec
status PowerMonitorStatus

PowerMonitorInternal

PowerMonitorInternal is the Schema for the internal kepler 2 API

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringkepler.system.sustainable.computing.io/v1alpha1
kind stringPowerMonitorInternal
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PowerMonitorInternalSpec
status PowerMonitorInternalStatus

PowerMonitorInternalDashboardSpec

PowerMonitorInternalDashboardSpec defines settings for the Kepler Grafana dashboard

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled controls whether to deploy the Grafana dashboardfalse

PowerMonitorInternalKeplerConfigSpec

PowerMonitorInternalKeplerConfigSpec defines configuration options for internal Kepler deployment

Appears in:

FieldDescriptionDefaultValidation
logLevel stringLogLevel sets the logging verbosity (e.g., debug, info, warn, error)info
additionalConfigMaps ConfigMapRef arrayAdditionalConfigMaps is a list of ConfigMap names that will be merged with the default ConfigMap
These AdditionalConfigMaps must exist in the same namespace as PowerMonitor components
metricLevels string arrayMetricLevels specifies which metrics levels to export
Valid values are combinations of: node, process, container, vm, pod
[node pod vm]items:Enum: [node process container vm pod]
staleness DurationStaleness specifies how long to wait before considering calculated power values as stale
Must be a positive duration (e.g., "500ms", "5s", "1h"). Negative values are not allowed.
500msPattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$
Type: string
sampleRate DurationSampleRate specifies the interval for monitoring resources (processes, containers, vms, etc.)
Must be a positive duration (e.g., "5s", "1m", "30s"). Negative values are not allowed.
5sPattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$
Type: string
maxTerminated integerMaxTerminated controls terminated workload tracking behavior
Negative values: track unlimited terminated workloads (no capacity limit)
Zero: disable terminated workload tracking completely
Positive values: track top N terminated workloads by energy consumption
0

PowerMonitorInternalKeplerDeploymentSpec

PowerMonitorInternalKeplerDeploymentSpec extends PowerMonitorKeplerDeploymentSpec with internal deployment settings

Appears in:

FieldDescriptionDefaultValidation
nodeSelector object (keys:string, values:string)NodeSelector defines which Nodes the Pod is scheduled on{ kubernetes.io/os:linux }
tolerations Toleration arrayIf specified, define Pod's tolerations[map[effect: key: operator:Exists value:]]
security PowerMonitorKeplerDeploymentSecuritySpecIf set, defines the security mode and allowed SANames
secrets SecretRef arraySecrets to be mounted in the power monitor containers
image stringImage specifies the Kepler container imageMinLength: 3
kubeRbacProxyImage stringKubeRbacProxyImage specifies the kube-rbac-proxy sidecar imageMinLength: 3
namespace stringNamespace specifies the namespace where Kepler will be deployedMinLength: 1

PowerMonitorInternalKeplerSpec

PowerMonitorInternalKeplerSpec defines the internal Kepler component specification

Appears in:

FieldDescriptionDefaultValidation
deployment PowerMonitorInternalKeplerDeploymentSpecDeployment contains the deployment settings for the internal Kepler DaemonSetRequired: {}
config PowerMonitorInternalKeplerConfigSpecConfig contains the configuration options for internal Kepler

PowerMonitorInternalKeplerStatus

PowerMonitorInternalKeplerStatus defines the observed state of the internal Kepler DaemonSet

Appears in:

FieldDescriptionDefaultValidation
currentNumberScheduled integerCurrentNumberScheduled is the number of nodes that are running at least 1 power-monitor-internal pod and are
supposed to run the power-monitor-internal pod.
numberMisscheduled integerThe number of nodes that are running the power-monitor-internal pod, but are not supposed
to run the power-monitor-internal pod.
desiredNumberScheduled integerThe total number of nodes that should be running the power-monitor-internal
pod (including nodes correctly running the power-monitor-internal pod).
numberReady integernumberReady is the number of nodes that should be running the power-monitor-internal pod
and have one or more of the power-monitor-internal pod running with a Ready Condition.
updatedNumberScheduled integerThe total number of nodes that are running updated power-monitor-internal pod
numberAvailable integerThe number of nodes that should be running the power-monitor-internal pod and have one or
more of the power-monitor-internal pod running and available
numberUnavailable integerThe number of nodes that should be running the
power-monitor-internal pod and have none of the power-monitor-internal pod running and available

PowerMonitorInternalList

PowerMonitorInternalList contains a list of PowerMonitorInternal

FieldDescriptionDefaultValidation
apiVersion stringkepler.system.sustainable.computing.io/v1alpha1
kind stringPowerMonitorInternalList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items PowerMonitorInternal array

PowerMonitorInternalOpenShiftSpec

PowerMonitorInternalOpenShiftSpec defines OpenShift-specific settings

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled controls whether OpenShift-specific features are enabledtrue
dashboard PowerMonitorInternalDashboardSpecDashboard configures the Grafana dashboard deployment

PowerMonitorInternalSpec

PowerMonitorInternalSpec defines the desired state of PowerMonitorInternal

Appears in:

FieldDescriptionDefaultValidation
kepler PowerMonitorInternalKeplerSpecKepler contains the Kepler component specificationRequired: {}
openshift PowerMonitorInternalOpenShiftSpecOpenShift contains OpenShift-specific settings

PowerMonitorInternalStatus

PowerMonitorInternalStatus defines the observed state of PowerMonitorInternal

Appears in:

FieldDescriptionDefaultValidation
kepler PowerMonitorInternalKeplerStatusKepler contains the status of the internal Kepler DaemonSet
conditions Condition arrayconditions represent the latest available observations of power-monitor-internal

PowerMonitorKeplerConfigSpec

PowerMonitorKeplerConfigSpec defines configuration options for Kepler

Appears in:

FieldDescriptionDefaultValidation
logLevel stringLogLevel sets the logging verbosity (e.g., debug, info, warn, error)info
additionalConfigMaps ConfigMapRef arrayAdditionalConfigMaps is a list of ConfigMap names that will be merged with the default ConfigMap
These AdditionalConfigMaps must exist in the same namespace as PowerMonitor components
metricLevels string arrayMetricLevels specifies which metrics levels to export
Valid values are combinations of: node, process, container, vm, pod
[node pod vm]items:Enum: [node process container vm pod]
staleness DurationStaleness specifies how long to wait before considering calculated power values as stale
Must be a positive duration (e.g., "500ms", "5s", "1h"). Negative values are not allowed.
500msPattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$
Type: string
sampleRate DurationSampleRate specifies the interval for monitoring resources (processes, containers, vms, etc.)
Must be a positive duration (e.g., "5s", "1m", "30s"). Negative values are not allowed.
5sPattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$
Type: string
maxTerminated integerMaxTerminated controls terminated workload tracking behavior
Negative values: track unlimited terminated workloads (no capacity limit)
Zero: disable terminated workload tracking completely
Positive values: track top N terminated workloads by energy consumption
0

PowerMonitorKeplerDeploymentSecuritySpec

PowerMonitorKeplerDeploymentSecuritySpec defines security settings for the Kepler deployment

Appears in:

FieldDescriptionDefaultValidation
mode SecurityModeMode specifies the security mode (none or rbac)Enum: [none rbac]
allowedSANames string arrayAllowedSANames lists service account names allowed to access Kepler metrics

PowerMonitorKeplerDeploymentSpec

PowerMonitorKeplerDeploymentSpec defines deployment settings for the Kepler DaemonSet

Appears in:

FieldDescriptionDefaultValidation
nodeSelector object (keys:string, values:string)NodeSelector defines which Nodes the Pod is scheduled on{ kubernetes.io/os:linux }
tolerations Toleration arrayIf specified, define Pod's tolerations[map[effect: key: operator:Exists value:]]
security PowerMonitorKeplerDeploymentSecuritySpecIf set, defines the security mode and allowed SANames
secrets SecretRef arraySecrets to be mounted in the power monitor containers

PowerMonitorKeplerSpec

PowerMonitorKeplerSpec defines the Kepler component specification

Appears in:

FieldDescriptionDefaultValidation
deployment PowerMonitorKeplerDeploymentSpecDeployment contains the deployment settings for the Kepler DaemonSet
config PowerMonitorKeplerConfigSpecConfig contains the configuration options for Kepler

PowerMonitorKeplerStatus

PowerMonitorKeplerStatus defines the observed state of the Kepler DaemonSet

Appears in:

FieldDescriptionDefaultValidation
currentNumberScheduled integerCurrentNumberScheduled is the number of nodes that are running at least 1 power-monitor pod and are
supposed to run the power-monitor pod.
numberMisscheduled integerThe number of nodes that are running the power-monitor pod, but are not supposed
to run the power-monitor pod.
desiredNumberScheduled integerThe total number of nodes that should be running the power-monitor
pod (including nodes correctly running the power-monitor pod).
numberReady integernumberReady is the number of nodes that should be running the power-monitor pod
and have one or more of the power-monitor pod running with a Ready Condition.
updatedNumberScheduled integerThe total number of nodes that are running updated power-monitor pod
numberAvailable integerThe number of nodes that should be running the power-monitor pod and have one or
more of the power-monitor pod running and available
numberUnavailable integerThe number of nodes that should be running the
power-monitor pod and have none of the power-monitor pod running and available

PowerMonitorList

PowerMonitorList contains a list of PowerMonitor

FieldDescriptionDefaultValidation
apiVersion stringkepler.system.sustainable.computing.io/v1alpha1
kind stringPowerMonitorList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.
items PowerMonitor array

PowerMonitorSpec

PowerMonitorSpec defines the desired state of Power Monitor

Appears in:

FieldDescriptionDefaultValidation
kepler PowerMonitorKeplerSpec

PowerMonitorStatus

PowerMonitorStatus defines the observed state of Power Monitor

Appears in:

FieldDescriptionDefaultValidation
kepler PowerMonitorKeplerStatus
conditions Condition arrayconditions represent the latest available observations of power-monitor

SecretRef

SecretRef defines a reference to a Secret to be mounted

Mount Path Cautions: Exercise caution when setting mount paths for secrets. Avoid mounting secrets to critical system paths that may interfere with Kepler's operation or container security:

  • /etc/kepler - Reserved for Kepler configuration files
  • /sys, /proc, /dev - System directories that should remain read-only
  • /usr, /bin, /sbin, /lib - System binaries and libraries
  • / - Root filesystem

Best practices:

  • Use subdirectories like /etc/kepler/secrets/ or /opt/secrets/
  • Ensure mount paths don't conflict with existing volume mounts
  • Test mount paths in development environments before production deployment
  • Monitor Kepler pod logs for mount-related errors

Appears in:

FieldDescriptionDefaultValidation
name stringName of the secret in the same namespace as the Kepler deploymentMinLength: 1
Required: {}
mountPath stringMountPath where the secret should be mounted in the containerMinLength: 1
Required: {}
readOnly booleanReadOnly specifies whether the secret should be mounted read-onlytrue

SecurityMode

Underlying type: string

SecurityMode defines the security mode for Kepler metrics access

Appears in:

FieldDescription
noneSecurityModeNone disables RBAC-based access control for Kepler metrics
rbacSecurityModeRBAC enables RBAC-based access control for Kepler metrics