Sveltos: install on mini + bootstrap cluster registration (static SA) #34

Closed
opened 2026-08-12 16:49:43 +00:00 by ginjiruu · 2 comments
Owner

Sveltos: install on mini + bootstrap cluster registration (static SA)

Sveltos is the fleet-management layer for tofu-rendered infrastructure
(research #31). To start using it we must install it on mini and register the
fleet clusters. This ticket covers the one-time bootstrap; the OIDC migration
is a separate ticket (#36).

Install Sveltos on mini (management cluster)

  • Deploy Sveltos on mini via the flux-clusters repo (HelmRelease + CRDs) — the
    ClusterProfiles are already staged inert in flux-clusters/sveltos/ (PR
    #1526) and the CRDs must land before those profiles are wired in (Flux
    root build fails on unknown CRDs — the ordering gate documented there).
  • Sveltos auto-registers the management cluster as mgmt/mgmt — add the
    sveltos.io/... labels per the iac cluster registry so mini itself matches
    the fleet ClusterProfiles.

Bootstrap fleet cluster registration (static SA, one-time manual)

Mirroring argocd cluster add (Argo CD's bootstrap SA), register each fleet
cluster with a static cluster-admin SA first:

  1. sveltosctl generate kubeconfig --create against the managed cluster
    (creates a cluster-admin SA + kubeconfig).
  2. sveltosctl register cluster --namespace=<ns> --cluster=<name> --kubeconfig=<file> --labels=<labels> against the Sveltos management
    cluster (mini), with labels from the iac cluster registry
    (apps/clusters.yaml, clusters.<name>.sveltos).

Programmatic equivalent (for git/automation):

  • Secret <cluster>-sveltos-kubeconfig (data.kubeconfig) + SveltosCluster
    CR (label sveltos-agent: present) in the management cluster.

Clusters: mini (via mgmt registration), portable, remote. mx2/localhost and
the incoming firewalled cluster
: registered when they first host catalog
apps; the firewalled cluster's reachability is T13 (#28).

After bootstrap

  • Wire ./sveltos into mini's build → the staged ClusterProfiles go live →
    delete the now-redundant per-cluster pointer files
    (clusters/{mini,portable,remote}/vault-secrets-operator.yaml, the ESO
    HelmRelease sets, standard-cluster Kustomizations) — per
    plans/sveltos-flux-integration.md.
  • sveltosctl show addons should list the fleet and the deployed addons.

Deliverables

  • Sveltos installed on mini, mgmt cluster labelled per registry
  • portable + remote registered (SveltosCluster Ready) with registry labels
  • ClusterProfiles live; per-cluster pointers removed
  • sveltosctl show addons green across the fleet

Depends on / linked

  • #31 research (pull-mode licensing → push mode + T13 for firewalled)
  • flux-clusters PR #1526 (staged ClusterProfiles)
  • T13 #28 (connectivity; only required for the firewalled cluster)
  • #36 (migrate Sveltos auth to Kanidm SA + OIDC — the follow-on)
## Sveltos: install on mini + bootstrap cluster registration (static SA) Sveltos is the fleet-management layer for tofu-rendered infrastructure (research #31). To start using it we must install it on mini and register the fleet clusters. This ticket covers the one-time bootstrap; the OIDC migration is a separate ticket (#36). ## Install Sveltos on mini (management cluster) - Deploy Sveltos on mini via the flux-clusters repo (HelmRelease + CRDs) — the ClusterProfiles are already staged inert in `flux-clusters/sveltos/` (PR #1526) and the CRDs must land **before** those profiles are wired in (Flux root build fails on unknown CRDs — the ordering gate documented there). - Sveltos auto-registers the management cluster as `mgmt`/`mgmt` — add the `sveltos.io/...` labels per the iac cluster registry so mini itself matches the fleet ClusterProfiles. ## Bootstrap fleet cluster registration (static SA, one-time manual) Mirroring `argocd cluster add` (Argo CD's bootstrap SA), register each fleet cluster with a **static cluster-admin SA** first: 1. `sveltosctl generate kubeconfig --create` against the managed cluster (creates a cluster-admin SA + kubeconfig). 2. `sveltosctl register cluster --namespace=<ns> --cluster=<name> --kubeconfig=<file> --labels=<labels>` against the Sveltos management cluster (mini), with labels from the iac cluster registry (`apps/clusters.yaml`, `clusters.<name>.sveltos`). Programmatic equivalent (for git/automation): - Secret `<cluster>-sveltos-kubeconfig` (data.kubeconfig) + `SveltosCluster` CR (label `sveltos-agent: present`) in the management cluster. Clusters: mini (via mgmt registration), portable, remote. **mx2/localhost and the incoming firewalled cluster**: registered when they first host catalog apps; the firewalled cluster's reachability is T13 (#28). ## After bootstrap - Wire `./sveltos` into mini's build → the staged ClusterProfiles go live → delete the now-redundant per-cluster pointer files (`clusters/{mini,portable,remote}/vault-secrets-operator.yaml`, the ESO HelmRelease sets, standard-cluster Kustomizations) — per `plans/sveltos-flux-integration.md`. - `sveltosctl show addons` should list the fleet and the deployed addons. ## Deliverables - [ ] Sveltos installed on mini, mgmt cluster labelled per registry - [ ] portable + remote registered (SveltosCluster Ready) with registry labels - [ ] ClusterProfiles live; per-cluster pointers removed - [ ] `sveltosctl show addons` green across the fleet ## Depends on / linked - #31 research (pull-mode licensing → push mode + T13 for firewalled) - flux-clusters PR #1526 (staged ClusterProfiles) - T13 #28 (connectivity; only required for the firewalled cluster) - #36 (migrate Sveltos auth to Kanidm SA + OIDC — the follow-on)
Author
Owner

Moved to lab/clusters#1531 — this ticket is being implemented in the clusters repo.

Moved to lab/clusters#1531 — this ticket is being implemented in the clusters repo.
Author
Owner

Moved to lab/clusters#1531.

Moved to lab/clusters#1531.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lab/iac#34
No description provided.