Research: Sveltos for multi-cluster manifest delivery (firewalled cluster) #31
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lab/iac#31
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sveltos research — multi-cluster manifest delivery for the firewalled cluster
Research ticket. Captures the exploration of Sveltos (https://projectsveltos.io) as the delivery mechanism for tofu-rendered k8s manifests to the fleet, and the licensing finding that pulls mode off the table.
Context
The iac
k8s/root currently uses thehashicorp/kubernetesprovider, which applies against a live apiserver — and that root is unwired to any cluster today (T10, #25). We explored two ways to reach clusters without per-cluster tofu runners:hashicorp/kuberneteshas no render backend (verified against the 2.38 schema — every resource applies live). Butyamlencode()+local_file, ortemplatefile(), renders valid multi-doc YAML with zero cluster connectivity (empirically verified). So tofu can produce manifest bundles cluster-agnostically.Finding: pull mode is license-gated beyond 2 clusters
The pull-mode registration doc carries a hard constraint:
We have five clusters (
localhost,mini,mx2,portable,remote) plus an incoming firewalled cluster — well past two. Pull mode is out of scope. Any firewalled-cluster solution must therefore solve the firewall problem directly (Sveltos push mode cannot reach a cluster it cannot connect to), i.e. the T13 reverse-tunnel work (#28) is a prerequisite regardless.What still holds for Sveltos
ClusterProfileselecting clusters by label,policyRefsreading rendered manifests from ConfigMaps/Secrets/OCI in the management cluster. Free, no per-cluster inbound needed for reachable clusters.k8s/root renders per-app manifest bundles (no cluster), the tofu runner writes them into a ConfigMap on mini, aClusterProfiledistributes them. No kubeconfig distribution, no per-cluster tofu runner.Open questions to research
oci://policyRef,deploymentType: Remote) — would that let the tofu runner push manifests to a registry instead of a ConfigMap?ClusterProfilevsProfile) mapped to the catalog capability groups (ADR-0006/0007).Related
k8s/root is not wiredFlux integration design (from plans/sveltos-flux-integration.md)
The Sveltos×Flux integration (https://projectsveltos.io/main/use_cases/use_case_gitops/) lets a
ClusterProfileon mini reference the existingflux-systemGitRepository (the flux-clusters repo) viakustomizationRefswith apath, and fans the rendered kustomization out to every cluster matching itsclusterSelector. Thegeneric-templates/dirs stay the single source of truth; the per-cluster pointer files (mini/portable/remote vault-secrets-operator.yaml, the 4 ESO HelmRelease sets, the 4 standard-cluster Kustomizations) are deleted and replaced by ONE ClusterProfile each.Concrete de-dup delivered by the registry labels:
Ordering gate: the
ClusterProfileCRD must be installed on mini before the profiles are applied (Flux root build fails on unknown CRDs), so the profiles are staged in flux-clusterssveltos/and wired in after Sveltos install.Net: new fleet member = add
sveltoslabels toapps/clusters.yaml+ register the cluster with Sveltos. No new manifests, no per-cluster pointers.apps/clusters.yamlnow carriessveltos.io/fleet: lab+sveltos.io/vault-secrets-operator: enabledper cluster (mini/portable/remote).Moved to lab/clusters#1529 — this ticket is being implemented in the clusters repo.
Moved to lab/clusters#1529.