Harthelm Docs

Workspaces

Chart values: plans, baseImages, defaultBaseImage, workspaces, wake, containers.

Generated from charts/harthelm/values.yaml at v1.5.0

plans

Plans: limits are the plan, requests are limits times workspaces.sizing. memoryMiB and storageGiB take a number (MiB and GiB) or a size string like the console and hart do: 2Gi, 2GiB, 2048Mi, 2048MiB. storageGiB must be whole GiB; decimal units (2GB) are refused.

ValueTypeDefaultDescription
planslist of objectbelow

baseImages

Workspace base images: [{id, name, description, image, default}], image a full reference (digest advised). Empty: the chart's own harthelm-ide image is the only one (the registry follows global.imageRegistry).

ValueTypeDefaultDescription
baseImageslist of object[]

defaultBaseImage

Used when baseImages is empty.

ValueTypeDefaultDescription
defaultBaseImage.registrystring""
defaultBaseImage.repositorystring"harthelm/harthelm-ide"
defaultBaseImage.tagstring""defaults to the chart's appVersion
defaultBaseImage.digeststring""

workspaces

ValueTypeDefaultDescription
workspaces.sizingobjectRequests are limits times these factors (IDEs and landscape services; a managed service requests its whole plan and counts in full against the team quota).
workspaces.sizing.cpuRequestFactornumber0.2
workspaces.sizing.memoryRequestFactornumber0.5
workspaces.ide.extensionsGallerystring""an Open VSX mirror for air-gapped installs
workspaces.ide.reconnectionGraceSecondsinteger300
workspaces.ide.keyboardLayoutstring"autodetect"The editor's keyboard layout where the browser does not report one in the IDE iframe (Safari, Firefox): de, es, fr, ru or us. autodetect, or another id, leaves VS Code's own guess (U.S.).
workspaces.prepullobjectA small pod on every node workspaces may use (scheduling.workspaces) pulls the IDE (defaultBaseImage), service and agent images and keeps them there, so the first wake after an upgrade does not wait for a cold pull (1.2.1). Each node pulls right after the upgrade, or when it comes back on. 1m CPU and 8 MiB requested per node.
workspaces.prepull.enabledbooleantrue
workspaces.serviceImageobjectThe image of steps services that name no image of their own: harthelm-base or an image built FROM it. An empty repository runs them on the workspace's base image instead.
workspaces.serviceImage.registrystring""
workspaces.serviceImage.repositorystring"harthelm/harthelm-base"
workspaces.serviceImage.tagstring""defaults to the chart's appVersion
workspaces.serviceImage.digeststring""
workspaces.toolEnvobject{}Set in every workspace pod: mirrors and proxies for the tools, e.g. for air-gapped installs. Allowed: NIX_CONFIG, NPM_CONFIG_, PIP_, GOPROXY, GOSUMDB, GOFLAGS, GONOSUMDB, GOPRIVATE, MISE_* (not MISE_DATA_DIR), HTTP(S)_PROXY, NO_PROXY. A service's own env var of the same name wins. With a proxy set, core appends its in-cluster hosts (internal port, API, git proxy) and .svc to NO_PROXY.
workspaces.upgradePolicykeep, restart"keep"What an upgrade does to running workspaces. keep: they keep their pods (images, agent, tool settings) until they sleep or stop and get the new ones on the next start; what users change (plan, env, Sync) still applies at once. restart: every running workspace restarts with the new pod spec.
workspaces.idleTimeoutMinutesinteger60How long an on-demand IDE or service must be idle before core puts it to sleep (replicas 0, volume and settings stay; the next request wakes it). A workspace or service can set its own. 1 to 1440.

wake

Waking sleeping workspaces.

ValueTypeDefaultDescription
wake.maxPerMinuteinteger30The kill switch: at most this many wakes start per minute in the whole installation; 0 pauses waking (every request to a sleeping workspace answers 503 "paused"). Keeps a wake storm from overloading the cluster.
wake.capacityGuardbooleantrueCheck before a wake that the pods fit on a node and answer "no capacity" instead of leaving them Pending.

containers

Container services: core resolves their images to a digest at Plan and Sync, with the credentials of the team's registries (/teams/{team}/registries), and the pods run the image by digest. Core needs egress to the registries (networkPolicy.egress.registries).

ValueTypeDefaultDescription
containers.allowedRegistrieslist of string[]Image address prefixes (host[:port][/path], whole path segments) container services may use; empty: any.
containers.insecureRegistrieslist of string[]Registries (host[:port]) core reaches over plain HTTP. The nodes' container runtime must allow them too; the chart does not configure it.
containers.resolveTimeoutSecondsinteger20Upper bound of one image resolution, 1 to 300.
containers.platformstring""The platform an image index resolves to, linux/<arch>[/<variant>]; empty: the platform core runs on, which suits clusters whose nodes share one architecture.

Long defaults

plans

- id: ide-s
  kind: workspace
  name: IDE S
  cpuMillis: 500
  memoryMiB: 1536
  storageGiB: 10
- id: ide-m
  kind: workspace
  name: IDE M
  cpuMillis: 1000
  memoryMiB: 2048
  storageGiB: 20
- id: nano
  kind: service
  name: Nano
  cpuMillis: 100
  memoryMiB: 128
  maxReplicas: 3
- id: small
  kind: service
  name: Small
  cpuMillis: 250
  memoryMiB: 512
  maxReplicas: 3
- id: medium
  kind: service
  name: Medium
  cpuMillis: 1000
  memoryMiB: 1024
  maxReplicas: 3

On this page