-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Sandbox] KSail #314
Comments
@devantler can you please speak a bit about the choice of framework/language used in KSail namely dotnet/csharp? Asking as we do not have that many projects of this nature. Are all the repositories listed part of this submission? |
I choose .NET and CSharp for KSail for three reasons:
I have used a lot of hours on getting the tool to this stage, so I am a bit hesitant to revisit the decision, as it will likely require rebuilding the whole thing from scratch, which is a lot of work. However given some of the binaries that I embed actually exist as Go libraries, I do see the value, as it would provide a more native way to call into these tools. I am just not certain KSail should only work with Go libraries, and I kinda like the idea of being able to embed anything that is a binary. Furthermore I am unaware if Go is able to provide the same features with regard to embedding binaries and compressing the releasable binary.
TLDR; I am not sure. KSail requires these sub-projects to function, but me being the one having implemented them, is just because these libraries would not otherwise exist. I regard them as external libraries. Context: I wanted to build KSail around the idea of providing abstractions on top of common Platform Engineering practices like:
To do this in a manageable way, and to avoid locking these functionalities to only KSail, I created multiple repositories. Each repository contains projects of its own through .NET libraries. This means KSail imports these into its code, and uses the APIs of these libraries, to do all the underlying operations for e.g. provisioning a cluster in Kind, or installing flux. This means the repository for KSail and its code, is mostly for providing the CLI and its configuration options. But KSail will call into the sub-projects, which implement the logic to do stuff. |
Application contact emails
[email protected]
Project Summary
An SDK for building GitOps enabled Kubernetes clusters.
Project Description
KSail is a CLI. It embeds a set of other popular CLI tools, and through its own API it uses these embedded CLI tools to provide a better developer experience to platform engineers seeking to build and operate their Kubernetes clusters without having to download and learn many many different tools.
Org repo URL (provide if all repos under the org are in scope of the application)
https://github.com/devantler/ksail
Project repo URL in scope of application
https://github.com/devantler/ksail
Additional repos in scope of the application
Sub-projects
KSail is part of a larger ecosystem of projects that I maintain. These projects are designed to provide important functionality to KSail with high confidence, and without bloating the main repository. Most the projects provide extensible frameworks, so you can build your own tools on top of them, or make contributions to make KSail even more powerful.
ksail init
andksail gen
.CLI Wrappers
These projects are CLI wrappers that provide a C# API for the respective CLI tools. They are used in KSail to embed and interact with CLI tools in a type-safe manner.
Website URL
https://devantler.github.io/ksail
Roadmap
https://github.com/devantler/ksail/blob/main/docs/7-roadmap.md
Roadmap context
I want KSail to work for small and large clusters. When building dind-based clusters there is a vertical scale limit. As such I plan to enable the use of Cluster API to spin up clusters on bare-metal and cloud on-demand for building and operating larger clusters. Right now this is not possible.
Furthermore, I want to ensure the tool is flexible towards many different use cases, as such all features are built against interfaces, which allow extending the tool with regards to:
I am also very open to new ways to improve the developer experience for new or experienced platform engineers.
Contributing Guide
https://github.com/devantler/.github/blob/main/.github/CONTRIBUTING.md
Code of Conduct (CoC)
none
Adopters
No response
Contributing or Sponsoring Org
No response
Maintainers file
none
IP Policy
Trademark and accounts
Why CNCF?
I think CNCF should include a project that makes life easier for all the platform engineers out there. Learning Kubernetes is extremely challenging. It is both a complex task to understand what it does, but it does not help that trying it out is also quite complex.
Benefit to the Landscape
To my knowledge there is not solution that provides what KSail does. This is a all-bateries-included (or SDK) approach to building and operating Kubernetes clusters in local and dev environments.
Cloud Native 'Fit'
I am honestly not sure if there is a category for tools like this yet. Help me out here :-)
It embodies DevEx, Provisioning of clusters, Operating clusters, GitOps, Secrets Management and more.
Cloud Native 'Integration'
Kustomize, Flux, SOPS, Age, K3d, K9s, Kind, Kubeconform
Cloud Native Overlap
None to my knowledge.
Similar projects
None to my knowledge.
Landscape
No
Business Product or Service to Project separation
N/A
Project Domain Technical Review
No response
CNCF Contacts
No response
Additional information
It was presented at KCD2024: https://kcddenmark.dk/schedule/
The text was updated successfully, but these errors were encountered: