<< Back to previous view

[QB-3564] Manage Kubernetes Pod definition in QB
Created: 04/May/20  Updated: 29/Mar/21

Status: Open
Project: QuickBuild
Component/s: None
Affects Version/s: 10.0.11
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Jeremie Levy Assigned To: Robin Shen
Resolution: Unresolved Votes: 11
Remaining Estimate: Unknown Time Spent: Unknown
Original Estimate: Unknown


 Description   
when raising a resource in Kubernetes, there is no way to define volumes, cpus, memory usage ...
This is a feature present in jenkins (sorry for writing this) and we would like the same pipeline in QB in order to keep using it properly.
https://github.com/jenkinsci/kubernetes-plugin

Thank you.

 Comments   
Comment by De Ce [ 08/Feb/21 12:58 PM ]
This functionality is critical for us. Building inside containers is easy, cost effective and reliable in comparation to classic agent model.
By giving possibility to manage pod specification (in this case nodeSelector) we can even connect to Kubernetes cluster with Windows nodes and try to build code on Windows containers.
By mounting volumes, we can use shared storage for huge binaries instead fetching it over the network which will speed up build process.
List of advantages and possibilities is really long.

Please kindly increase priority of this request.
Comment by mmellinx [ 29/Mar/21 12:31 PM ]
Robin, what is status of this request? I've project that requires some extra shared memory on some pods. Lack of this feature blocks my migration from VMs to k8s.
Comment by Robin Shen [ 29/Mar/21 01:32 PM ]
Although we can make k8s agent pod definition more flexible with yaml files, it still requires you to build special agent image including build agent software, and your build command can only be executed on this build agent container.

This may not work as you expected from Jenkins pipeline on Kubernetes which allows you to execute command on arbitrary container. This mode works very differently from QB's current agent architecture and we will not make the change.

Alternatively, you may checkout another product we open sourced, and it works exactly the way you expected, and it is much simpler than Jenkins. It is a all-in-one devops platform something like GitLab and is hosted here: https://github.com/theonedev/onedev

A tutorial on installing OneDev into k8s and run each build as separated pod:
https://dzone.com/articles/build-farm-in-kubernetes-with-onedev
Generated at Wed Apr 24 22:42:00 UTC 2024 using JIRA 189.