Helm Chart

Veneer Helm chart values reference.

The Veneer Helm chart deploys the controller to a Kubernetes cluster. This page documents all available Helm values.

Installation

helm install veneer veneer/veneer \
  --namespace veneer-system \
  --create-namespace \
  -f values.yaml

Values Reference

Replica and Image

ValueDefaultDescription
replicaCount2Number of controller replicas (leader election handles HA)
image.repositoryghcr.io/nextdoor/veneerContainer image repository
image.pullPolicyIfNotPresentImage pull policy
image.tag""Image tag (defaults to chart appVersion)
imagePullSecrets[]Image pull secrets for private registries

Naming

ValueDefaultDescription
nameOverride""Override the name of the chart
fullnameOverride""Override the full name of the release

Service Account

ValueDefaultDescription
serviceAccount.createtrueCreate a service account
serviceAccount.automounttrueAutomatically mount API credentials
serviceAccount.annotations{}Annotations (e.g., eks.amazonaws.com/role-arn for IRSA)
serviceAccount.name""Service account name (auto-generated if empty)

Pod Configuration

ValueDefaultDescription
podAnnotations{}Annotations to add to the pod
podLabels{}Labels to add to the pod

Security Context

The chart enforces a restrictive security posture by default:

ValueDefaultDescription
podSecurityContext.runAsNonRoottrueRun as non-root user
podSecurityContext.runAsUser65532User ID
podSecurityContext.fsGroup65532Filesystem group ID
podSecurityContext.seccompProfile.typeRuntimeDefaultSeccomp profile
securityContext.allowPrivilegeEscalationfalsePrevent privilege escalation
securityContext.capabilities.drop["ALL"]Drop all capabilities
securityContext.readOnlyRootFilesystemtrueRead-only root filesystem
securityContext.runAsNonRoottrueRun as non-root
securityContext.runAsUser65532User ID
securityContext.seccompProfile.typeRuntimeDefaultSeccomp profile

Controller Configuration

The config section is passed directly to Veneer’s config.yaml. See the Configuration Reference for full details on each option, including validation rules and environment variable overrides.

ValueDefaultDescription
config.prometheusUrl"http://prometheus:9090"Prometheus URL for Lumina metrics
config.logLevel"info"Log level (debug, info, warn, error)
config.metricsBindAddress":8080"Metrics endpoint bind address
config.healthProbeBindAddress":8081"Health probe bind address
config.aws.accountId"123456789012"AWS account ID (required, change this)
config.aws.region"us-west-2"AWS region (required)
config.overlays.utilizationThreshold95.0SP utilization threshold for overlay deletion
config.overlays.weights.reservedInstance30RI overlay weight
config.overlays.weights.ec2InstanceSavingsPlan20EC2 Instance SP overlay weight
config.overlays.weights.computeSavingsPlan10Compute SP overlay weight
config.overlays.naming.reservedInstancePrefix"cost-aware-ri"RI overlay name prefix
config.overlays.naming.ec2InstanceSavingsPlanPrefix"cost-aware-ec2-sp"EC2 Instance SP overlay name prefix
config.overlays.naming.computeSavingsPlanPrefix"cost-aware-compute-sp"Compute SP overlay name prefix

Controller Manager

ValueDefaultDescription
controllerManager.leaderElection.enabledtrueEnable leader election for HA
controllerManager.extraArgs[]Extra CLI arguments for the controller

Metrics Service

ValueDefaultDescription
metricsService.typeClusterIPService type
metricsService.port8080Service port
metricsService.annotations{}Service annotations

Resources

ValueDefaultDescription
resources.limits.cpu"1"CPU limit
resources.limits.memory512MiMemory limit
resources.requests.cpu200mCPU request
resources.requests.memory128MiMemory request

Health Probes

ValueDefaultDescription
livenessProbe.httpGet.path/healthzLiveness probe path
livenessProbe.httpGet.port8081Liveness probe port
livenessProbe.initialDelaySeconds15Initial delay
livenessProbe.periodSeconds20Check interval
livenessProbe.timeoutSeconds1Timeout
livenessProbe.failureThreshold3Failures before restart
readinessProbe.httpGet.path/readyzReadiness probe path
readinessProbe.httpGet.port8081Readiness probe port
readinessProbe.initialDelaySeconds5Initial delay
readinessProbe.periodSeconds10Check interval
readinessProbe.timeoutSeconds1Timeout
readinessProbe.failureThreshold3Failures before unready

Volumes

ValueDefaultDescription
volumes[]Additional volumes for the deployment
volumeMounts[]Additional volume mounts

Scheduling

ValueDefaultDescription
nodeSelector{}Node selector for pod assignment
tolerations[]Tolerations for pod assignment
affinity{}Affinity rules for pod assignment

RBAC

ValueDefaultDescription
rbac.createtrueCreate ClusterRole and ClusterRoleBinding

ServiceMonitor

For Prometheus Operator integration:

ValueDefaultDescription
serviceMonitor.enabledtrueCreate a ServiceMonitor resource
serviceMonitor.interval30sScrape interval
serviceMonitor.scrapeTimeout10sScrape timeout
serviceMonitor.labels{}Additional labels
serviceMonitor.annotations{}Additional annotations
serviceMonitor.relabelings[]Relabel configurations
serviceMonitor.metricRelabelings[]Metric relabel configurations

Lumina Subchart

Veneer can optionally deploy Lumina as a subchart:

ValueDefaultDescription
lumina.enabledfalseEnable Lumina as a subchart

When enabled, all Lumina chart values can be passed under the lumina key. See Lumina documentation for available values.

Example: Production Values

replicaCount: 2

config:
  prometheusUrl: "http://lumina-prometheus.lumina-system.svc:9090"
  logLevel: "info"
  aws:
    accountId: "123456789012"
    region: "us-west-2"
  overlays:
    utilizationThreshold: 95.0

resources:
  limits:
    cpu: "1"
    memory: 512Mi
  requests:
    cpu: 200m
    memory: 128Mi

serviceMonitor:
  enabled: true
  interval: 30s

serviceAccount:
  annotations:
    eks.amazonaws.com/role-arn: "arn:aws:iam::123456789012:role/veneer-controller"

Example: Development Values

replicaCount: 1

config:
  prometheusUrl: "http://prometheus.prometheus.svc:9090"
  logLevel: "debug"
  aws:
    accountId: "000000000000"
    region: "us-west-2"
  overlays:
    disabled: true  # Dry-run mode

controllerManager:
  leaderElection:
    enabled: false  # Single replica, no need for leader election

resources:
  limits:
    cpu: 500m
    memory: 256Mi
  requests:
    cpu: 100m
    memory: 64Mi