- HCL 100%
| main.tf | ||
| README.md | ||
| display_name | description | icon | maintainer_github | tags | |||||
|---|---|---|---|---|---|---|---|---|---|
| Sindri (Kubernetes Deployment) | Coder workspaces backed by the Sindri image — headless or full XFCE/noVNC desktop, selectable per workspace. | ../../../site/static/icon/k8s.png | GuillaumeHemmen |
|
Sindri Coder Template (Kubernetes Deployment)
Provisions a Kubernetes Deployment + PVC as a Coder workspace, using the Sindri image family. A single template covers both variants:
- Headless (
git.van-hemmen.com/actions/sindri:coder-<tag>) — lightweightcoderuser environment, code-server, JetBrains Gateway. - Desktop (
git.van-hemmen.com/actions/sindri:coder-xfce-vnc-<tag>) — same base plus an XFCE desktop served over noVNC.
Each user chooses which variant their workspace runs via a single checkbox at workspace creation
time. See the full image-variant feature list in the project README.md.
For template admins
Variables
| Variable | Required | Default | Description |
|---|---|---|---|
namespace |
yes | — | Kubernetes namespace to create workspaces in. Must already exist. |
use_kubeconfig |
no | false |
true if the Coder host is outside the workspace cluster and uses ~/.kube/config. false if Coder itself runs as a pod in the same cluster and uses its ServiceAccount. |
image_tag |
no | "latest" |
Sindri image tag shared by both variants. Pin to a specific build SHA or Tag (e.g. ecfb1a7adaf7188e97a4d8195d42720ae0b371f7) for reproducible workspaces — SHAs come from the Forgejo Actions builds and the registry tag list. |
How the image is selected
The user-facing "Use with desktop" checkbox flips the image between the two variants while
keeping the same image_tag:
git.van-hemmen.com/actions/sindri:coder-<image_tag> # toggle OFF
git.van-hemmen.com/actions/sindri:coder-xfce-vnc-<image_tag> # toggle ON
Bumping every workspace to a newer build is a one-line image_tag change in the template.
Architecture
This template provisions:
- A Kubernetes Deployment (ephemeral pod).
- A Kubernetes PersistentVolumeClaim mounted at
/home/coder(persistent across workspace restarts).
Anything outside /home/coder is not persisted. The Sindri image is designed for this — the
per-user runtime (NVM/Node, bash prompt, gitignore, etc.) is provisioned at workspace start by
coder-init (and coder-init-desktop for the XFCE variant). See the main
README.md for details.
For workspace users
Choose your workspace flavor
When creating a workspace, you'll see:
- Use with desktop (XFCE + noVNC) — leave off for a lightweight headless workspace (code-server + JetBrains Gateway). Turn on for a full XFCE desktop accessible in your browser via noVNC, plus Firefox and JetBrains Toolbox preinstalled.
- CPU / Memory — pick the size you need. At least 4 cores and 8 GB RAM are recommended when running with the desktop enabled or when running JetBrains IDEs locally inside the workspace.
- Home disk size — size of the persistent
/home/codervolume.
You can flip "Use with desktop" on or off later by editing your workspace parameters and
restarting. The new image is pulled on the next start; your /home/coder PVC is preserved.
Apps exposed by the workspace
| App | Available in | Notes |
|---|---|---|
| code-server | Both variants | Browser-based VS Code at the workspace root. |
| Desktop (noVNC) | Desktop only | Hidden when "Use with desktop" is off. XFCE session via noVNC in the browser. |
| JetBrains Gateway | Both variants | Connects to the workspace over SSH — works fine on the headless variant too. |
More details
For the deeper image-variant feature lists, software-rendering notes, JetBrains Toolbox specifics,
and the PVC state matrix, see the project README.md.
Note
This template is a starting point. Fork and edit the Terraform if you need to extend it for your use case.