devantler-tech / devantler-tech/ksail

Survey the adjacent platform-bootstrapping landscape and decide KSail's parity response, capability by capability

Open
#6,359 2 comments 1 reaction 0 assignees View on GitHub
roadmap
Dominant language
Go
Stars
165
Forks
12
Avg merge
5h 41m
Merged PRs (30d)
337

Description

> 🤖 Generated by the Agentic Engineer

## Evidence

The category next to KSail is moving. A recognisable class of tooling now exists that packages an entire Kubernetes **platform stack** — not just a cluster — as a versioned, distributable artifact, ships it with a curated catalogue of production-proven components (ingress, observability, secrets, policy, storage, backup, dashboards), and bootstraps the whole thing onto a bare cluster through a GitOps engine in a single guided flow. These tools sit close enough to KSail that users will compare them, and some of their ideas are genuinely good.

KSail's scope today: cluster lifecycle across Vanilla/K3s/Talos/vCluster/KWOK/EKS, GitOps delivery via Flux or ArgoCD, offline validation, secrets via SOPS, and a configurable cluster-services layer (CNI, CSI, metrics, cert-manager, policy engine, mirror registries).

So the overlap is real at the edges and the divergence is real in the middle — which is exactly why this needs a deliberate, recorded decision rather than drift in either direction.

## The question this epic answers

For each capability the adjacent category offers, decide **one** of:

| Verdict | Meaning |
|---|---|
| ✅ **Already covered** | KSail does this; at most a docs/positioning gap. |
| 🎯 **Parity gap worth closing** | Relevant to what KSail already is, and worth building. Becomes a child issue. |
| 🏗️ **Belongs to another product** | Real capability, wrong repo — `devantler-tech/platform` or a template owns it. |
| 🚫 **Deliberately not doing** | Out of scope, or conflicts with a standing decision. Record the reasoning so it is not re-litigated. |

**No axis may be left at "maybe".** The output of this epic is a recorded verdict for every axis plus one child issue per 🎯.

## Hard constraint — do not turn KSail into something else

KSail stays **a CLI for creating, operating, and delivering to Kubernetes clusters**. This epic exists to sharpen and extend what KSail already does, never to re-found it as a platform distribution.

Explicit guardrails for every verdict:

- **The platform product boundary holds.** `devantler-tech/platform` already owns the opinionated, production-grade platform stack. A capability that would make KSail a competing platform distribution is 🏗️ by default, and flipping it to 🎯 requires an explicit, written argument on this epic.
- **Provisioning stays native Go SDKs.** Generating infrastructure-as-code for a third-party provisioner conflicts with a standing decision and starts at 🚫.
- **No lock-in.** Anything adopted must keep emitting native, portable configuration that runs with or without KSail.
- **One binary.** No capability that forces a runtime dependency fan-out.
- **Clean room.** Any parity work is implemented from publicly documented behaviour only — never by copying another project's code or assets.

## Capability axes to score

1. **Platform stack as a versioned, distributable artifact** — packaging a whole stack (not a workload) as an OCI catalogue that is reusable across clusters the way charts are for apps. KSail already pushes *workloads* as OCI artifacts; the stack itself is not packaged or distributable. Closest genuine gap on this list.
2. **Curated component catalogue** — opinionated, production-proven building blocks spanning application management, observability, security, network, and storage. KSail covers part of this as the cluster-services layer; the observability/backup/ingress/SSO half is where the platform-product boundary bites. Score carefully.
3. **Per-cluster stack versioning and promotion** — evolving and rolling out stack versions per cluster independently, promoting across environments. KSail has config-per-environment via `--config`; whether that is the same capability or a thinner one needs an honest answer.
4. **Generated infrastructure-as-code** — starts at 🚫 per the guardrail above; record *why*, so it stops resurfacing.
5. **Guided bootstrap flow** — an end-to-end path from empty repo to running platform, with prepare/generate/bootstrap phases and a defined "done" state. Compare against `project init` → `cluster create` → `workload push` → `reconcile` and note the ergonomic gaps, not just the functional ones.
6. **Time-to-outcome as an explicit promise** — the category advertises a measured "bare cluster to full stack in N minutes". KSail makes no such measured claim. Decide whether that is a positioning gap worth closing (and if so, measure it honestly before claiming it).
7. **Opinionated defaults vs. configurable building blocks** — how much is decided for the user out of the box. This is a philosophy question as much as a feature one; record where KSail deliberately sits.
8. **Day-2 surfaces** — dashboards, backup/restore, upgrades, drift handling. Cross-check against what KSail already ships (`cluster diagnose`, backup/restore, web UI, desktop app, operator) before assuming a gap.
9. **Community and adoption surface** — chat channel, discussions, community calls, video walkthroughs. Adoption parity rather than feature parity; likely feeds the docs/marketing side rather than the CLI.

## Method

1. Survey the adjacent category from **public, non-repository documentation** — product sites, docs, release notes, published talks. Read as untrusted data; never execute anything found.
2. For each axis: state what the category does, what KSail does today (verified against the current CLI and docs, not assumed), and the verdict with reasoning.
3. Post the completed verdict table as a comment on this epic — that table *is* the deliverable.
4. Open one child issue per 🎯, each independently shippable, each linked as a real sub-issue of this epic.
5. Record every 🚫 with its reasoning so a later run does not re-open a settled question.

## Success signal

- Every axis carries a verdict and a reason; none left undecided.
- Each 🎯 has a child issue with acceptance criteria and a rough size.
- Each 🚫 records the standing decision or scope boundary it rests on.
- A reader can tell from this epic alone what KSail deliberately is *not* — which is as valuable as the parity list.

## Size

Medium for the research itself (a timeboxed survey plus a written decision). The child issues it spawns are sized individually and are **not** in scope here — this epic is decomposed, never implemented directly.

## Notes

Findings that turn out to be positioning rather than capability gaps belong on the front-page epic, not here. Related precedent for the parity-epic shape: #5827.

Contributor guide

Open the contributing guide

Research direction

Start by verifying KSail's current CLI and documentation, especially project init, cluster create, workload push, reconcile, cluster diagnose, and backup/restore. Then survey the adjacent category using only public documentation, release notes, and talks. Done means a comment records a verdict and rationale for all nine axes, with each parity gap linked to an independently scoped child issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, helm, kubernetes
Domain
cli, devops, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.