CloudBees Core ™ is a modern continuous integration and continuous delivery (CI/CD) solution based on Jenkins® that’s well-adapted to run and scale on Kubernetes platforms, like Amazon EKS . CloudBees Core includes Operations Center, which enables administrators to quickly provision Managed controllers for each development team. Each Managed controller has the Kubernetes Plugin pre-installed, so it can use Kubernetes to launch agent pods that run CI/CD workloads.
Amazon EC2 Spot is an economy created around spare compute capacity in Amazon’s global data centers. Customers who use Spot Instances can save up to 50-90% on compute costs, which means there’s a real money incentive to architect applications to utilize Spot where possible. The caveat with Spot, however, is that a customer’s Spot Instance may be reclaimed by Amazon when capacity is needed for On-Demand Instances.
Agents in CloudBees Core are already an excellent fit for Amazon EC2 Spot, and one can take advantage of this integration today with the Amazon EC2 Fleet Plugin . With this plugin, Spot Instances are launched whenever there is a demand to run “builds,” where each build is usually a combination of scripts and other plugins that orchestrate continuous integration (CI) and continuous delivery (CD). A build is typically triggered after code is committed to an app in source control, so expect them to happen often in companies with many developers making frequent commits. That said, having few builds should not discourage anyone from using Spot Instances as it’s a no-brainer to save money where you can, when you can.
For those who prefer to run their builds inside of Kubernetes, via the Kubernetes Plugin, it may not be clear how to take advantage of Spot Instances. This is one of many reasons why CloudBees developed the CloudBees Core AWS Quick Start . The Quick Start enables users to quickly provision CloudBees Core and utilize the latest features from Amazon, which provides a cost-efficient integration with Amazon EC2 Spot. More technically, the Quick Start splits the Amazon EKS cluster that CloudBees Core runs on into three partitions: one for Operations Center and Managed controllers, and two more for agents. controllers run on On-Demand Instances to prevent disruption, and agents can be configured to run on either On-Demand Instances or Spot Instances. The Spot agents partition uses the Multi-instance Auto Scaling Groups feature to increase Spot diversity, availability and uptime. When more controllers or agents are needed, e.g. when new teams are added or when developers commit code and trigger builds, each partition scales independently to meet the demand.
Isn’t that awesome? We think so, and that’s why we’d encourage you to give it a spin! Feel free to check out the internals on GitHub or fork the repo to add your own customizations. Your feedback is extremely welcome, especially in the form of issues and pull requests!
David Schott has over 10 years of Java development experience with a focus on application design, cloud architecture, and CI/CD automation. He specializes in all things Jenkins and DevOps while also aligning CloudBees solutions to customer use-cases. David enjoys experimenting with new technologies, most recently in the Docker and container orchestration space.