Skip to content

feat(omni): ARGO_MODE toggle — in-cluster vs central hub Argo - #11

Closed
syscod3 wants to merge 13 commits into
mainfrom
feat/selectable-argo-topology
Closed

syscod3 wants to merge 13 commits into
mainfrom
feat/selectable-argo-topology

Conversation

@syscod3

@syscod3 syscod3 commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

What

omni/scripts/generate-manifests.sh gains an ARGO_MODE variable:

mode inline manifests emitted who runs Argo
in-cluster (default) cilium + argocd + root App-of-Apps this cluster, bootstrapped by Talos
hub cilium only a central hub Argo on the Omni VM k8s, managing this cluster as a spoke
mise run oci:generate-manifests                    # in-cluster (unchanged default)
ARGO_MODE=hub mise run oci:generate-manifests       # hub — no in-cluster Argo

Cilium is always in-cluster — it is the CNI and cannot be remote.

Why

The Argo topology is a decision, not a fixed part of the design. For this free-tier lab the target is a single central hub on the Omni VM's k8s (spokes run zero Argo, giving the scarce 2 OCPU / 12 GB back to workloads). This makes that switch a first-class IaC toggle rather than a manual edit of the inline manifests.

Scope / safety

Script-only. The committed omni/patches/inline-manifests.yaml is unchanged — it regenerates only when someone runs the script with a chosen mode. Invalid modes fail fast. bash -n clean.

Not in this PR (the hub side)

hub mode removes in-cluster Argo but does not yet deploy the hub. The companion work: a k8s/argocd/ base on omni-on-unraid, and spoke registration (Argo cluster secret → each cluster's API over Tailscale). Tracked separately.

syscod3 and others added 13 commits March 16, 2026 14:04
feat: talos-image.yaml ledger, machine class installImage, CI pipeline
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* chore: Talos upgrade to v1.13.5 (k8s v1.36.2)

* chore: Talos upgrade to v1.13.5 (k8s v1.36.2)

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…10)

The talos-images upgrade workflow rewrites omni/talos-image.yaml and
omni/machine-classes/*.yaml, but never omni/cluster-templates/talos.yaml.
The template has therefore drifted: it pinned Talos v1.12.5 while the
machine classes install v1.12.6, and it is the file Omni actually applies.

Move it to v1.13.5 to match PR #9. kubernetes.version is left at v1.32.3 on
purpose and annotated: it is human-owned, and Talos 1.13.x still supports it.
generate-manifests.sh now takes ARGO_MODE=in-cluster|hub. Default
in-cluster keeps today's behaviour (Argo + root App-of-Apps bootstrapped
inside the cluster). ARGO_MODE=hub emits only the Cilium inline manifest
and omits the two argocd blocks, so the cluster boots with no in-cluster
Argo and is managed by a central hub Argo (on the Omni VM k8s) as a spoke.

Script-only: the committed inline-manifests.yaml is unchanged until
someone regenerates with a chosen mode.
…tion

In ARGO_MODE=hub, emit the argocd-manager ServiceAccount, cluster-admin
binding, and a named (non-expiring) token Secret as inline manifests, so a
hub-mode spoke is registration-ready at first boot. The one manual step
(read token → sops → commit) is documented in the hub registration runbook;
the inline comment points there rather than restating it.
@syscod3

syscod3 commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by the generate-manifests.sh multi-cluster rewrite (yq-based inject(), oci-lab/unraid-lab routing). ARGO_MODE toggle needs to be re-implemented against the new script rather than merged — re-scoping as new work. Branch left in place for reference.

@syscod3 syscod3 closed this Aug 9, 2026
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.

1 participant