Skip to main content

Helm Values

This page documents all configurable values for the kymaros/kymaros Helm chart. Pass overrides using --set key=value or a custom values.yaml file via -f my-values.yaml.

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

global

Settings that apply to all chart components.

KeyTypeDefaultDescription
global.image.registrystring"ghcr.io"Container image registry for all Kymaros components.
global.image.pullPolicystring"IfNotPresent"Image pull policy. Accepted values: Always, IfNotPresent, Never.
global.image.pullSecrets[]string[]List of imagePullSecret names to add to all pods.
global.nameOverridestring""Override the chart name used in resource naming.
global.fullnameOverridestring""Override the full resource name prefix.
global.labelsmap{}Additional labels added to all resources.
global.annotationsmap{}Additional annotations added to all resources.

controller

The reconciliation controller (kymaros-controller) that watches CRDs and drives the restore validation lifecycle.

KeyTypeDefaultDescription
controller.enabledbooltrueDeploy the controller component.
controller.image.repositorystring"kymorahq/kymaros-controller"Controller image repository.
controller.image.tagstring""Image tag. Defaults to the chart appVersion.
controller.replicaCountint1Number of controller replicas. The controller uses leader election; more than one replica provides HA.
controller.resources.requests.cpustring"100m"CPU request for the controller container.
controller.resources.requests.memorystring"128Mi"Memory request for the controller container.
controller.resources.limits.cpustring"500m"CPU limit for the controller container.
controller.resources.limits.memorystring"256Mi"Memory limit for the controller container.
controller.leaderElection.enabledbooltrueEnable leader election. Required when replicaCount > 1.
controller.leaderElection.leaseDurationstring"15s"Duration a leader lease is held before renewal.
controller.leaderElection.renewDeadlinestring"10s"Deadline for the leader to renew the lease.
controller.logLevelstring"info"Controller log verbosity. Accepted values: debug, info, warn, error.
controller.nodeSelectormap{}Node selector for the controller pod.
controller.tolerations[]object[]Tolerations for the controller pod.
controller.affinityobject{}Affinity rules for the controller pod.
controller.podAnnotationsmap{}Annotations added to the controller pod.
controller.securityContext.runAsNonRootbooltrueRun the controller container as a non-root user.
controller.securityContext.readOnlyRootFilesystembooltrueMount the root filesystem as read-only.

api

The REST API server (kymaros-api) that exposes the JSON API consumed by the dashboard and external tooling.

KeyTypeDefaultDescription
api.enabledbooltrueDeploy the API server component.
api.image.repositorystring"kymorahq/kymaros-api"API server image repository.
api.image.tagstring""Image tag. Defaults to the chart appVersion.
api.replicaCountint1Number of API server replicas.
api.portint8080Port the API server listens on.
api.resources.requests.cpustring"100m"CPU request.
api.resources.requests.memorystring"128Mi"Memory request.
api.resources.limits.cpustring"500m"CPU limit.
api.resources.limits.memorystring"256Mi"Memory limit.
api.service.typestring"ClusterIP"Kubernetes service type.
api.service.portint8080Service port.
api.nodeSelectormap{}Node selector for the API server pod.
api.tolerations[]object[]Tolerations for the API server pod.
api.affinityobject{}Affinity rules for the API server pod.
api.podAnnotationsmap{}Annotations added to the API server pod.

dashboard

The built-in web dashboard (kymaros-frontend).

KeyTypeDefaultDescription
dashboard.enabledbooltrueDeploy the dashboard component.
dashboard.image.repositorystring"kymorahq/kymaros-frontend"Dashboard image repository.
dashboard.image.tagstring""Image tag. Defaults to the chart appVersion.
dashboard.replicaCountint1Number of dashboard replicas.
dashboard.portint3000Port the dashboard container listens on.
dashboard.resources.requests.cpustring"50m"CPU request.
dashboard.resources.requests.memorystring"64Mi"Memory request.
dashboard.resources.limits.cpustring"200m"CPU limit.
dashboard.resources.limits.memorystring"128Mi"Memory limit.
dashboard.service.typestring"ClusterIP"Kubernetes service type.
dashboard.service.portint80Service port.
dashboard.nodeSelectormap{}Node selector for the dashboard pod.
dashboard.tolerations[]object[]Tolerations for the dashboard pod.
dashboard.affinityobject{}Affinity rules for the dashboard pod.
dashboard.podAnnotationsmap{}Annotations added to the dashboard pod.

ingress

Ingress resource for external access to the dashboard and API.

KeyTypeDefaultDescription
ingress.enabledboolfalseCreate an Ingress resource.
ingress.classNamestring""IngressClass name (e.g., "nginx", "traefik").
ingress.annotationsmap{}Annotations added to the Ingress resource (e.g., cert-manager annotations).
ingress.hosts[]object[]List of host rules. Each entry: host (string) and paths (array of path and pathType).
ingress.tls[]object[]TLS configuration. Each entry: secretName and hosts list.

Example override:

ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: kymaros.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: kymaros-tls
hosts:
- kymaros.example.com

serviceAccount

KeyTypeDefaultDescription
serviceAccount.createbooltrueCreate a dedicated ServiceAccount for Kymaros components.
serviceAccount.namestring""Name override. When empty and create is true, the name is derived from the chart fullname.
serviceAccount.annotationsmap{}Annotations added to the ServiceAccount (e.g., for IRSA on EKS).

rbac

KeyTypeDefaultDescription
rbac.createbooltrueCreate ClusterRole and ClusterRoleBinding resources.

The controller requires cluster-scoped permissions to watch and create namespaces for sandboxes, apply network policies, and read backup provider resources. Disable only if managing RBAC externally.


sandbox

Default sandbox configuration applied when not overridden at the RestoreTest level.

KeyTypeDefaultDescription
sandbox.namespacePrefixstring"rp-test"Default prefix for generated sandbox namespace names.
sandbox.ttlstring"30m"Default sandbox TTL as a Go duration string.
sandbox.networkIsolationstring"strict"Default network isolation mode: strict or group.
sandbox.defaultResourceQuota.cpustring""Default CPU quota for sandbox namespaces. Empty = no quota.
sandbox.defaultResourceQuota.memorystring""Default memory quota for sandbox namespaces.
sandbox.defaultResourceQuota.storagestring""Default storage quota for sandbox namespaces.

adapters

Configuration for backup provider integrations.

KeyTypeDefaultDescription
adapters.velero.namespacestring"velero"Namespace where Velero is installed.
adapters.velero.timeoutstring"10m"Maximum time to wait for a Velero restore operation to complete.
adapters.kasten.namespacestring"kasten-io"Namespace where Kasten K10 is installed.
adapters.kasten.timeoutstring"20m"Maximum time to wait for a Kasten restore operation to complete.
adapters.trilio.namespacestring"trilio"Namespace where TrilioVault is installed.
adapters.trilio.timeoutstring"15m"Maximum time to wait for a TrilioVault restore operation to complete.

notifications

Global notification defaults. Individual RestoreTest resources override these per-test.

KeyTypeDefaultDescription
notifications.slack.webhookSecretRefstring""Name of a Secret containing a url key with the Slack webhook URL.
notifications.pagerduty.tokenSecretRefstring""Name of a Secret containing a token key with the PagerDuty integration key.
notifications.webhook.secretRefstring""Name of a Secret containing a url key for a generic outbound webhook.

metrics

Prometheus metrics configuration.

KeyTypeDefaultDescription
metrics.enabledbooltrueExpose the /metrics endpoint on the API server.
metrics.portint8080Port on which /metrics is served (same port as the API by default).
metrics.serviceMonitor.enabledboolfalseCreate a Prometheus Operator ServiceMonitor resource.
metrics.serviceMonitor.namespacestring""Namespace for the ServiceMonitor. Defaults to the release namespace.
metrics.serviceMonitor.intervalstring"30s"Scrape interval.
metrics.serviceMonitor.labelsmap{}Additional labels on the ServiceMonitor (e.g., release: prometheus).

sla

Global SLA defaults. Overridden per-test by spec.sla.

KeyTypeDefaultDescription
sla.defaultMaxRTOstring""Default maxRTO applied when a RestoreTest has an sla block but omits maxRTO.
sla.alertOnExceedboolfalseGlobal default for sla.alertOnExceed.

license

License configuration for Pro and Enterprise tiers.

KeyTypeDefaultDescription
license.secretRefstring""Name of a Secret in the release namespace that contains a key field with the Kymaros license key. When empty, the operator runs in Community tier.

Example Secret:

apiVersion: v1
kind: Secret
metadata:
name: kymaros-license
namespace: kymaros-system
type: Opaque
stringData:
key: "your-license-key-here"
# values.yaml
license:
secretRef: kymaros-license