Applying for and working on LFX Mentorship at CNCF Kyverno Project: A first-person perspective
The Linux Foundation | 02 May 2023
In open source, we feel strongly that to really do something well, you have to get a lot of people involved.” -- Linus Torvalds
This is one of my favorite quotes from Linus Torvalds, which motivates me to contribute to open source.
In this blog, I will be sharing my experiences of being a part of the LFX (Linux Foundation) mentorship program, how I applied to it, and contributing to the Kyverno project as a part of it.
I was selected as an LFX mentee in the spring of 2022 for the Kyverno project under Cloud Native Computing Foundation (CNCF), where I worked on writing CLI test cases for Kyverno Policies. I will share more details in this blog, but first, let’s understand what LFX Mentorship is all about.
What is LFX Mentorship?
The LFX mentorship program is a remote learning opportunity for open source contributors who work for 12 weeks under the guidance of mentors who are maintainers and developers of a particular project and help the mentees to contribute to the community and project.
This mentorship program is organized three times a year, i.e., Spring, Summer, and Fall months.
Many organizations like CNCF, Hyperledger, and so on provide mentorships in different projects under the umbrella of LFX. You can read more about it here.
I have been fascinated by various CNCF open source projects, so I chose it as my primary organization to work under.
What is Kyverno?
Kyverno is a policy engine specially designed for Kubernetes. Currently, it is an incubating project under CNCF. Kyverno helps to manage policies as Kubernetes resources and is written in YAML format. Not only this, but It also helps in validating, mutating, and generating resources and as well as helping in verifying container images which are very important for software supply chain security.
How did I start with Kyverno?
It started in August 2021 when I interned as a Technical Writer at CloudYuga Technologies, where I explored Docker, Kubernetes, and other CNCF Projects. As a part of my task there, I learned admission webhooks in Kubernetes and different policy engines such as Open Policy Agent(OPA) and Kyverno to prepare a hands-on lab on them.
And while going through both policy engines, Kyverno fascinates me a lot, and I decided to learn more about it by contributing to it.
First, I decided to take a Kyverno certification issued by Nirmata to understand it better. Then, I started attending the Kyverno contributors meeting. As a beginner, I needed help understanding more in the first few meetings, as learning about such a vast project takes time.
I reviewed the project documentation for better understanding, asked questions on communication channels, and learned how to set up the project locally. Soon, I made a Pull Request to fix a minor documentation issue. I also took a Kyverno 101 session at CNCF Chennai. Try out the hands-on lab which I prepared on Kyverno here.
Applying for LFX Mentorship and getting selected
I decided to apply for LFX mentorship for the spring 2022 cohort for Kyverno. The CNCF mentoring repository helped me learn about the projects in LFX mentorship for a particular cohort, along with the respective mentors and deadlines. I applied through the LFX mentorship portal, where you can apply to a maximum of three projects for a specific cohort. First, you must create your profile on the portal, describe your background, apply to the projects you want, and proceed with the applications accordingly.
After a few days, I got my selection email for being selected as a mentee for CNCF Kyverno.
My LFX Mentorship Journey
My mentorship duration was from 1st March 2022 to 31st May 2022. During this period, I have to work with Kyverno policies, where I have to write test cases for it using Kyverno CLI and improve the test coverage.
I was tasked with adding more test cases along with other required manifests for the validate and mutate Kyverno policies and checking them using the kyverno apply and kyverno test CLI commands. This will help to improve test coverage of policies and give a better understanding to users. You can learn more about it in the GitHub issue.
I started by learning how Kyverno CLI commands work and how these policies are being written. I understand the various requirements to write test cases and understand more about the policies by applying them on Kubernetes as a user. And then iterating over the test cases to improve it more.
What did I finally achieve?
By the end of the mentorship, I was able to write test cases for validate and mutate policies. There were around 40+ policies on which I had to work on.
I created two different Pull Requests(PRs) for validate and mutate policies to get reviewed and approved by maintainers. Seeing them merged, I was so happy and confident that my hard work paid off.
Learnings during the Mentorship
During this mentorship, I have learned many technical and non-technical related things. I have learned the working of Kyverno in Kubernetes, and Golang, handling heavy codebases, writing test scenarios, meeting deadlines, my personal growth, getting out of my comfort zone, and reaching out to people.
How the Mentors and Community helped me
I could not have completed the mentorship without the support of mentors and the community. I was in touch with my mentors via Slack, where I kept updating them on my progress and getting my doubts resolved. They showed me how to approach an issue and work on it. We used to connect once a week for more discussions other than Slack. Also, the community and maintainers of the project helped me a lot in understanding the policies. I am grateful to them for reviewing my PRs and suggesting improvements.
Graduating from LFX Mentorship
The 31st of May 2022 was the last day of my LFX Mentorship, and after having been evaluated by mentors, I successfully graduated.
Kyverno introduced me to Kubernetes Operators, CRDs, and Software Supply Chain Security, and I am exploring it more. I plan to increase my involvement in open source and explore more in the cloud-native world.
Along with this, I am looking for opportunities to learn more and make contributions.
Lastly, I am grateful to the LFX and the Kyverno community for this wonderful journey which made me explore more and helped me realize my self-worth.
About the author
Oshi Gupta works as a DevOps Engineer and Technical Writer at CloudYuga Technologies. She is CKA certified and has been selected for LFX mentorship in Spring 2022 for CNCF Kyverno. She loves writing blogs and is keen to learn about various cloud-native technologies. Besides this, she loves cooking, badminton, traveling, and yoga.
Social Media Links:
Cloud Computing Compliance and Security 2023 Projects Linux How-To Diversity & Inclusion Events Open Source Best Practices 2022 Cross Technology Open Source Training and Certification LFX Blockchain Research Legal Networking and Edge Blog Data Governance LF Energy LF Research OpenChain System Administration