Kubernetes by Google, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.
Kubernetes is one of the biggest and fastest growing open source projects in the industry right now, according to a SlashData conducted in January, 6.8 million developers are using Kubernetes, a 67% increase from the year prior, you can only imagine where that number stands today.
Two-thirds (68 percent) of IT leaders are already running containers in their organizations, according to Red Hat’s State of Enterprise Open Source 2022 report.
“It is a software ecosystem that’s growing and shows no signs of slowing down.”
Why contribute to Open-Source?
Open-Source development can be hugely rewarding and fulfilling. Working on open-source projects (building your own packages, or contributing to other team projects) can be one of the best learning tools to you.
I personally feel that with each pull request you make to a project, you improve just that little bit more as a developer.
Some benefits of contributing to Open Source Projects include:
- Learning in a practical way
- Stepping in the shoes of other Developers
- Learning new Skills, Tools & Technologies
- Builds Confidence
- Builds your Reputation/Portfolio
- Learning to deal with feedback
- Meeting new people and contacts
- Improves communication skills
Contributing to Kubernetes
The perk of contributing to an open source project such as Kubernetes is that you can contribute regardless of your background or experience, everyone’s contributions are a valued part of the open source community.
What are the current needs in Kubernetes?
- Self Healing
- Zero Downtime Deployment
- Rolling Updates
- Health Checks
- Platform Agnostic
- Autoscaling
- Cost Efficiency
- Customization
There are many stages to a Kubernetes Pod Cluster, tools or contributions can be made to any of these.
Kubernetes can be very complex for a beginner, K8s being open source means that everything is available for everyone.
You might need to modify how your specific Kubernetes Cluster is deployed and what Policies and Rules to apply to it. There are different requirements for different scenarios, the benefit of it being open source means that everything is available for you to work on.
Let's take the Kube API Server for example, the API lifecycle request moves through many different stages and you might need to apply a custom webhook or some custom logic based on your needs. This is where the open source community comes into play and can solve upcoming challenges.
Both the Validation and Mutation Admission Controller are customizable, you can register your own custom scripts and design your checks to decide if a resource should be rejected from reaching etcd.
Istio and GateKeeper are great examples of custom Admission Controllers.
Istio automatically injects an extra container to all Pods (creates mutations) and GateKeeper is an Open Policy Validation Agent which checks your resources against policies and reports wherever violations occur.
The community is working on great projects like these and there is no reason you can not be the next contributor
- Authentication: Checks who has access to the cluster.
- Authorization: Here all the RBAC rules are evaluated.
- Mutation Admission Controller: The MAC configures the YAML file and modifies it accordingly.
- Schema Validation: Quick check to ensure resource is valid against the internal schema.
- Validation Admission Controller: Checks to see if the pod/namespaces are valid (Istio and Gatekeeper are great projects working on custom admission controllers)
- Resource Handler: Deserialize, Create runtime object, Persist to etcd.
How to start contributing to Kubernetes?
There is high demand for Kuberenetes developers as the market is hot right now and good developers can be hard to find, contributing on the open source project can be a great way to get noticed.
The first thing you need to know is what area of K8s interests you and you need to find a good first issue to work on. Once you know what you want to work on, its is best to find the relevant community groups for that area so you can get started.
Common Community Groups for a project include:
- SIGs; Sigs are Special Interest Groups within the Kubernetes project which are designed for developers and other community members to meet regularly and unite over their interests.
- Project Committees
- Work Groups
- User Groups
How to find the right SIG?
A SIG is an open, community effort. Anybody is welcome to jump into a SIG and begin fixing issues, critique design proposals, and review code.
Looking for the right group can be difficult at first but just keep these things in mind and you should be golden:
- Relate to your Job and Interests
- Projects that use languages you already know
- Projects with clearly defined roles
- Projects with good documentation
You can communicate with these SIGs using their Slack Channels, Mailing Lists, Project Meetings, Meeting Notes and Events.
Contributing to Kubernetes
Here is the contributor-cheatsheet for Kubernetes that is a great place to get started
github.com/kubernetes/community/blob/master..
It consists of common resources, tips and tricks and common best practices used within the Kubernetes project when contributing.
You can become a contributor to the Official Kubernetes Docs over at their page Kubernetes SIG Docs
They have a complete guide over there to get you started.
On top of Documentation contributions, you can also make Code contributions by:
- Refactoring Code
- Adding Comments
- Implementing a new Feature
- Fix bugs
- Leverage GitHub labels
Here is the Code Contribution Ladder for you to work your way up:
Conclusion
Contributing to K8s can be a very rewarding experience. After reading this blog post, you should walk away knowing how to start contributing to Kubernetes, how good it can be for your career.
In a world where cloud is increasingly popular, big companies are always in need of people within the cloud native community. Kubernetes is a very accessible way of getting to be a part of this amazing ecosystem full of respect and collaboration!
References: community.cncf.io kubernetes.io/docs/contribute github.com/kubernetes/community/blob/master.. kubernetes.dev/docs/guide cncf.io/blog/2021/12/20/new-slashdata-repor..