Guides

Installing into a new cluster

The full install reference — sizing modes, ingress, autoscaling, and monitoring.

If you just want telark running, the Quickstart is shorter. This page is the reference: what the one command actually installs, and every flag worth knowing before you run it in production.

The command

helm install telark oci://ghcr.io/telark/charts/telark -n telark --create-namespace

One release installs the services, the custom resource definitions, the bundled policy engine, the coordination and messaging layers, and the dashboard. The CRDs are a bundled subchart — there is no separate CRD step and no bootstrap chart to run first. They carry helm.sh/resource-policy: keep, so they survive helm uninstall.

Managing CRDs out of band? --set crds.enabled=false.

Everything is configured with --set key=value on the same command line. Helm does not remember those flags across upgrades — re-pass them on every helm upgrade.

Sizing modes

app.mode sizes every telark service from a single flag: replicas, resource requests, client rate limits, and PodDisruptionBudgets.

ModeReplicasWhat it changes
minimal1Dev, demos, evaluation. No disruption budgets. Smallest resource requests.
standard (default)2Small-to-mid production. Disruption budgets on.
performance3Large clusters. Autoscaling on automatically (min 3, max 5). Requires a ReadWriteMany storage class for the exporter.
helm install telark oci://ghcr.io/telark/charts/telark -n telark --create-namespace \
  --set app.mode=performance \
  --set app.persistence.storageClass=<rwx-class>

app.mode sizes telark's own services only. Helm resolves a subchart's values before the mode is known, so the bundled dependencies — the policy engine, the coordination layer, the event stream, metrics — ship fixed production-grade defaults owned by the chart, identical in every mode. There is nothing to tune there.

App flags

FlagDefaultDescription
app.modestandardSizing mode (above).
app.nametelarkIdentity prefix for every resource name and API group.
app.namespacetelarkInstall namespace.
app.image.registrytelarkRegistry / org hosting the service images.
app.image.pullPolicyAlwaysImage pull policy.
app.image.pullSecrets[]Pull secrets, if you mirror the images privately.
app.persistence.size10GiExporter snapshot PVC size.
app.persistence.storageClass"""" uses the cluster default. performance needs a ReadWriteMany class.
app.persistence.accessModeReadWriteOnceExporter PVC access mode.
app.crdGuard.enabledfalseAdmission guard: only the owning service accounts may write telark custom resources.
app.crdGuard.enforcefalseWith the guard on, false audits and true rejects.
app.auth.bootstrap.admins[0]contact@telark.ioEmails granted Admin on first login. Indexed: [0], [1], …
app.auth.passkey.selfRegistration"true""false" blocks new passkey registration; you then need a bootstrap admin.

Ingress (optional, off by default)

Port-forwarding is enough to evaluate telark. For a real hostname and TLS, turn the Ingress on — you need an ingress controller already in the cluster.

helm install telark oci://ghcr.io/telark/charts/telark -n telark --create-namespace \
  --set ingress.enabled=true \
  --set ingress.className=nginx \
  --set ingress.host=telark.example.com
KeyDefaultDescription
ingress.enabledfalseCreate an Ingress for the dashboard.
ingress.className""IngressClass, e.g. nginx.
ingress.host""Hostname. "" matches any host.
ingress.serviceuiWhich services.<key> to route to.
ingress.path / ingress.pathType/ / PrefixRoute path and match type.
ingress.tls[]TLS blocks, e.g. [{secretName: telark-tls, hosts: [telark.example.com]}].
ingress.annotations{}Controller annotations — cert-manager issuers and so on.

Autoscaling

The stateless services — auth, discovery, enrichment, notifier, ui — can run behind a HorizontalPodAutoscaler (autoscaling/v2, CPU-based). The exporter never autoscales: it holds a ReadWriteOnce volume.

performance mode turns autoscaling on automatically (min 3, max 5). In any mode you can enable or tune it per service:

helm install telark oci://ghcr.io/telark/charts/telark -n telark --create-namespace \
  --set services.discovery.autoscaling.enabled=true \
  --set services.discovery.autoscaling.minReplicas=2 \
  --set services.discovery.autoscaling.maxReplicas=8 \
  --set services.discovery.autoscaling.targetCPUUtilizationPercentage=70
KeyDefaultDescription
services.<svc>.autoscaling.enabledfalseTurn the HPA on for that service (on in performance).
services.<svc>.autoscaling.minReplicas1Replica floor.
services.<svc>.autoscaling.maxReplicas3Replica ceiling.
services.<svc>.autoscaling.targetCPUUtilizationPercentage80Scale-up CPU target.
services.<svc>.autoscaling.targetMemoryUtilizationPercentage(unset)Optional memory target.

Set the same keys under app.serviceDefaults.autoscaling to change the default for every service at once. When a service autoscales, Helm stops managing its replica count so the HPA and Helm do not fight over it.

Monitoring (opt-in)

telark can emit a ServiceMonitor that scrapes every service's /metrics. It is off by default because it needs the Prometheus Operator CRDs already in the cluster.

helm install telark oci://ghcr.io/telark/charts/telark -n telark --create-namespace \
  --set monitoring.serviceMonitor.enabled=true \
  --set monitoring.serviceMonitor.labels.release=<prometheus-release>

The label is the part people miss: Prometheus only picks up a ServiceMonitor whose labels match its serviceMonitorSelector — usually release: <your-release>. Omit it and the monitor is silently ignored.

KeyDefaultDescription
monitoring.serviceMonitor.enabledfalseCreate the ServiceMonitor.
monitoring.serviceMonitor.labels{}Labels matching Prometheus's serviceMonitorSelector.
monitoring.serviceMonitor.path/metricsScrape path.
monitoring.serviceMonitor.interval30sScrape interval.

Upgrading

helm upgrade telark oci://ghcr.io/telark/charts/telark -n telark \
  --set app.mode=<mode>

Re-pass every --set and -f flag you used at install. See Operations → Upgrading.

Every value

The complete field list — every telark value and every pinned dependency value — is the chart's auto-generated charts/telark/VALUES.md in the repository.