Skip to content

[proposal] increase sealer ClusterImage's openness to provide end-user customization possibility #1651

@allencloud

Description

@allencloud

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

截屏2022-08-19 15 50 22

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.

截屏2022-08-19 17 17 19

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.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions