NatLabRockies / NatLabRockies/openstudio-server-helm
Create Nomad Pack equivalent of this Helm chart (new repository)
Nobody has claimed this yet.
- Dominant language
- Go Template
- Stars
- 12
- Forks
- 24
- PR merge metrics
- No merged PRs in 30d
Description
Summary
Create a new repository — openstudio-server-nomad-pack (or similar) — that is a Nomad Pack equivalent of this Helm chart, so OpenStudio Server can be deployed on HashiCorp Nomad clusters (with Consul for service discovery and, optionally, Vault for secrets) as an alternative to Kubernetes.
This is not a change to openstudio-server-helm itself — the ask is to scaffold and track a new, separate repo. This issue exists to capture scope, the source components that need translating, and the migration approach before that repo is created.
Why
- Some deployment targets (e.g. bare-metal / on-prem clusters, teams already standardized on the HashiCorp stack) don't run Kubernetes. Nomad + Consul is a lighter-weight alternative.
- There's no automatic Helm → Nomad Pack converter (different templating language: Go templates over YAML vs. Go templates over HCL), so this needs a deliberate, manual translation, chart-component by chart-component.
Background: Helm → Nomad concept mapping
| Kubernetes / Helm | Nomad equivalent |
|---|---|
| Helm chart | Nomad Pack |
values.yaml |
variables.hcl |
| Deployment/Pod | Job → Task Group |
| Container | Task (docker driver) |
| Service | service stanza (Consul-backed) |
| ConfigMap / Secret | template stanza (optionally sourced from Vault) |
| HPA / KEDA ScaledObject | Nomad autoscaling (Nomad Autoscaler + Consul/Prometheus APM) |
| PodDisruptionBudget | no direct equivalent — needs update/migrate stanza design |
| StorageClass / PVC | Nomad host_volume / CSI plugin volumes |
| ServiceAccount / RBAC | Nomad ACL policies |
| Helm hooks (pre-delete, etc.) | Nomad lifecycle stanza / periodic jobs |
Reference material:
- Nomad Pack and the Nomad Pack Community Registry
- HashiCorp's "Turn a Kubernetes Manifest into a Nomad Job Specification" tutorial
- HashiCorp's Kubernetes → Nomad cheat sheet
- Suggested flattening workflow:
helm template <release> openstudio-server --values values.yaml > k8s-flat.yaml, then hand-translate the flattened manifests into HCL job specs, then wrap the dynamic bits in a Nomad Pack (variables.hcl+ templates).
Components to translate (from openstudio-server/templates/)
Each of these Helm sub-templates needs a Nomad Pack equivalent (job/group/task, service stanza, or variable, as applicable):
-
web/— web-deploy, web-svc, web-hpa, web-runtime-overrides → Nomad job +servicestanza + Nomad Autoscaler policy -
web-background/— web-background-deploy, web-background-hpa -
worker/— worker-deploy, worker-hpa, worker-keda (queue-based autoscaling), worker-pdb (needs a disruption-budget-equivalent strategy) -
db/— db-deploy, db-svc, db-pvc → task group + CSI/host volume -
redis/— redis-deploy, redis-svc, redis-pvc -
rserve/— rserve-deploy, rserve-svc -
nfs/— nfs-pvc → Nomad volume stanza / CSI NFS plugin -
storageclass/→ Nomad volume/CSI plugin registration equivalent -
loadbalancer/→ Consul-integrated ingress (e.g. Consul-Terraform-Sync, or cloud LB provisioned outside Nomad) -
secrets/app-secrets.yaml→ Vault-backedtemplatestanza, or Nomad variables -
service-account/(workload SA, image-pull-secrets-validation, nfs-disconnect RBAC) → Nomad ACL policies / Vault roles -
priority-class/(priority_high, priority_low) → Nomad jobpriorityfield -
hooks/(image-prepull-daemonset, pre-delete-hook, registry-hosts-patch-daemonset) → Nomadsystemjobs /lifecyclehooks -
autoscaler/cluster-autoscaler-autodiscover.yaml→ Nomad Autoscaler cluster scaling policy (or cloud-native node autoscaling) -
_scheduling.tpl(node affinity/toleration helpers) → Nomadaffinity/constraintstanzas -
tests/(test-redis-ping, test-web-healthcheck) → Nomadcheckstanzas / a smoke-test job
Proposed scope for the new repo
- New repository (e.g.
NatLabRockies/openstudio-server-nomad-pack), MIT/BSD license consistent with this repo. - Nomad Pack structure:
metadata.hcl,variables.hcl,templates/*.nomad.tpl,outputs.tpl, mirroring the values/templates split used here. - One job spec per component above (or grouped where the Kubernetes split doesn't map cleanly), parameterized the same way
values.yamlparameterizes this chart (cloud provider, resource sizing, replica/worker counts, autoscaling mode). - Consul service registration for
web,web-background,db,redis,rservein place of Kubernetes Services. - Documented Consul + (optional) Vault prerequisites, matching the "Prerequisites" section style of this repo's README.
- CI equivalent of
.github/workflows/chart-validation.yml—nomad-pack validate/nomad job planin CI. - A migration/parity doc noting explicitly unsupported or differently-behaving features (e.g. KEDA queue-based autoscaling, PodDisruptionBudget, image pre-pull DaemonSets) so operators know what changes when moving from K8s to Nomad.
Out of scope
- Actually decommissioning or replacing this Helm chart — Nomad Pack is an additional deployment option, not a replacement.
- Automated/generated conversion tooling — translation is manual per the HashiCorp guides linked above.
Acceptance criteria
- New repository created and linked from this issue.
- Nomad Pack in that repo deploys a working OpenStudio Server stack (web, worker, db, redis, rserve) against a real Nomad + Consul cluster.
- README in the new repo documents prerequisites, variable reference (parity with
values.schema.jsonwhere applicable), and known K8s→Nomad behavioral differences. - CI validates the pack (
nomad-pack validateor equivalent) on PRs.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading templates/ alongside values.yaml, values.schema.json, and .github/workflows/chart-validation.yml, then render the existing chart with the suggested helm template command. Translate the listed components into a new Nomad Pack repository and validate the pack in CI; done means the web, worker, db, redis, and rserve stack deploys on Nomad with documented prerequisites, variables, and known parity gaps.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, kubernetes, prometheus, terraform
- Domain
- ci-cd, cloud, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100