-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[GSoC] Rewrite KubevirtCI into GO #257
Comments
Hello there In the meantime, any other resources do you recommend looking at ? |
Hi @xpivarc sir, I'm also interested in the KubevirtCI rewrite project. Could you please consider me for the project? |
Hi @aerosouund and @Ayush9026, |
@xpivarc
please feel free to add or remove points if you see fit |
Hi @xpivarc sir Excited to contribute to rewriting KubevirtCI in Go for GSoC! With a roadmap focusing on environment setup, container orchestration, cluster provisioning, parameter handling, dependency management, testing, documentation, and maintenance, I'm confident in delivering an efficient and customizable solution. Let me know if need further adjustments!
By following this roadmap, we can develop a Go program that effectively provisions clusters for KubeVirt, with support for customization and maintenance. |
as it stands, a good majority of what this project does is being a wrapper around gocli commands, is the goal to:
for example, this proposed api will certainly exist (or atleast a similar version of it) in the solution. how it works will influence alot of how the other stuff will work kubevirtci cluster-up --slim --provider 'k8s-1.29' \
--prometheus='true' --grafana='true' --istio='true' \
--swapon='true' --ksm_on='true' --nodes=2 if this a wrapper then there will be a |
General advise is to simplify when possible, checking is nice to have but in the end we just fail if we don't check and the system doesn't have the capabilities.
Again, nice to have but we can have an command line option in the beginning.
+1
Yes, or we can switch to command line option.
+1
+1
Yes, but this is more of improvement.
|
I leave this up to you and your proposal. The goal is to remove bash and have a reusable Go code.
This looks good.
|
@xpivarc the way i envision this is indeed by extending gocli to include the bash functionality and remove the need for wrappers around it. meaning the end product won't include i see this approach as ideal because it removes the amount of layers in the project as well as leveraging the established patterns in the cli when it comes to running a container, execing into it.. etc some of the essential apis to be added is the cluster up api as explained, and:
let me know what you think, i will try to formalize these ideas more over the coming days and to add more apis according to what i find in the codebase |
@xpivarc i have sent you an initial version of the proposal on slack, please check it and let me know if you have any suggestions |
Reminder, don't forget to submit a proposal through GSoC by 2nd April - 18:00 UTC. |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with /lifecycle stale |
/remove-lifecycle stale |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with /lifecycle stale |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with /lifecycle rotten |
Title: Rewrite KubevirtCI into GO
Description:
KubevirtCI is a core project of Kubevirt that allows us to provision ephemeral clusters for our CI. There are 2 types of clusters that we usually need and can be provisioned, a VM-based cluster or a Kind cluster. These differ because a VM cluster needs pre-provisioned VM images that contain everything needed to launch the Kubernetes cluster within the VM. The provisioned image is split into 2 parts, a base OS image which is then enhanced by relevant Kubernetes binaries. Each Kubernetes version will therefore have a new unique image.
Goal:
The goal of this project is to allow easy provisioning of the base image and to build a specific Kubernetes version on top of it. The current project KubevirtCI can be used for inspiration but the result of this project should be a library/framework written in the Go language. It should allow us to carry fewer duplicates between each Kubernetes versions and allow for wider contributions than a bash-based project.
Link & resources
https://github.com/kubevirt/kubevirtci
Project size: 350 hours
Required skills: Golang, bash, scripting
Desired skills: Experience with VM provisioning tools and/or image builders
Mentor: Luboslav Pivarc lpivarc@redhat.com, Antonio Cardace acardace@redhat.com
How and where to search help
First, try to check KubeVirt documentation [1], we cover many topics and you might already find some of the answers. If there is something unclear, feel free to open an issue and a PR. This is already a great start to getting in touch with the process.
For questions related to KubeVirt and not strictly to the GSoc program, try to use the slack channel [2] and the issues [3] as much as possible. Your question can be useful for other people, and the mentors might have a limited amount of time. It is also important to interact with the community as much as possible.
If something doesn't work, try to document the steps and how to reproduce the issue as clearly as possible. The more information you provide, the easier is for us to help you. If you open an issue in KubeVirt, this already guides you with a template with the kind of information we generally need.
How to start
How to submit the proposal
The preferred way is to create a Google doc and share it with the mentors (slack or email work). If for any reason, Google doc doesn't work for you, please share your proposal by email. Early submissions have higher chances as they will be reviewed on multiple iterations and can be further improved.
What the proposal should contain
The design and your strategy for solving the challenge should be concisely explained in the proposal. Which components do you anticipate touching and an example of an API /CLI are good starting points. The updates or APIs are merely a draft of what the candidate hopes to expand and change rather than being final. The details and possible issues can be discussed during the project with the mentors which can help to refine the proposal.
It is not necessary to provide an introduction to Kubernetes or KubeVirt; instead, candidates should demonstrate their familiarity with KubeVirt by describing in detail how they intend to approach the task.
Mentors may find it helpful to have a schematic drawing of the flows and examples to better grasp the solution. They will select a couple of good proposals at the end of the selection period and this will be followed by an interview with the candidate.
The proposal can have a free form or you can get inspired by the KubeVirt design proposals [4] and template [5]. However, it should contain a draft schedule of the project phases with some planned extra time to overcome eventual difficulties.
Links
[1] https://github.com/kubevirt/kubevirt/tree/main/docs
[2] https://kubernetes.slack.com/archives/C0163DT0R8X](https://kubernetes.slack.com/archives/C0163DT0R8X
[3] https://github.com/kubevirt/kubevirt/issues
[4] https://github.com/kubevirt/community/tree/main/design-proposals
[5] https://github.com/kubevirt/community/blob/main/design-proposals/proposal-template.md
The text was updated successfully, but these errors were encountered: