By Zhou Xinyuan
Hello everyone. I am Zhou Xinyuan. My undergraduate study was at Hangzhou Normal University, and this September, I will go to Yunnan University for postgraduate study. My undergraduate research is about the application of Docker containers in network attack and defense. Currently, I work in the research and development of the core module Sealer runtime as a Sealer member.
Personal homepage: https://github.com/starComingup
Sealer is a cluster image software open-sourced by Alibaba. It is a delivery tool for quick installation of Kubernetes that can install new clusters quickly and easily. The cluster image concept of Sealer helps Docker users smoothly adapt to Kubernetes.
As a Gen Zer who will start my postgraduate study soon, I became a Sealer Developer with the vision of open-source in early June 2022. At that time, it was one year since Sealer had started. It entered the CNCF sandbox phase around April 2022.
I believe many people's first contact with GitHub is a clone just for dealing with assignments, at least for undergraduates. An active ecology is needed where Pull Requests and Issues are launched actively to have a good GitHub community project. However, it is hard for me to join the community with git commit/pull/clone/push, which were used during my internship.
The following growth story of me and Sealer will lead you on the open-source journey from a novice to a core function developer. This article also can be used as a reference to lead the way for an open-source novice.
After the postgraduate entrance examination in the first semester of my senior year, I hunted for a job relying on Java, SpringBoot, Docker, and other technologies accumulated from my undergraduate projects. At that time, many container cloud positions were recruited in Hangzhou. I had the honor to enter Hangzhou HarmonyCloud Technology Co., Ltd. By chance, I entered a cloud-native project that cooperated with Alibaba Cloud and met Sun Hongliang, the leader of the team. Later, with the need for technical research, I wandered around GitHub every day and found that the team was operating the open-source delivery tool sealer. At that time, I had only heard of the name Sealer, which claimed to be delivering a set of clusters through cluster images in three minutes. Then, Sealer lingered in my mind. The admission notice was issued at the end of April, and I wondered whether I could contribute to open-source in the future.
In mid-May, I decided my way for postgraduation. Back then, I was confused since I couldn't stay in Hangzhou, but I didn't want to give up the cloud-native field where I worked for three years. Occasionally, I heard at a weekly meeting that Sealer was recruiting open-source volunteers to participate in Open Source Summer-2022 (OSPP). I thought this was a golden chance. So, I left the team at the end of May and started to work on the OSPP Sealer project plan to support the installation of K0s. In June, I was selected with full support from my leader.
If it is inevitable to participate in open-source through OSPP, there is always a reason to choose one among many projects. In the beginning, I paid attention to three communities with cloud-native, Arthas is the top one for Java debugging, and there are Kubesphere and sealer.io communities. The projects of the latter two communities can replace each other (KubeKey and Sealer). Why did I finally choose Sealer? There are three reasons:
As a novice, I had trouble using Git, I didn’t know how to submit an Issue or initiate a Pull Request, and I wouldn’t dare to communicate with community personnel because my coding was not mature enough. I believe most people who want to participate in open-source are in a similar situation to mine.
Joining the community halfway is not as difficult as the project start-up, but it is complicated enough for a novice. After using Sealer to install the cluster and experience its functions, an important step in transforming into a developer is to be familiar with the code. I thought it would be enough to work hard on the code editor Goland, but as the community maintainer said, "Don't buy in all." Open-source code and communities are not pecfect. As a binary installation tool, the verification code is not intuitive, and the unit test is not perfect, which causes a lot of trouble verifying the code logic.
During the start-up period of the project in June, it was a smooth experience to combine the official documents with the README and source code in the project. First of all, from the official documents, we can understand its architecture, modules, and functions, which are crucial for novices. I focused more on the runtime and its related architecture. I mainly read the construction of cluster images and the design of cluster image repositories in the document. In terms of code, I read the business logic in the runtime module and the interface called from the cobra command line to follow the source code to the implementation layer according to the official installation documents of kubeadm.
The first Issue in the Sealer community is relatively vigorous. It is proposed that the Runtime module has a high degree of coupling, which is not friendly to the extension support of K0s, K3s, and Kubernetes and abstracts the top-level cluster management interface. When I clicked on the comment for the first time, I checked every sentence repeatedly with translation tools for fear that the grammar or words were wrong. The community maintainers soon responded and expressed their willingness to give me the opportunity of transforming, so I started the installation research and transformation of Kubernetes and its downstream versions for half a month.
The advantage of joining a CNCF-recognized community is that there are CODE_OF_CONDUCT, CONTRIBUTING, and other boot documents. I quickly learned Git skills such as fork and rebase. The first submission was about modifying the GitHub Issue template for error feedback. This is also the first step to get familiar with the PR process. However, when submitting PR for the first time, the first check on the DCO signature failed. After a lot of effort, the signature was finally completed. Due to multiple submissions, commits branched out. In the end, the PR was reopened. My first PR was recognized and merged by the community after three accidents.
The installation function of Sealer supporting K0s and K3s will be released in the near future. The following is a simple demonstration. You can package your application into a cluster image through Kubefile and start a K3s cluster through Sealer run.
FROM k3s:v1.24.1 COPY imageList manifests
After completing the basic steps of participating in open-source, I joined the reconstruction of the core module runtime. I gave many versions of the previous design draft. After using official installation tools (such as Kubeadm, K0s, K0sctl, and K3s-install) to install the cluster many times, I accumulated the installation experience of various clusters and the abstraction of common interfaces. There are also many problems, such as which installation boot program to choose, whether the actions of managing the cluster are consistent, whether the image can be pulled from Registry after the configuration file modifies the image repositories to SeaHub:5000, and how to make cluster images of K0s and K3s.
The following figure is a draft formed when I conducted a survey of K0s, K3s, and Kubernetes bootstrappers. After studying the installation of various downstream versions of Kubernetes, it helped Sealer complete the reconstruction of the runtime module, supplement with unit tests, and facilitate the development of the subsequently extended runtime.
The Sealer community has a Maintainer meeting every two weeks, which I enjoy very much. A group of people with technical enthusiasm deal with some problems related to Feature and Issue here. Everyone has different ideas and puts forward their understandings of the future functions and bugs of Sealer to help the development of the Sealer community. I was very nervous the first time I spoke at a community meeting to share the runtime design draft. The draft was written quite clearly, but I had to answer questions from community maintainers. However, I found that everyone was kind and did not question me. On the contrary, I was given a lot of suggestions.
The first way is the RoadMap developed by the open-source community with clear goals. The open-source community will recruit community volunteers through open-source activities. These opportunities are available every year, such as the summer of open-source at home and abroad and the open-source propositions given by various Internet vendors regularly. Most of these propositions are willing to give students opportunities.
The second way is to find errors and locate the code during use or find that the description of official documents is inaccurate. This is a time when community attention can be drawn to the individual by raising an Issue and submitting a PR.
If you have an interest in participating in the open source community, learning to send a self-recommended email is an important step. In the process of participation, you should communicate with the community maintainers timely to gain more ideas.
Open-source is an inclusive and open form. To quote a sentence from the Open Source Law, "Open-source is not synonymous with free. It is a successful practice of technological openness and the driving force for the sustainable development of innovation. It is full of opportunities and risks."
Participating in an open-source community is not easy, especially if you want to maintain the community better. As a novice in open-source, when you don't have a rich experience of code and open-source, the first cringe may come from yourself. As a novice, I should think, “Sealer is excellent now, then I can absorb the nutrition in the community. When I grow to a certain extent, I can promote Sealer's progress in turn.” Looking back on the past month and a half of participating in the community, when facing the Sealer problem now, I can easily raise or comment on an Issue on GitHub or participate in the discussion in the Maintainer Group. The Sealer community has given me room for rapid growth in the aspects of code specification, annotation specification, function design, collaborative construction, and more.
Open-source novices can start from the use of software, submit an Issue, and pull a Request to change their role from user to developer.
Sealer is also developing in a more stable direction with the joint efforts of users and developers.
Let’s expect Sealer's ecology to be stronger in the future!
Alibaba Cloud Community - September 9, 2022
Alibaba Cloud Native Community - May 18, 2022
Alibaba Cloud Native Community - July 6, 2022
Alibaba Cloud Native - May 23, 2022
Alibaba Cloud Ambassador - October 25, 2021
Alibaba Developer - December 14, 2021
Alibaba Cloud Container Service for Kubernetes is a fully managed cloud container management service that supports native Kubernetes and integrates with other Alibaba Cloud products.Learn More
Provides a control plane to allow users to manage Kubernetes clusters that run based on different infrastructure resourcesLearn More
Accelerate and secure the development, deployment, and management of containerized applications cost-effectively.Learn More
High-performance virtual machines with data transfer plan, starting from $2.50 per monthLearn More
More Posts by Alibaba Cloud Native Community