Helm Chart Reference
This page documents every configurable value in the CostPilot agent Helm chart. The chart deploys the CostPilot Operator, which in turn creates and manages the agent ReplicaSet.
Install or upgrade the chart:
helm upgrade --install costpilot costpilot/agent \
--namespace costpilot \
--create-namespace \
--values my-values.yaml
global
Top-level settings that apply across all chart components.
| Value | Type | Default | Description |
|---|---|---|---|
global.imageRegistry | string | ghcr.io/smrt-devops | Container registry prefix. Override to use a private mirror or air-gapped registry. |
global.imagePullSecrets | list | [] | List of image pull secret names for private registries. Applied to the Operator Deployment. |
image
Container image configuration. Both the Operator and the agent ReplicaSet use the same image with different entrypoints.
| Value | Type | Default | Description |
|---|---|---|---|
image.repository | string | cost-pilot/agent | Image repository (appended to global.imageRegistry). |
image.tag | string | v0.0.1-nightly | Image tag. Pin to a specific release tag in production. |
image.pullPolicy | string | Always | Kubernetes image pull policy. Use IfNotPresent for pinned tags. |
backend
Connection settings for the CostPilot ingestion backend.
| Value | Type | Default | Description |
|---|---|---|---|
backend.ingesterEndpoint | string | eu | Ingester region. Must be eu or us. The Operator builds the full ingester URL from this value. |
The value must be eu or us (not a full URL). If an incorrect value is supplied, the Operator will fail to build a valid ingester URL and agent pods will not start.
agent
Configuration for the agent ReplicaSet managed by the Operator.
Agent resource limits (CPU 160m, memory 128Mi) are managed by the Operator and are not currently configurable via values.yaml. They are set in the Operator’s reconciliation logic.
| Value | Type | Default | Description |
|---|---|---|---|
agent.enabled | bool | true | Whether to deploy the agent ConfigMap (and thus trigger the Operator to create the ReplicaSet). Set to false to deploy the Operator only. |
agent.replicaCount | integer | 3 | Number of agent replicas. Do not set below 2 in production — leader election requires at least two replicas for continuity during pod replacement. |
agent.config.intervalSeconds | integer | 15 | Metric collection interval in seconds. Minimum is 15. Lower values increase data freshness but add load on the Kubernetes metrics-server. |
agent.config.peerPort | string | 18443 | Internal agent port. Reserved — do not change. |
agent.config.restartSignal | string | "" | RFC3339 timestamp. When set to a value newer than an agent’s start time, agents restart. Updated automatically by the CostPilot dashboard. Leave empty. |
operator
Configuration for the CostPilot Operator Deployment.
| Value | Type | Default | Description |
|---|---|---|---|
operator.enabled | bool | true | Whether to deploy the Operator Deployment. |
operator.name | string | cost-pilot-operator | Name used for the Operator Deployment, ServiceAccount, ClusterRole, and Role. |
operator.replicaCount | integer | 1 | Number of Operator replicas. Additional replicas act as standby via leader election. |
operator.resources.requests.cpu | string | 50m | CPU request for the Operator pod. |
operator.resources.requests.memory | string | 64Mi | Memory request for the Operator pod. |
operator.resources.limits.cpu | string | 100m | CPU limit for the Operator pod. |
operator.resources.limits.memory | string | 128Mi | Memory limit for the Operator pod. |
operator.serviceAccount.create | bool | true | Whether to create a ServiceAccount for the Operator. |
operator.serviceAccount.annotations | map | {} | Annotations added to the Operator ServiceAccount. |
operator.rbac.create | bool | true | Whether to create ClusterRole, ClusterRoleBinding, Role, and RoleBinding for the Operator. |
operator.securityContext.runAsNonRoot | bool | true | Run the Operator container as a non-root user. |
operator.securityContext.runAsUser | integer | 1000 | UID for the Operator container process. |
operator.securityContext.fsGroup | integer | 1000 | fsGroup for the Operator pod. |
operator.config.leaderElect | bool | false | Enable leader election for the Operator. Enable if running more than one Operator replica. |
secrets
The agent authenticates using a Cluster API Key stored as a Kubernetes Secret.
| Value | Type | Default | Description |
|---|---|---|---|
secrets.agent.clusterApiKeySecretName | string | cp-agent-secret | Name of the Kubernetes Secret containing the cluster API key. The Secret must have a key named cluster-api-key. Create this Secret before installing the chart. |
Create the Secret before installing the chart:
kubectl create secret generic cp-agent-secret \
--namespace costpilot \
--from-literal=cluster-api-key=YOUR_API_KEY_HEREIf you use a different Secret name, set secrets.agent.clusterApiKeySecretName accordingly.
Complete example values.yaml
global:
imageRegistry: "ghcr.io/smrt-devops"
imagePullSecrets: []
image:
repository: cost-pilot/agent
tag: "v0.1.0" # pin to a specific release in production
pullPolicy: IfNotPresent
backend:
ingesterEndpoint: "eu" # "eu" or "us"
agent:
enabled: true
replicaCount: 3
config:
intervalSeconds: 15
peerPort: "18443"
restartSignal: ""
operator:
enabled: true
name: "cost-pilot-operator"
replicaCount: 1
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
serviceAccount:
create: true
annotations: {}
rbac:
create: true
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
config:
leaderElect: false
secrets:
agent:
clusterApiKeySecretName: "cp-agent-secret"