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.

ValueTypeDefaultDescription
global.imageRegistrystringghcr.io/smrt-devopsContainer registry prefix. Override to use a private mirror or air-gapped registry.
global.imagePullSecretslist[]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.

ValueTypeDefaultDescription
image.repositorystringcost-pilot/agentImage repository (appended to global.imageRegistry).
image.tagstringv0.0.1-nightlyImage tag. Pin to a specific release tag in production.
image.pullPolicystringAlwaysKubernetes image pull policy. Use IfNotPresent for pinned tags.

backend

Connection settings for the CostPilot ingestion backend.

ValueTypeDefaultDescription
backend.ingesterEndpointstringeuIngester region. Must be eu or us. The Operator builds the full ingester URL from this value.
Warning

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.

Note

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.

ValueTypeDefaultDescription
agent.enabledbooltrueWhether to deploy the agent ConfigMap (and thus trigger the Operator to create the ReplicaSet). Set to false to deploy the Operator only.
agent.replicaCountinteger3Number of agent replicas. Do not set below 2 in production — leader election requires at least two replicas for continuity during pod replacement.
agent.config.intervalSecondsinteger15Metric collection interval in seconds. Minimum is 15. Lower values increase data freshness but add load on the Kubernetes metrics-server.
agent.config.peerPortstring18443Internal agent port. Reserved — do not change.
agent.config.restartSignalstring""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.

ValueTypeDefaultDescription
operator.enabledbooltrueWhether to deploy the Operator Deployment.
operator.namestringcost-pilot-operatorName used for the Operator Deployment, ServiceAccount, ClusterRole, and Role.
operator.replicaCountinteger1Number of Operator replicas. Additional replicas act as standby via leader election.
operator.resources.requests.cpustring50mCPU request for the Operator pod.
operator.resources.requests.memorystring64MiMemory request for the Operator pod.
operator.resources.limits.cpustring100mCPU limit for the Operator pod.
operator.resources.limits.memorystring128MiMemory limit for the Operator pod.
operator.serviceAccount.createbooltrueWhether to create a ServiceAccount for the Operator.
operator.serviceAccount.annotationsmap{}Annotations added to the Operator ServiceAccount.
operator.rbac.createbooltrueWhether to create ClusterRole, ClusterRoleBinding, Role, and RoleBinding for the Operator.
operator.securityContext.runAsNonRootbooltrueRun the Operator container as a non-root user.
operator.securityContext.runAsUserinteger1000UID for the Operator container process.
operator.securityContext.fsGroupinteger1000fsGroup for the Operator pod.
operator.config.leaderElectboolfalseEnable 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.

ValueTypeDefaultDescription
secrets.agent.clusterApiKeySecretNamestringcp-agent-secretName 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.
Tip

Create the Secret before installing the chart:

kubectl create secret generic cp-agent-secret \
  --namespace costpilot \
  --from-literal=cluster-api-key=YOUR_API_KEY_HERE

If 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"