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:
| Field | Description | Default | Validation |
|---|---|---|---|
type ConditionType | Type of Kepler Condition - Reconciled, Available ... | ||
status ConditionStatus | status of the condition, one of True, False, Unknown. | ||
observedGeneration integer | observedGeneration 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 Time | lastTransitionTime 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 ConditionReason | reason contains a programmatic identifier indicating the reason for the condition's last transition. | ||
message string | message 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:
| Field | Description |
|---|---|
InvalidPowerMonitorResource | InvalidPowerMonitorResource indicates the CR name was invalid |
ReconcileSuccess | ReconcileComplete indicates the CR was successfully reconciled |
ReconcileError | ReconcileError indicates an error was encountered while reconciling the CR |
DaemonSetNotFound | DaemonSetNotFound indicates the DaemonSet created for a kepler was not found |
DaemonSetError | DaemonSetError indicates an error occurred with the DaemonSet |
DaemonSetInProgress | DaemonSetInProgess indicates the DaemonSet is being updated |
DaemonSetUnavailable | DaemonSetUnavailable indicates no DaemonSet pods are available |
DaemonSetPartiallyAvailable | DaemonSetPartiallyAvailable indicates some but not all DaemonSet pods are available |
DaemonSetPodsNotRunning | DaemonSetPodsNotRunning indicates DaemonSet pods exist but are not running |
DaemonSetRolloutInProgress | DaemonSetRolloutInProgress indicates a DaemonSet rollout is in progress |
DaemonSetReady | DaemonSetReady indicates the DaemonSet is fully available and ready |
DaemonSetOutOfSync | DaemonSetOutOfSync indicates the DaemonSet spec doesn't match the desired state |
SecretNotFound | SecretNotFound 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:
| Field | Description |
|---|---|
True | ConditionTrue indicates the condition is met |
False | ConditionFalse indicates the condition is not met |
Unknown | ConditionUnknown indicates the condition status cannot be determined |
Degraded | ConditionDegraded 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:
| Field | Description |
|---|---|
Available | Available indicates whether the PowerMonitor is available and serving metrics |
Reconciled | Reconciled indicates whether the PowerMonitor has been successfully reconciled |
ConfigMapRef
ConfigMapRef defines a reference to a ConfigMap
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
name string | Name of the ConfigMap | MinLength: 1 |
PowerMonitor
PowerMonitor is the Schema for the PowerMonitor API
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | kepler.system.sustainable.computing.io/v1alpha1 | ||
kind string | PowerMonitor | ||
metadata ObjectMeta | Refer 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:
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | kepler.system.sustainable.computing.io/v1alpha1 | ||
kind string | PowerMonitorInternal | ||
metadata ObjectMeta | Refer to Kubernetes API documentation for fields of metadata. | ||
spec PowerMonitorInternalSpec | |||
status PowerMonitorInternalStatus |
PowerMonitorInternalDashboardSpec
PowerMonitorInternalDashboardSpec defines settings for the Kepler Grafana dashboard
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
enabled boolean | Enabled controls whether to deploy the Grafana dashboard | false |
PowerMonitorInternalKeplerConfigSpec
PowerMonitorInternalKeplerConfigSpec defines configuration options for internal Kepler deployment
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
logLevel string | LogLevel sets the logging verbosity (e.g., debug, info, warn, error) | info | |
additionalConfigMaps ConfigMapRef array | AdditionalConfigMaps 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 array | MetricLevels 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 Duration | Staleness 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. | 500ms | Pattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$ Type: string |
sampleRate Duration | SampleRate 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. | 5s | Pattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$ Type: string |
maxTerminated integer | MaxTerminated 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:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector object (keys:string, values:string) | NodeSelector defines which Nodes the Pod is scheduled on | { kubernetes.io/os:linux } | |
tolerations Toleration array | If specified, define Pod's tolerations | [map[effect: key: operator:Exists value:]] | |
security PowerMonitorKeplerDeploymentSecuritySpec | If set, defines the security mode and allowed SANames | ||
secrets SecretRef array | Secrets to be mounted in the power monitor containers | ||
image string | Image specifies the Kepler container image | MinLength: 3 | |
kubeRbacProxyImage string | KubeRbacProxyImage specifies the kube-rbac-proxy sidecar image | MinLength: 3 | |
namespace string | Namespace specifies the namespace where Kepler will be deployed | MinLength: 1 |
PowerMonitorInternalKeplerSpec
PowerMonitorInternalKeplerSpec defines the internal Kepler component specification
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
deployment PowerMonitorInternalKeplerDeploymentSpec | Deployment contains the deployment settings for the internal Kepler DaemonSet | Required: {} | |
config PowerMonitorInternalKeplerConfigSpec | Config contains the configuration options for internal Kepler |
PowerMonitorInternalKeplerStatus
PowerMonitorInternalKeplerStatus defines the observed state of the internal Kepler DaemonSet
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
currentNumberScheduled integer | CurrentNumberScheduled 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 integer | The number of nodes that are running the power-monitor-internal pod, but are not supposed to run the power-monitor-internal pod. | ||
desiredNumberScheduled integer | The total number of nodes that should be running the power-monitor-internal pod (including nodes correctly running the power-monitor-internal pod). | ||
numberReady integer | numberReady 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 integer | The total number of nodes that are running updated power-monitor-internal pod | ||
numberAvailable integer | 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 and available | ||
numberUnavailable integer | The 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
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | kepler.system.sustainable.computing.io/v1alpha1 | ||
kind string | PowerMonitorInternalList | ||
metadata ListMeta | Refer to Kubernetes API documentation for fields of metadata. | ||
items PowerMonitorInternal array |
PowerMonitorInternalOpenShiftSpec
PowerMonitorInternalOpenShiftSpec defines OpenShift-specific settings
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
enabled boolean | Enabled controls whether OpenShift-specific features are enabled | true | |
dashboard PowerMonitorInternalDashboardSpec | Dashboard configures the Grafana dashboard deployment |
PowerMonitorInternalSpec
PowerMonitorInternalSpec defines the desired state of PowerMonitorInternal
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
kepler PowerMonitorInternalKeplerSpec | Kepler contains the Kepler component specification | Required: {} | |
openshift PowerMonitorInternalOpenShiftSpec | OpenShift contains OpenShift-specific settings |
PowerMonitorInternalStatus
PowerMonitorInternalStatus defines the observed state of PowerMonitorInternal
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
kepler PowerMonitorInternalKeplerStatus | Kepler contains the status of the internal Kepler DaemonSet | ||
conditions Condition array | conditions represent the latest available observations of power-monitor-internal |
PowerMonitorKeplerConfigSpec
PowerMonitorKeplerConfigSpec defines configuration options for Kepler
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
logLevel string | LogLevel sets the logging verbosity (e.g., debug, info, warn, error) | info | |
additionalConfigMaps ConfigMapRef array | AdditionalConfigMaps 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 array | MetricLevels 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 Duration | Staleness 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. | 500ms | Pattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$ Type: string |
sampleRate Duration | SampleRate 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. | 5s | Pattern: ^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$ Type: string |
maxTerminated integer | MaxTerminated 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:
| Field | Description | Default | Validation |
|---|---|---|---|
mode SecurityMode | Mode specifies the security mode (none or rbac) | Enum: [none rbac] | |
allowedSANames string array | AllowedSANames lists service account names allowed to access Kepler metrics |
PowerMonitorKeplerDeploymentSpec
PowerMonitorKeplerDeploymentSpec defines deployment settings for the Kepler DaemonSet
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
nodeSelector object (keys:string, values:string) | NodeSelector defines which Nodes the Pod is scheduled on | { kubernetes.io/os:linux } | |
tolerations Toleration array | If specified, define Pod's tolerations | [map[effect: key: operator:Exists value:]] | |
security PowerMonitorKeplerDeploymentSecuritySpec | If set, defines the security mode and allowed SANames | ||
secrets SecretRef array | Secrets to be mounted in the power monitor containers |
PowerMonitorKeplerSpec
PowerMonitorKeplerSpec defines the Kepler component specification
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
deployment PowerMonitorKeplerDeploymentSpec | Deployment contains the deployment settings for the Kepler DaemonSet | ||
config PowerMonitorKeplerConfigSpec | Config contains the configuration options for Kepler |
PowerMonitorKeplerStatus
PowerMonitorKeplerStatus defines the observed state of the Kepler DaemonSet
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
currentNumberScheduled integer | CurrentNumberScheduled is the number of nodes that are running at least 1 power-monitor pod and are supposed to run the power-monitor pod. | ||
numberMisscheduled integer | The number of nodes that are running the power-monitor pod, but are not supposed to run the power-monitor pod. | ||
desiredNumberScheduled integer | The total number of nodes that should be running the power-monitor pod (including nodes correctly running the power-monitor pod). | ||
numberReady integer | numberReady 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 integer | The total number of nodes that are running updated power-monitor pod | ||
numberAvailable integer | The 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 integer | The 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
| Field | Description | Default | Validation |
|---|---|---|---|
apiVersion string | kepler.system.sustainable.computing.io/v1alpha1 | ||
kind string | PowerMonitorList | ||
metadata ListMeta | Refer to Kubernetes API documentation for fields of metadata. | ||
items PowerMonitor array |
PowerMonitorSpec
PowerMonitorSpec defines the desired state of Power Monitor
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
kepler PowerMonitorKeplerSpec |
PowerMonitorStatus
PowerMonitorStatus defines the observed state of Power Monitor
Appears in:
| Field | Description | Default | Validation |
|---|---|---|---|
kepler PowerMonitorKeplerStatus | |||
conditions Condition array | conditions 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:
| Field | Description | Default | Validation |
|---|---|---|---|
name string | Name of the secret in the same namespace as the Kepler deployment | MinLength: 1 Required: {} | |
mountPath string | MountPath where the secret should be mounted in the container | MinLength: 1 Required: {} | |
readOnly boolean | ReadOnly specifies whether the secret should be mounted read-only | true |
SecurityMode
Underlying type: string
SecurityMode defines the security mode for Kepler metrics access
Appears in:
| Field | Description |
|---|---|
none | SecurityModeNone disables RBAC-based access control for Kepler metrics |
rbac | SecurityModeRBAC enables RBAC-based access control for Kepler metrics |