Skip to main content

Helm Chart

The operator is distributed as a Helm chart published to GHCR.

helm install kube-escalate oci://ghcr.io/layer87-labs/charts/kube-escalate \
--namespace kube-escalate \
--create-namespace \
--version <version>

Values reference

Image

ValueDefaultDescription
image.repositoryghcr.io/layer87-labs/kube-escalateContainer image repository
image.tagChart appVersionOverride the image tag
image.pullPolicyIfNotPresentImage pull policy
imagePullSecrets[]Pull secrets for private registries

Deployment

ValueDefaultDescription
replicaCount1Number of operator replicas
strategy.typeRollingUpdateDeployment rollout strategy
strategy.rollingUpdate.maxUnavailable0Max unavailable during rollout
strategy.rollingUpdate.maxSurge1Max surge during rollout
terminationGracePeriodSeconds10Grace period for in-flight reconciles
leaderElection.enabledtrueEnable leader election (required when replicaCount > 1)

Security

ValueDefaultDescription
securityContext.runAsNonRoottrueRun as non-root
securityContext.runAsUser65532User ID (Chainguard nonroot)
securityContext.runAsGroup65532Group ID
securityContext.seccompProfile.typeRuntimeDefaultSeccomp profile
containerSecurityContext.allowPrivilegeEscalationfalseDeny privilege escalation
containerSecurityContext.readOnlyRootFilesystemtrueRead-only root filesystem
containerSecurityContext.capabilities.drop["ALL"]Drop all capabilities

Resources

ValueDefaultDescription
resources.requests.cpu10mCPU request
resources.requests.memory32MiMemory request
resources.limits.cpu100mCPU limit
resources.limits.memory128MiMemory limit

Probes

ValueDefaultDescription
livenessProbe.httpGet.path/healthzLiveness path
livenessProbe.initialDelaySeconds15Liveness initial delay
readinessProbe.httpGet.path/readyzReadiness path
readinessProbe.initialDelaySeconds5Readiness initial delay

Metrics

ValueDefaultDescription
metrics.enabledtrueExpose Prometheus metrics endpoint
metrics.port8080Metrics port
metrics.serviceMonitor.enabledfalseCreate a Prometheus Operator ServiceMonitor
metrics.serviceMonitor.interval30sScrape interval
metrics.serviceMonitor.labels{}Extra labels for label-based discovery

High availability

ValueDefaultDescription
podDisruptionBudget.enabledfalseEnable PDB (recommended with replicaCount > 1)
podDisruptionBudget.minAvailable1Minimum available replicas

Network policy

ValueDefaultDescription
networkPolicy.enabledfalseCreate a NetworkPolicy for the operator pods
networkPolicy.apiServerPort443API server port (pre-DNAT service port)
networkPolicy.apiServerCIDR0.0.0.0/0API server CIDR (leave open if CIDR unknown)
networkPolicy.additionalEgress[]Extra egress rules — see Cilium note

Scheduling

ValueDefaultDescription
nodeSelector{}Node selector for operator pods
tolerations[]Tolerations for operator pods
affinity{}Affinity rules for operator pods

Misc

ValueDefaultDescription
serviceAccount.createtrueCreate a dedicated ServiceAccount
serviceAccount.annotations{}Annotations (e.g. for IRSA / Workload Identity)
extraEnv[]Extra environment variables for the operator container
extraArgs[]Extra CLI arguments passed to the operator binary

Example: HA production deployment

# values-prod.yaml
replicaCount: 2

podDisruptionBudget:
enabled: true
minAvailable: 1

metrics:
serviceMonitor:
enabled: true
labels:
prometheus: kube-prometheus

affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: kube-escalate
topologyKey: kubernetes.io/hostname
helm upgrade --install kube-escalate \
oci://ghcr.io/layer87-labs/charts/kube-escalate \
--namespace kube-escalate \
--create-namespace \
--values values-prod.yaml