Skip to content

feat(lago): add worker-arm64 subchart for the Graviton pilot - #237

Merged
koikonom merged 1 commit into
lago-v2from
inf-375_worker_arm64_alias
Aug 26, 2026
Merged

feat(lago): add worker-arm64 subchart for the Graviton pilot#237
koikonom merged 1 commit into
lago-v2from
inf-375_worker_arm64_alias

Conversation

@koikonom

Copy link
Copy Markdown
Collaborator

Summary

  • Adds a worker-arm64 subchart (alias of lago-rails) for INF-375 — the dev-us-1 pilot of the Graviton worker migration. Gated by global.arm64.enabled (default false), so this is a no-op for every cluster until a values file opts in.
  • worker-arm64 merges worker's existing values through a YAML anchor (&workerDefaults / <<: *workerDefaults) instead of duplicating the block, since the two are identical except for release name, replica count, and scheduling. This differs from the other named workers in this chart (billing-worker, wallets-worker, etc.), which each have a genuinely different container command.
  • nodeSelector/tolerations match the arm64 Karpenter nodepool taint and label added in lago-infrastructure PR #1595 (arch: arm64, NoSchedule).
  • Chart.lock regenerated via helm dependency update. Chart versions are intentionally not bumped — release.sh's bump_versions step does that automatically when the release is dispatched.

Known limitation

helm-docs doesn't render the YAML-anchor merge correctly — it emits worker-arm64.<<.* rows carrying worker's stale defaults. I left README.md unregenerated rather than commit misleading docs; happy to hand-write a clean worker-arm64 doc block if that's wanted before merge.

Test plan

  • helm unittest charts/lago — 7 suites / 54 tests pass, including the new tests/worker_arm64_test.yaml.
  • helm template with global.arm64.enabled=trueworker-arm64 renders with the same command/env as worker, plus replicas: 1, nodeSelector: {arch: arm64}, and the matching toleration.
  • helm template with the flag unset (default) — zero worker-arm64 resources render.
  • After merge + a workflow_dispatch release: wire global.arm64.enabled: true and a worker-arm64 override into lago-deploy's dev-us-1 main preview values, confirm the pod schedules onto an arm64 node and reaches Ready.

INF-375 needs a Sidekiq worker running on arm64 nodes, side by side
with the existing amd64 worker, for an hours-scale comparison before
scaling up. A single Deployment can't split its replicas across two
node architectures, so this adds a second one.

worker-arm64 is a new lago-rails alias gated by global.arm64.enabled
(default false), so bumping this chart's version is a no-op on any
cluster without an arm64 nodepool. Its values merge worker's defaults
through a YAML anchor and override only what differs: release name,
replicaCount: 1, and the nodeSelector/toleration that pin it to the
arm64 Karpenter nodepool added in lago-infrastructure PR #1595.

Chart.lock was regenerated via `helm dependency update`. Chart
versions are not bumped here — release.sh's workflow_dispatch step
bumps every Chart.yaml automatically when the release is cut.
@koikonom
koikonom merged commit 95a7441 into lago-v2 Aug 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants