-
Notifications
You must be signed in to change notification settings - Fork 361
Description
Kubefile is a top-level of sealer, and it provides the way to define what is a distributed application composed of. With Kubefile, end users have the ability to customize the app part of ClusterImage, while currently our end users still cannot modify the BaseImage(KubeImage).
Content in BaseImage(KubeImage)
Currently, BaseImage contains the kubernetes part's content, like:
Container Runtime Essentials
container runtime, docker or containerd;
- containerd
- containerd-shim
- ctr
- docker
- dockerd
- docker-init
- docker-proxy
- runc
kubernetes Essentials(k8s, k0s, k3s)
- kubelet
- apiserver
- and so on;
Component configuration
- configuration of the components above.
Scripts
- init.sh
- init-registry.sh
- init-kube.sh
- and so on
https://github.com/sealerio/basefs/blob/main/DESIGN.MD is the initial design of sealer's basefs, which contains the kubernetes part essential file structure and content.
Evolution Goal
To spread sealer more widely, I think we must increase the ClusterImage openness for sealer community. Since we all know that, lots of large enterprises will modify the container runtime and Kubernetes definitely to meet business demand. Add sealer, a general software, must take these enterprises' need into consideration.
SO, CLUSTERIMAGE FILE STRUCTURE SHOULD BE A TOP LEVEL CONCEPT OF SEALER, TOO.
How to increse ClusterImage openness
Simplify the Kubernetes deployment control flow
Above is the current k8s cluster setup picture, simple but exact:
- sealer binary will fetch k8s essentials (including container runtime), and control them to be deployed on hosts;
- sealer binary will fetch scripts and control them to deploy k8s;
- the scripts will fetch k8s essentials and control them to deploy k8s.
For BaseImage customizer, the interact procedure should be as simple as possible:
- provide the customized k8s essentials(binary and config files);
- be aware of how sealer composes all these k8s essentials up.
To simplify the Kubernetes deployment control flow and make BaseImage as pure as possible, I think we should encapsulate all the scripts about deployment procedure into sealer binary. And we can achieve much more flexibility.
Design an explicit interactive layer for BaseImage builder.
I will submit a brand-new design proposal and showed to the whole community for review comment soon.